Skip to content

Update MyBlazorApp.Tests.csproj #101

Update MyBlazorApp.Tests.csproj

Update MyBlazorApp.Tests.csproj #101

# This workflow has three examples (one for IIS, two using containers)
# [Option A] Typical IIS build & publish
# [Option B] DOCKER FILE BUILD - publishes the image to ghcr.io (GitHub container registry)
# [Option C] .NET SDK CONTAINER BUILD - publishes the image to Docker Hub
name: Blazor (with Reporting)
on:
workflow_dispatch:
push:
branches:
- main
- "blazor/*"
paths:
- 'src/Blazor/**/*'
- '.github/workflows/main_build-blazor.yml'
permissions:
contents: read
packages: write # to publish to GitHub container registry
id-token: write # # JWT for Akeyless auth
env:
CONFIGURATION: Release
BLAZOR_PROJ_PATH: src/Blazor/MyBlazorApp/MyBlazorApp.csproj
TEST_PROJ_PATH: src/Blazor/MyBlazorApp.Tests/MyBlazorApp.Tests.csproj
NUGET_CONFIG_PATH: src/NuGet.Config
DOTNET_VERSION: "9.0.x"
CONTAINER_BASE_IMAGE: "lancemccarthy/skia-aspnet:9.0"
CONTAINER_REPOSITORY: "lancemccarthy/myblazorapp"
jobs:
#####################################################
######### [Option A] WINDOWS BUILD (IIS) ############
#####################################################
build_windows:
runs-on: windows-2022
env:
RID: win-x64
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 ${{env.BLAZOR_PROJ_PATH}} --configfile ${{env.NUGET_CONFIG_PATH}} -r ${{env.RID}}
dotnet restore ${{env.TEST_PROJ_PATH}} --configfile ${{env.NUGET_CONFIG_PATH}} -r ${{env.RID}}
env:
TELERIK_USERNAME: "api-key"
TELERIK_PASSWORD: ${{secrets.TELERIK_NUGET_KEY}}
- name: Build Test Project
run: dotnet build ${{env.TEST_PROJ_PATH}} -c ${{env.CONFIGURATION}} -r ${{env.RID}} --no-restore
env:
TELERIK_LICENSE: ${{secrets.TELERIK_LICENSE_KEY}}
######################################################
############ [Option B] DOCKER FILE BUILD ############
######################################################
# Publishes to ghcr.io (GitHub)
# build_container_with_dockerfile:
# name: "Dockerfile container build"
# runs-on: ubuntu-22.04
# env:
# CONTAINER_IMAGE_REGISTRY: "ghcr.io"
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
# - name: Generate tag version
# id: tag-creator
# run: |
# buildDay=`date +%Y.%m.%d`
# tags="$buildDay.$GITHUB_RUN_NUMBER"
# echo "VERSION_TAG=$tags" >> $GITHUB_OUTPUT
# - 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 ghcr.io
# uses: docker/login-action@v3
# with:
# registry: ${{env.CONTAINER_IMAGE_REGISTRY}}
# username: ${{github.actor}}
# password: ${{secrets.GITHUB_TOKEN}}
# - name: Build and Publish arm64, amd64 Container Images
# uses: docker/build-push-action@v5
# with:
# context: src/Blazor/MyBlazorApp
# platforms: linux/arm64,linux/amd64
# push: true
# secrets: |
# telerik-nuget-key=${{secrets.TELERIK_NUGET_KEY}}
# telerik-license-key=${{secrets.TELERIK_LICENSE_KEY}}
# tags: |
# "${{env.CONTAINER_IMAGE_REGISTRY}}/${{env.CONTAINER_REPOSITORY}}:${{steps.tag-creator.outputs.VERSION_TAG}}"
# "${{env.CONTAINER_IMAGE_REGISTRY}}/${{env.CONTAINER_REPOSITORY}}:latest"
# - name: Delete old Docker images
# uses: actions/delete-package-versions@v5
# with:
# package-name: "myblazorapp"
# package-type: container
# min-versions-to-keep: 1
# token: ${{secrets.GITHUB_TOKEN}}
##########################################################
######### [Option C] .NET SDK CONTAINER BUILD ############
##########################################################
# Publishes to registry.hub.docker.com (Docker hub)
# build_container_with_dotnet:
# name: ".NET SDK Container build"
# runs-on: ubuntu-22.04
# env:
# CONTAINER_REGISTRY: "registry.hub.docker.com"
# CONTAINER_ARCH: "x64"
# CONTAINER_OS: "linux"
# 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 ${{env.BLAZOR_PROJ_PATH}} --configfile ${{env.NUGET_CONFIG_PATH}} -r "${{env.CONTAINER_OS}}-${{env.CONTAINER_ARCH}}"
# dotnet restore ${{env.TEST_PROJ_PATH}} --configfile ${{env.NUGET_CONFIG_PATH}} -r "${{env.CONTAINER_OS}}-${{env.CONTAINER_ARCH}}"
# env:
# TELERIK_USERNAME: "api-key"
# TELERIK_PASSWORD: ${{secrets.TELERIK_NUGET_KEY}}
# - name: Fetch secrets from AKeyless
# id: akeyless
# uses: LanceMcCarthy/akeyless-action@v3
# with:
# access-id: ${{secrets.AKEYLESS_JWT_ID}}
# static-secrets: |
# {
# "/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: Login to Docker Hub
# run: docker login ${{env.CONTAINER_REGISTRY}} -u ${{steps.akeyless.outputs.DOCKER_HUB_USERNAME}} -p ${{steps.akeyless.outputs.DOCKER_HUB_PAT}}
# # https://learn.microsoft.com/en-us/dotnet/core/docker/publish-as-container
# - name: Publish Blazor Project to Docker Hub
# run: |
# dotnet publish ${{env.BLAZOR_PROJ_PATH}} \
# -c ${{env.CONFIGURATION}} \
# --no-restore \
# --os ${{env.CONTAINER_OS}} \
# --arch ${{env.CONTAINER_ARCH}} \
# -p PublishProfile=DefaultContainer \
# -p ContainerRuntimeIdentifier="${{env.CONTAINER_OS}}-${{env.CONTAINER_ARCH}}" \
# -p ContainerRegistry=${{env.CONTAINER_REGISTRY}} \
# -p ContainerRepository=${{env.CONTAINER_REPOSITORY}} \
# -p ContainerImageTag="latest" \
# -p ContainerBaseImage=${{env.CONTAINER_BASE_IMAGE}}
# env:
# TELERIK_LICENSE: ${{secrets.TELERIK_LICENSE_KEY}}
# - name: Delete old (untagged) images
# run: |
# IMAGE_TAGS=$(curl -s "https://hub.docker.com/v2/repositories/${{env.CONTAINER_REPOSITORY}}/tags/?page_size=100" | jq -r '.results|.[]|.name')
# for TAGG in $IMAGE_TAGS; do
# if [[ "$TAGG" == "null" ]]; then
# docker rmi "${{env.CONTAINER_REPOSITORY}}:$TAGG"
# curl -s -X DELETE "https://hub.docker.com/v2/repositories/${{env.CONTAINER_REPOSITORY}}/tags/$TAGG/"
# fi
# done