Merge pull request #6061 from bitfoundation/develop #91
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: AdminPanel 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: 'Pwa' | |
API_SERVER_ADDRESS: 'https://adminpanel.bitplatform.dev/api/' | |
APP_SERVICE_NAME: 'bit-adminpanel' | |
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/Boilerplate/Bit.Boilerplate/global.json | |
- name: Create project from Boilerplate | |
run: | | |
cd src/Templates/Boilerplate && dotnet build -c Release | |
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0 | |
dotnet new install Bit.Boilerplate.0.0.0.nupkg | |
cd ../../../ && dotnet new bit-bp --name AdminPanel --database SqlServer --sample AdminPanel | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'AdminPanel/src/Client/Core/appsettings.json' | |
env: | |
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }} | |
- 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' AdminPanel/src/Client/Web/AdminPanel.Client.Web.csproj | |
- name: Install wasm | |
run: cd src && dotnet workload install wasm-tools wasm-experimental | |
- name: Generate CSS/JS files | |
run: dotnet build AdminPanel/src/Client/Core/AdminPanel.Client.Core.csproj -t:BeforeBuildTasks --no-restore | |
- name: Publish | |
run: dotnet publish AdminPanel/src/Server/Api/AdminPanel.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: ${{ env.APP_SERVICE_NAME }} | |
slot-name: 'production' | |
publish-profile: ${{ secrets.ADMINPANEL_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/Boilerplate/Bit.Boilerplate/global.json | |
- name: Create project from Boilerplate | |
run: | | |
cd src/Templates/Boilerplate && dotnet build -c Release | |
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0 | |
dotnet new install Bit.Boilerplate.0.0.0.nupkg | |
cd ../../../ && dotnet new bit-bp --name AdminPanel --database SqlServer --sample AdminPanel | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'AdminPanel/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 AdminPanel/src/Client/Core/AdminPanel.Client.Core.csproj -t:BeforeBuildTasks --no-restore | |
- name: Build exe | |
run: dotnet build AdminPanel/src/Client/App/AdminPanel.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:ApplicationTitle="AdminPanel" -p:ApplicationId="com.bitplatform.AdminPanel.Template" -p:UseRidGraph=true -f net8.0-windows10.0.19041.0 | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: win-exe-bundle | |
path: AdminPanel/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/Boilerplate/Bit.Boilerplate/global.json | |
- name: Create project from Boilerplate | |
run: | | |
cd src/Templates/Boilerplate && dotnet build -c Release | |
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0 | |
dotnet new install Bit.Boilerplate.0.0.0.nupkg | |
cd ../../../ && dotnet new bit-bp --name AdminPanel --database SqlServer --sample AdminPanel | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Extract Android signing key from env | |
uses: timheuer/base64-to-file@v1 | |
with: | |
fileDir: './AdminPanel/src/Client/App/' | |
fileName: 'AdminPanel.keystore' | |
encodedString: ${{ secrets.ANDROID_RELEASE_KEYSTORE_FILE_BASE64 }} | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'AdminPanel/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 AdminPanel/src/Client/Core/AdminPanel.Client.Core.csproj -t:BeforeBuildTasks --no-restore | |
- name: Build aab | |
run: dotnet build AdminPanel/src/Client/App/AdminPanel.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:AndroidPackageFormat=aab -p:AndroidKeyStore=true -p:AndroidSigningKeyStore="AdminPanel.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 }}" -p:ApplicationTitle="AdminPanel" -p:ApplicationId="com.bitplatform.AdminPanel.Template" -f net8.0-android | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: android-bundle | |
path: AdminPanel/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/Boilerplate/Bit.Boilerplate/global.json | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Create project from Boilerplate | |
run: | | |
cd src/Templates/Boilerplate && dotnet build -c Release | |
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0 | |
dotnet new install Bit.Boilerplate.0.0.0.nupkg | |
cd ../../../ && dotnet new bit-bp --name AdminPanel --database SqlServer --sample AdminPanel | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'AdminPanel/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 AdminPanel/src/Client/Core/AdminPanel.Client.Core.csproj -t:BeforeBuildTasks --no-restore | |
- name: Build pkg | |
run: dotnet build AdminPanel/src/Client/App/AdminPanel.Client.App.csproj -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:CreatePackage=true -p:ApplicationDisplayVersion="${{ vars.APPLICATION_DISPLAY_VERSION }}" -p:ApplicationVersion="${{ vars.APPLICATION_VERSION }}" -p:ApplicationTitle="AdminPanel" -p:ApplicationId="com.bitplatform.AdminPanel.Template" -f net8.0-maccatalyst | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: mac-pkg-bundle | |
path: AdminPanel/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/Boilerplate/Bit.Boilerplate/global.json | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: '15' | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Create project from Boilerplate | |
run: | | |
cd src/Templates/Boilerplate && dotnet build -c Release | |
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0 | |
dotnet new install Bit.Boilerplate.0.0.0.nupkg | |
cd ../../../ && dotnet new bit-bp --name AdminPanel --database SqlServer --sample AdminPanel | |
- name: Update appsettings.json api server address | |
uses: microsoft/variable-substitution@v1 | |
with: | |
files: 'AdminPanel/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.AdminPanel.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 AdminPanel/src/Client/Core/AdminPanel.Client.Core.csproj -t:BeforeBuildTasks --no-restore | |
- name: Build ipa | |
run: dotnet publish AdminPanel/src/Client/App/AdminPanel.Client.App.csproj -p:RuntimeIdentifier=ios-arm64 -p:BlazorMode=BlazorHybrid -p:Configuration=Release -p:ArchiveOnBuild=true -p:CodesignKey="iPhone Distribution" -p:CodesignProvision="AdminPanel" -p:ApplicationDisplayVersion="${{ vars.APPLICATION_DISPLAY_VERSION }}" -p:ApplicationVersion="${{ vars.APPLICATION_VERSION }}" -p:ApplicationTitle="AdminPanel" -p:ApplicationId="com.bitplatform.AdminPanel.Template" -f net8.0-ios | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ios-bundle | |
path: AdminPanel/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/Boilerplate/Bit.Boilerplate/global.json | |
- name: Create project from Boilerplate | |
run: | | |
cd src/Templates/Boilerplate && dotnet build -c Release | |
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0 | |
dotnet new install Bit.Boilerplate.0.0.0.nupkg | |
cd ../../../ && dotnet new bit-bp --name AdminPanel --database SqlServer --sample AdminPanel | |
- 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: 'AdminPanel/src/Client/Core/appsettings.json' | |
env: | |
ApiServerAddress: ${{ env.API_SERVER_ADDRESS }} | |
- name: Switch to BlazorElectron | |
run: awk '/<BlazorMode>/{sub(">.*</", ">BlazorElectron</")}1' AdminPanel/src/Directory.Build.props > temp.xml && mv temp.xml AdminPanel/src/Directory.Build.props | |
- name: Generate CSS/JS files | |
run: dotnet build AdminPanel/src/Client/Core/AdminPanel.Client.Core.csproj -t:BeforeBuildTasks --no-restore | |
- name: Restore electron .net | |
run: dotnet build AdminPanel/src/Client/Web/AdminPanel.Client.Web.csproj -t:BeforeBuildTasks | |
- name: Build app image | |
run: cd AdminPanel/src/Client/Web/ && dotnet electronize build /target linux | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: linux-app-image | |
path: AdminPanel/src/Client/Web/bin/Desktop/linux-unpacked |