Master GitHub Actions with hands-on labs and exercises. Learn how to automate workflows, run tests, deploy applications, and more using GitHub's powerful automation platform. This repository has everything you need to get started with continuous integration and continuous deployment.
In this lab, you will learn how to publish an ASP.NET Core Web API as a Docker image to the GitHub Container Registry (GHCR) using GitHub Actions. You will:
If you haven’t created the ASP.NET Web API Project, refer to the Create an ASP.NET Core Web API Project lab instructions before proceeding.
Duration: 30–40 minutes
GitHub Token Authentication:
secrets.GITHUB_TOKEN
) to authenticate with the GitHub Container Registry.Ensure the ASP.NET Web API Project exists in the ./src/dotnet/Weather.WebApi
directory.
.github/workflows
folder.aspnet-webapi-publish-github-package.yml
.Copy the following workflow content into the file:
name: ASP.NET Web API Publish GitHub Package
on:
workflow_dispatch:
push:
paths:
- '.github/workflows/aspnet-webapi-publish-github-package.yml'
- 'src/dotnet/Weather.WebApi/**'
env:
GITHUB_PACKAGE_NAME: ghcr.io/prasadhonrao/aspnet-weather-webapi
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write # Required for creating packages
defaults:
run:
working-directory: ./src/dotnet/Weather.WebApi
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Build ASP.NET Weather Web API
run: dotnet build
- name: Build Local Docker Image
run: docker image build -t aspnet-weather-webapi .
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io # GitHub Container Registry. Default is docker.io
username: $
password: $
- name: Tag Image to latest
run: docker tag aspnet-weather-webapi $:latest
- name: Tag Image to branch
run: |
BRANCH_NAME=$
docker tag aspnet-weather-webapi $:$BRANCH_NAME
- name: Push Image with latest tag to GitHub Container Registry
run: docker push $:latest
- name: Push Image with branch tag to GitHub Container Registry
run: |
BRANCH_NAME=$
docker push $:$BRANCH_NAME
prasadhonrao/aspnet-weather-webapi
with your own GitHub repository name in the env
section.Event Triggers:
push
event that modifies the workflow file or the project files.workflow_dispatch
event for testing or deployment on demand.Environment Variables:
env
variable named GITHUB_PACKAGE_NAME
, which contains the name of the GitHub package.Steps in the Workflow:
Dockerfile
in the project directory.GITHUB_TOKEN
.latest
and the current branch name for versioning.These steps ensure that the Web API is built, containerized, and published as a GitHub package.
main
branch with a descriptive commit message, e.g., “Add GitHub package publishing workflow”.latest
and the branch name.On your local machine, authenticate with GitHub Container Registry:
echo $GITHUB_TOKEN | docker login ghcr.io -u <your_github_username> --password-stdin
Pull the image from GitHub Container Registry:
docker pull ghcr.io/prasadhonrao/aspnet-weather-webapi:latest
Replace prasadhonrao/aspnet-weather-webapi
with your repository’s package name.
Run the Docker container:
docker run -d -p 8080:80 ghcr.io/prasadhonrao/aspnet-weather-webapi:latest
Access the running application in your browser at http://localhost:8080
and test the Web API endpoints.
In this lab, you:
You can now distribute your ASP.NET Web API as a Docker container directly through GitHub Packages.