2025.3 Updates #139
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This demo has two container build & publish examples | |
| # [Option A] Typical IIS build & publish | |
| # [Option B] DOCKER FILE BUILD - publishes the image to Docker Hub | |
| # [Option C] .NET SDK CONTAINER BUILD - publishes the image to ghcr.io (GitHub container registry) | |
| name: ASP.NET Core (with Reporting) | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| - "aspnetcore/*" | |
| paths: | |
| - 'src/AspNetCore/**/*' | |
| - '.github/workflows/main_build-aspnetcore.yml' | |
| permissions: | |
| contents: read | |
| packages: write # to publish to GitHub container registry | |
| id-token: write # JWT for Akeyless auth | |
| env: | |
| DOTNET_VERSION: "9.0.x" | |
| CONFIGURATION: Release | |
| jobs: | |
| ##################################################### | |
| ######### [Option A] WINDOWS BUILD (IIS) ############ | |
| ##################################################### | |
| build_windows: | |
| runs-on: windows-2022 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup .NET Core SDK | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: ${{env.DOTNET_VERSION}} | |
| - name: Restore NuGet Packages | |
| run: | | |
| dotnet restore src/AspNetCore/MyAspNetCoreApp/MyAspNetCoreApp.csproj --configfile src/NuGet.Config -r win-x64 | |
| env: | |
| TELERIK_USERNAME: "api-key" | |
| TELERIK_PASSWORD: ${{secrets.TELERIK_NUGET_KEY}} | |
| - name: Build ASP.NET Core Project | |
| run: dotnet build src/AspNetCore/MyAspNetCoreApp/MyAspNetCoreApp.csproj -c ${{env.CONFIGURATION}} -r win-x64 --no-restore | |
| env: | |
| TELERIK_LICENSE: ${{secrets.TELERIK_LICENSE_KEY}} | |
| ############################################## | |
| # [Option B] DOCKERFILE BUILD # | |
| ############################################## | |
| # Publishes to registry.hub.docker.com (Docker hub) | |
| # build_aspnetcore: | |
| # runs-on: ubuntu-22.04 | |
| # env: | |
| # CONTAINER_REPOSITORY: "lancemccarthy/myaspnetcoreapp" | |
| # WORKING_DIRECTORY: "src/AspNetCore/MyAspNetCoreApp" | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v4 | |
| # with: | |
| # fetch-depth: 0 | |
| # # Using AKeyless for secrets, you can use GitHub Actions instead. | |
| # - name: Fetch secrets from AKeyless | |
| # id: akeyless | |
| # uses: LanceMcCarthy/akeyless-action@v3 | |
| # with: | |
| # access-id: ${{secrets.AKEYLESS_JWT_ID}} | |
| # static-secrets: | | |
| # { | |
| # "/personal-keys/mccarthy/TELERIK_NUGET_KEY":"TELERIK_NUGET_KEY", | |
| # "/personal-keys/mccarthy/TELERIK_LICENSE":"TELERIK_LICENSE_KEY", | |
| # "/personal-keys/mccarthy/DOCKER_HUB_USERNAME":"DOCKER_HUB_USERNAME", | |
| # "/personal-keys/mccarthy/DOCKER_HUB_PAT":"DOCKER_HUB_PAT" | |
| # } | |
| # export-secrets-to-outputs: true | |
| # export-secrets-to-environment: false | |
| # - name: Set up QEMU | |
| # uses: docker/setup-qemu-action@v3 | |
| # - name: Set up Docker Buildx | |
| # uses: docker/setup-buildx-action@v3 | |
| # - name: Get package metadata from Docker Hub | |
| # id: meta | |
| # uses: docker/metadata-action@v5 | |
| # with: | |
| # images: ${{env.CONTAINER_REPOSITORY}} | |
| # - name: Login to DockerHub | |
| # uses: docker/login-action@v3 | |
| # with: | |
| # username: ${{steps.akeyless.outputs.DOCKER_HUB_USERNAME}} | |
| # password: ${{steps.akeyless.outputs.DOCKER_HUB_PAT}} | |
| # - name: Build and push to Docker Hub | |
| # uses: docker/build-push-action@v5 | |
| # with: | |
| # context: ${{env.WORKING_DIRECTORY}} | |
| # platforms: linux/arm64,linux/amd64 | |
| # push: true | |
| # secrets: | | |
| # telerik-nuget-key=${{steps.akeyless.outputs.TELERIK_NUGET_KEY}} | |
| # telerik-license-key=${{steps.akeyless.outputs.TELERIK_LICENSE_KEY}} | |
| # tags: | | |
| # ${{env.CONTAINER_REPOSITORY}}:latest | |
| ########################################################## | |
| # [Option C] .NET SDK CONTAINER BUILD # | |
| ########################################################## | |
| # => Publishes to ghcr.io (GitHub) | |
| # build_x64: | |
| # runs-on: ubuntu-22.04 | |
| # outputs: | |
| # build_tag: ${{steps.build.outputs.build_tag}} | |
| # env: | |
| # target_arch: "x64" | |
| # CONTAINER_REGISTRY: "ghcr.io" | |
| # CONTAINER_REPOSITORY: "lancemccarthy/myaspnetcoreapp" | |
| # BASE_IMAGE_DOTNET_BUILD: "lancemccarthy/skia-aspnet:9.0" # Custom base image with Skia dependencies pre-installed, only used by the .NET SDK container build. | |
| # WORKING_DIRECTORY: "src/AspNetCore/MyAspNetCoreApp" | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v4 | |
| # with: | |
| # fetch-depth: 0 | |
| # - name: Setup .NET Core SDK | |
| # uses: actions/setup-dotnet@v4 | |
| # with: | |
| # dotnet-version: ${{env.DOTNET_VERSION}} | |
| # - name: Login to GitHub Container Registry | |
| # run: docker login ${{env.CONTAINER_REGISTRY}} -u ${{github.actor}} -p ${{secrets.GITHUB_TOKEN}} | |
| # - name: Restore NuGet Packages | |
| # working-directory: ${{env.WORKING_DIRECTORY}} | |
| # run: dotnet restore -r "linux-${{env.target_arch}}" | |
| # env: | |
| # TELERIK_USERNAME: "api-key" | |
| # TELERIK_PASSWORD: ${{secrets.TELERIK_NUGET_KEY}} | |
| # - name: build the x64 image | |
| # id: build | |
| # working-directory: ${{env.WORKING_DIRECTORY}} | |
| # run: | | |
| # TAG="latest-${{env.target_arch}}" | |
| # dotnet publish \ | |
| # -t:PublishContainer \ | |
| # -p PublishProfile=DefaultContainer \ | |
| # --arch ${{env.target_arch}} \ | |
| # -p ContainerImageTag="$TAG" \ | |
| # -p ContainerRepository="${{env.CONTAINER_REPOSITORY}}" \ | |
| # -p ContainerRegistry="${{env.CONTAINER_REGISTRY}}" \ | |
| # -p ContainerBaseImage=${{env.BASE_IMAGE_DOTNET_BUILD}} \ | |
| # --no-restore | |
| # echo "build_tag=$TAG" >> $GITHUB_OUTPUT | |
| # env: | |
| # TELERIK_LICENSE: ${{secrets.TELERIK_LICENSE_KEY}} | |
| # build_arm64: | |
| # runs-on: ubuntu-22.04 | |
| # outputs: | |
| # build_tag: ${{steps.build.outputs.build_tag}} | |
| # env: | |
| # target_arch: "arm64" | |
| # CONTAINER_REGISTRY: "ghcr.io" | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v4 | |
| # with: | |
| # fetch-depth: 0 | |
| # - name: Setup .NET Core SDK | |
| # uses: actions/setup-dotnet@v4 | |
| # with: | |
| # dotnet-version: ${{env.DOTNET_VERSION}} | |
| # - name: Login to GitHub Container Registry | |
| # run: docker login ${{env.CONTAINER_REGISTRY}} -u ${{github.actor}} -p ${{secrets.GITHUB_TOKEN}} | |
| # - name: Restore NuGet Packages | |
| # working-directory: ${{env.WORKING_DIRECTORY}} | |
| # run: dotnet restore -r "linux-${{env.target_arch}}" | |
| # env: | |
| # TELERIK_USERNAME: "api-key" | |
| # TELERIK_PASSWORD: ${{secrets.TELERIK_NUGET_KEY}} | |
| # - name: build the arm64 image | |
| # id: build | |
| # working-directory: ${{env.WORKING_DIRECTORY}} | |
| # run: | | |
| # TAG="latest-${{env.target_arch}}" | |
| # dotnet publish -t:PublishContainer \ | |
| # -p PublishProfile=DefaultContainer \ | |
| # --arch ${{env.target_arch}} \ | |
| # -p ContainerImageTag="$TAG" \ | |
| # -p ContainerRepository="${{env.CONTAINER_REPOSITORY}}" \ | |
| # -p ContainerRegistry="${{env.CONTAINER_REGISTRY}}" \ | |
| # -p ContainerBaseImage=${{env.BASE_IMAGE_DOTNET_BUILD}} \ | |
| # --no-restore | |
| # echo "build_tag=$TAG" >> $GITHUB_OUTPUT | |
| # env: | |
| # TELERIK_LICENSE: ${{secrets.TELERIK_LICENSE_KEY}} | |
| # publish_combined_manifest: | |
| # runs-on: ubuntu-22.04 | |
| # needs: [build_x64, build_arm64] | |
| # env: | |
| # CONTAINER_REGISTRY: "ghcr.io" | |
| # steps: | |
| # - name: Checkout | |
| # uses: actions/checkout@v4 | |
| # with: | |
| # fetch-depth: 0 | |
| # - name: Login to GitHub Container Registry | |
| # run: docker login ${{env.CONTAINER_REGISTRY}} -u ${{github.actor}} -p ${{secrets.GITHUB_TOKEN}} | |
| # - name: create the multi-image manifest | |
| # run: | | |
| # docker manifest create "${{env.CONTAINER_REGISTRY}}/${{env.CONTAINER_REPOSITORY}}:latest" \ | |
| # "${{env.CONTAINER_REGISTRY}}/${{env.CONTAINER_REPOSITORY}}:$X86_TAG" \ | |
| # "${{env.CONTAINER_REGISTRY}}/${{env.CONTAINER_REPOSITORY}}:$ARM64_TAG" | |
| # docker manifest push "${{env.CONTAINER_REGISTRY}}/${{env.CONTAINER_REPOSITORY}}:latest" | |
| # env: | |
| # X86_TAG: ${{needs.build_x64.outputs.build_tag}} | |
| # ARM64_TAG: ${{needs.build_arm64.outputs.build_tag}} | |
| # - name: Delete old Docker images | |
| # uses: actions/delete-package-versions@v5 | |
| # with: | |
| # package-name: "myaspnetcoreapp" | |
| # package-type: container | |
| # min-versions-to-keep: 3 | |
| # token: ${{secrets.GITHUB_TOKEN}} |