Blazor UI Demo CD #51
This file contains 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
name: Blazor UI Demo 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://components.bitplatform.dev/api/' | |
APP_SERVICE_NAME: 'bit-components' | |
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/global.json | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Switch to blazor web assembly | |
run: sed -i 's/Microsoft.NET.Sdk.Web/Microsoft.NET.Sdk.BlazorWebAssembly/g' src/BlazorUI/Demo/Client/Web/Bit.BlazorUI.Demo.Client.Web.csproj | |
- name: Install wasm | |
run: dotnet workload install wasm-tools wasm-experimental --sdk-version=8.0.100-rc.1.23463.5 | |
- name: Generate CSS/JS files | |
run: dotnet build src/BlazorUI/Demo/Server/Api/Bit.BlazorUI.Demo.Server.Api.csproj -p:BlazorMode=BlazorWebAssembly -p:WebAppDeploymentType="${{ env.WEB_APP_DEPLOYMENT_TYPE }}" -p:Configuration=Release | |
- name: Publish | |
run: dotnet publish src/BlazorUI/Demo/Server/Api/Bit.BlazorUI.Demo.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: Deploy to Azure Web App | |
id: deploy-to-webapp | |
uses: azure/webapps-deploy@v2 | |
with: | |
app-name: ${{ env.APP_SERVICE_NAME }} | |
slot-name: 'production' | |
publish-profile: ${{ secrets.COMPONENTS_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/global.json | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'src/BlazorUI/Demo/Client/Core/appsettings.json' | |
env: | |
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }} | |
- name: Install maui | |
run: dotnet workload install maui --sdk-version=8.0.100-rc.1.23463.5 | |
- name: Generate CSS/JS files | |
run: dotnet build src/BlazorUI/Demo/Client/App/Bit.BlazorUI.Demo.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:UseRidGraph=true -f net8.0-windows10.0.19041.0 | |
- name: Build exe | |
run: dotnet build src/BlazorUI/Demo/Client/App/Bit.BlazorUI.Demo.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: src/BlazorUI/Demo/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/global.json | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Extract Android signing key from env | |
uses: timheuer/base64-to-file@v1 | |
with: | |
fileDir: './src/BlazorUI/Demo/Client/App/' | |
fileName: 'BitBlazorUIDemo.keystore' | |
encodedString: ${{ secrets.ANDROID_RELEASE_KEYSTORE_FILE_BASE64 }} | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'src/BlazorUI/Demo/Client/Core/appsettings.json' | |
env: | |
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }} | |
- name: Install maui | |
run: dotnet workload install maui-android --sdk-version=8.0.100-rc.1.23463.5 | |
- name: Generate CSS/JS files | |
run: dotnet build src/BlazorUI/Demo/Client/App/Bit.BlazorUI.Demo.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:RunAOTCompilation=false -f net8.0-android | |
- name: Build aab | |
run: dotnet build src/BlazorUI/Demo/Client/App/Bit.BlazorUI.Demo.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:AndroidPackageFormat=aab -p:AndroidKeyStore=true -p:AndroidSigningKeyStore="BitBlazorUIDemo.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: src/BlazorUI/Demo/Client/App/bin/Release/net8.0-android/*-Signed.* | |
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/global.json | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'src/BlazorUI/Demo/Client/Core/appsettings.json' | |
env: | |
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }} | |
- name: Install maui | |
run: dotnet workload install maui --sdk-version=8.0.100-rc.1.23463.5 | |
- 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.BlazorUI.Demo' | |
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 src/BlazorUI/Demo/Client/App/Bit.BlazorUI.Demo.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -f net8.0-ios | |
- name: Build ipa | |
run: dotnet publish src/BlazorUI/Demo/Client/App/Bit.BlazorUI.Demo.Client.App.csproj -p:RuntimeIdentifier=ios-arm64 -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:ArchiveOnBuild=true -p:CodesignKey="iPhone Distribution" -p:CodesignProvision="Bit Blazor UI Demo" -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: src/BlazorUI/Demo/Client/App/bin/release/net8.0-ios/ios-arm64/publish/*.ipa | |
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/global.json | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'src/BlazorUI/Demo/Client/Core/appsettings.json' | |
env: | |
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }} | |
- name: Install maui | |
run: dotnet workload install maui --sdk-version=8.0.100-rc.1.23463.5 | |
- name: Generate CSS/JS files | |
run: dotnet build src/BlazorUI/Demo/Client/App/Bit.BlazorUI.Demo.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -f net8.0-maccatalyst | |
- name: Build pkg | |
run: dotnet build src/BlazorUI/Demo/Client/App/Bit.BlazorUI.Demo.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: src/BlazorUI/Demo/Client/App/bin/release/net8.0-maccatalyst/*.pkg | |
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/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: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'src/BlazorUI/Demo/Client/Core/appsettings.json' | |
env: | |
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }} | |
- name: Switch to BlazorElectron | |
run: awk '/<BlazorMode>/{sub(">.*</", ">BlazorElectron</")}1' src/BlazorUI/Demo/Directory.Build.props > temp.xml && mv temp.xml src/BlazorUI/Demo/Directory.Build.props | |
- name: Generate CSS/JS files | |
run: dotnet build src/BlazorUI/Demo/Client/Web/Bit.BlazorUI.Demo.Client.Web.csproj -p:Configuration=Release | |
- name: Build app image | |
run: cd src/BlazorUI/Demo/Client/Web/ && dotnet electronize build /target linux | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: linux-app-image | |
path: src/BlazorUI/Demo/Client/Web/bin/Desktop/linux-unpacked |