Skip to content

TodoTemplate CD

TodoTemplate CD #85

Workflow file for this run

name: TodoTemplate CD
# Project templates come equipped with CI/CD for both Azure DevOps and GitHub, providing you with a hassle-free way to get started with your new project. It is important to note that you should not depend on the contents of this file. More info at https://bitplatform.dev/templates/dev-ops
env:
WEB_APP_DEPLOYMENT_TYPE: 'PwaPrerendered'
API_SERVER_ADDRESS: 'https://todo.bitplatform.dev/api/'
on:
workflow_dispatch:
push:
branches: [ "main" ]
permissions:
contents: read
jobs:
build_blazor_api_wasm:
name: build blazor api + web assembly
runs-on: ubuntu-22.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
global-json-file: src/Templates/TodoTemplate/Bit.TodoTemplate/global.json
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Create project from TodoTemplate
run: |
echo "HELLO"
cd src/Templates/TodoTemplate && dotnet build -c Release
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0
echo "HELLO2"
dotnet new install Bit.TodoTemplate.0.0.0.nupkg
echo "HELLO3"
echo "$PWD"
cd ../../../ && dotnet new bit-todo --name Bit.TodoTemplate --database SqlServer && echo "$PWD"
echo "HELLO4"
echo "$PWD"
echo "HELLO5"
- name: Switch to blazor web assembly
run: |
echo "$PWD" && sed -i 's/Microsoft.NET.Sdk.Web/Microsoft.NET.Sdk.BlazorWebAssembly/g' Bit.TodoTemplate/src/Client/Web/TodoTemplate.Client.Web.csproj
- name: Install wasm
run: cd src && dotnet workload install wasm-tools wasm-experimental
- name: Generate CSS/JS files
run: dotnet build Bit.TodoTemplate/src/Client/Core/TodoTemplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
- name: Publish
run: dotnet publish Bit.TodoTemplate/src/Server/Api/TodoTemplate.Server.Api.csproj -p:BlazorMode=BlazorWebAssembly -p:WebAppDeploymentType="${{ env.WEB_APP_DEPLOYMENT_TYPE }}" -p:Configuration=Release --self-contained -r linux-x64 -o ${{env.DOTNET_ROOT}}/api-web
- name: Upload api-web artifact
uses: actions/upload-artifact@v3
with:
name: api-web-bundle
path: ${{env.DOTNET_ROOT}}/api-web
deploy_blazor_api_wasm:
name: deploy blazor api + web assembly
needs: build_blazor_api_wasm
runs-on: ubuntu-22.04
environment:
name: 'production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Retrieve api-web bundle
uses: actions/download-artifact@v2
with:
name: api-web-bundle
- name: Delete IdentityCertificate.pfx
run: |
rm IdentityCertificate.pfx
- name: Extract identity certificate from env
uses: timheuer/base64-to-file@v1
with:
fileDir: './'
fileName: 'IdentityCertificate.pfx'
encodedString: ${{ secrets.API_IDENTITY_CERTIFICATE_FILE_BASE64 }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v2
with:
app-name: 'bit-todo'
slot-name: 'production'
publish-profile: ${{ secrets.TODO_AZURE_APP_SERVICE_PUBLISH_PROFILE }}
package: .
build_blazor_hybrid_windows:
name: build blazor hybrid (windows)
runs-on: windows-2022
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
global-json-file: src/Templates/TodoTemplate/Bit.TodoTemplate/global.json
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Create project from TodoTemplate
run: |
cd src/Templates/TodoTemplate && dotnet build -c Release
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0
dotnet new install Bit.TodoTemplate.0.0.0.nupkg
cd ../../../ && dotnet new bit-todo --name Bit.TodoTemplate --database SqlServer
- name: Update appsettings.json api server address
uses: microsoft/variable-substitution@v1
with:
files: 'Bit.TodoTemplate/src/Client/Core/appsettings.json'
env:
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }}
- name: Install maui
run: cd src && dotnet workload install maui
- name: Generate CSS/JS files
run: dotnet build Bit.TodoTemplate/src/Client/Core/TodoTemplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
- name: Build exe
run: dotnet build Bit.TodoTemplate/src/Client/App/TodoTemplate.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:WindowsPackageType=None -p:SelfContained=true -p:WindowsAppSDKSelfContained=true -p:GenerateAppxPackageOnBuild=false -p:RuntimeIdentifier=win10-x86 -p:ApplicationDisplayVersion="${{ vars.APPLICATION_DISPLAY_VERSION }}" -p:ApplicationVersion="${{ vars.APPLICATION_VERSION }}" -p:UseRidGraph=true -f net8.0-windows10.0.19041.0
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: win-exe-bundle
path: Bit.TodoTemplate/src/Client/App/bin/release/net8.0-windows10.0.19041.0/win10-x86
build_blazor_hybrid_android:
name: build blazor hybrid (android)
runs-on: ubuntu-22.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
global-json-file: src/Templates/TodoTemplate/Bit.TodoTemplate/global.json
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Create project from TodoTemplate
run: |
cd src/Templates/TodoTemplate && dotnet build -c Release
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0
dotnet new install Bit.TodoTemplate.0.0.0.nupkg
cd ../../../ && dotnet new bit-todo --name Bit.TodoTemplate --database SqlServer
- name: Extract Android signing key from env
uses: timheuer/base64-to-file@v1
with:
fileDir: './Bit.TodoTemplate/src/Client/App/'
fileName: 'TodoTemplate.keystore'
encodedString: ${{ secrets.ANDROID_RELEASE_KEYSTORE_FILE_BASE64 }}
- name: Update appsettings.json api server address
uses: microsoft/variable-substitution@v1
with:
files: 'Bit.TodoTemplate/src/Client/Core/appsettings.json'
env:
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }}
- name: Install maui
run: cd src && dotnet workload install maui-android
- name: Generate CSS/JS files
run: dotnet build Bit.TodoTemplate/src/Client/Core/TodoTemplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
- name: Build aab
run: dotnet build Bit.TodoTemplate/src/Client/App/TodoTemplate.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:AndroidPackageFormat=aab -p:AndroidKeyStore=true -p:AndroidSigningKeyStore="TodoTemplate.keystore" -p:AndroidSigningKeyAlias=bitplatform -p:AndroidSigningKeyPass="${{ secrets.ANDROID_RELEASE_KEYSTORE_PASSWORD }}" -p:AndroidSigningStorePass="${{ secrets.ANDROID_RELEASE_SIGNING_PASSWORD }}" -p:ApplicationDisplayVersion="${{ vars.APPLICATION_DISPLAY_VERSION }}" -p:ApplicationVersion="${{ vars.APPLICATION_VERSION }}" -f net8.0-android
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: android-bundle
path: Bit.TodoTemplate/src/Client/App/bin/Release/net8.0-android/*-Signed.*
build_blazor_hybrid_maccatalyst:
name: build blazor hybrid (maccatalyst)
runs-on: macos-13
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
global-json-file: src/Templates/TodoTemplate/Bit.TodoTemplate/global.json
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Create project from TodoTemplate
run: |
cd src/Templates/TodoTemplate && dotnet build -c Release
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0
dotnet new install Bit.TodoTemplate.0.0.0.nupkg
cd ../../../ && dotnet new bit-todo --name Bit.TodoTemplate --database SqlServer
- name: Update appsettings.json api server address
uses: microsoft/variable-substitution@v1
with:
files: 'Bit.TodoTemplate/src/Client/Core/appsettings.json'
env:
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }}
- name: Install maui
run: cd src && dotnet workload install maui
- name: Generate CSS/JS files
run: dotnet build Bit.TodoTemplate/src/Client/Core/TodoTemplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
- name: Build pkg
run: dotnet build Bit.TodoTemplate/src/Client/App/TodoTemplate.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:CreatePackage=true -p:ApplicationDisplayVersion="${{ vars.APPLICATION_DISPLAY_VERSION }}" -p:ApplicationVersion="${{ vars.APPLICATION_VERSION }}" -f net8.0-maccatalyst
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: mac-pkg-bundle
path: Bit.TodoTemplate/src/Client/App/bin/release/net8.0-maccatalyst/*.pkg
build_blazor_hybrid_ios:
name: build blazor hybrid (ios)
runs-on: macos-13
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
global-json-file: src/Templates/TodoTemplate/Bit.TodoTemplate/global.json
- uses: actions/setup-node@v3
with:
node-version: 18
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '15'
- name: Create project from TodoTemplate
run: |
cd src/Templates/TodoTemplate && dotnet build -c Release
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0
dotnet new install Bit.TodoTemplate.0.0.0.nupkg
cd ../../../ && dotnet new bit-todo --name Bit.TodoTemplate --database SqlServer
- name: Update appsettings.json api server address
uses: microsoft/variable-substitution@v1
with:
files: 'Bit.TodoTemplate/src/Client/Core/appsettings.json'
env:
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }}
- name: Install maui
run: cd src && dotnet workload install maui
- name: Extract iOS code signing certificate from env
uses: timheuer/base64-to-file@v1
with:
fileDir: './'
fileName: 'DistributionCert.p12'
encodedString: ${{ secrets.APPSTORE_CODE_SIGNING_CERTIFICATE_FILE_BASE64 }}
- name: Import Code-Signing Certificates
uses: Apple-Actions/import-codesign-certs@v1
with:
p12-filepath: './DistributionCert.p12'
p12-password: ${{ secrets.APPSTORE_CODE_SIGNING_CERTIFICATE_FILE_PASSWORD }}
- name: Download Apple Provisioning Profiles
uses: Apple-Actions/download-provisioning-profiles@v1
with:
bundle-id: 'com.bitplatform.Todo.Template'
issuer-id: ${{ secrets.APPSTORE_API_KEY_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_KEY_PRIVATE_KEY }}
- name: Generate CSS/JS files
run: dotnet build Bit.TodoTemplate/src/Client/Core/TodoTemplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
- name: Build ipa
run: dotnet publish Bit.TodoTemplate/src/Client/App/TodoTemplate.Client.App.csproj -p:RuntimeIdentifier=ios-arm64 -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:ArchiveOnBuild=true -p:CodesignKey="iPhone Distribution" -p:CodesignProvision="TodoTemplate" -p:ApplicationDisplayVersion="${{ vars.APPLICATION_DISPLAY_VERSION }}" -p:ApplicationVersion="${{ vars.APPLICATION_VERSION }}" -f net8.0-ios
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: ios-bundle
path: Bit.TodoTemplate/src/Client/App/bin/release/net8.0-ios/ios-arm64/publish/*.ipa
build_blazor_electron_linux:
name: build blazor electron (linux)
runs-on: ubuntu-22.04
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
global-json-file: src/Templates/TodoTemplate/Bit.TodoTemplate/global.json
- name: Setup .NET for Electron.NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '6.x.x'
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Create project from TodoTemplate
run: |
cd src/Templates/TodoTemplate && dotnet build -c Release
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0
dotnet new install Bit.TodoTemplate.0.0.0.nupkg
cd ../../../ && dotnet new bit-todo --name Bit.TodoTemplate --database SqlServer
- name: Update appsettings.json api server address
uses: microsoft/variable-substitution@v1
with:
files: 'Bit.TodoTemplate/src/Client/Core/appsettings.json'
env:
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }}
- name: Switch to BlazorElectron
run: awk '/<BlazorMode>/{sub(">.*</", ">BlazorElectron</")}1' Bit.TodoTemplate/src/Directory.Build.props > temp.xml && mv temp.xml Bit.TodoTemplate/src/Directory.Build.props
- name: Generate CSS/JS files
run: dotnet build Bit.TodoTemplate/src/Client/Core/TodoTemplate.Client.Core.csproj -t:BeforeBuildTasks --no-restore
- name: Restore electron .net
run: dotnet build Bit.TodoTemplate/src/Client/Web/TodoTemplate.Client.Web.csproj -t:BeforeBuildTasks
- name: Build app image
run: cd Bit.TodoTemplate/src/Client/Web/ && dotnet electronize build /target linux
- name: Upload artifact
uses: actions/upload-artifact@v2
with:
name: linux-app-image
path: Bit.TodoTemplate/src/Client/Web/bin/Desktop/linux-unpacked