🔧 Fix building UI app #25
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: Build and release | |
on: | |
# Dev | |
workflow_dispatch: | |
pull_request: | |
push: | |
# Preview | |
branches: [ main ] | |
# Stable | |
tags: [ "v*" ] | |
release: | |
types: | |
- published | |
env: | |
NET_SDK: '6.0.416' | |
jobs: | |
build_main: | |
name: "[ubuntu-latest] Build, test and stage" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # We need full history for version number | |
- name: "Setup .NET SDK" | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: ${{ env.NET_SDK }} | |
- name: "Build, test and bundle" | |
run: | | |
dotnet tool restore | |
dotnet script build.csx --isolated-load-context -- --target=CI-Build --configuration=Release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Publish artifacts to CI" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "Artifacts" | |
retention-days: 7 | |
path: | | |
build/artifacts/ | |
!build/artifacts/docs | |
- name: Publish docs artifact to CI | |
uses: actions/upload-pages-artifact@v2 | |
with: | |
path: build/artifacts/docs | |
build_sec: | |
name: "[${{ matrix.os }}] Build and test" | |
strategy: | |
matrix: | |
os: [ macos-latest, windows-latest ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # We need full history for version number | |
- name: "Setup .NET SDK" | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: ${{ env.NET_SDK }} | |
# No need to stage as one job can create the binaries for all platforms | |
- name: "Build, test and bundle" | |
run: | | |
dotnet tool restore | |
dotnet script build.csx --isolated-load-context -- --target=Default --configuration=Release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# Preview release on push to main only | |
# Stable release on version tag push only | |
push_artifacts: | |
name: "Push artifacts" | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') | |
needs: [ "build_main", "build_sec" ] | |
runs-on: ubuntu-latest | |
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment | |
permissions: | |
pages: write # to deploy to Pages | |
id-token: write # to verify the deployment originates from an appropriate source | |
# Deploy to the github-pages environment | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
env: | |
# Needed only for Azure DevOps Artifacts due to its weird auth method. | |
NUGET_FEED: 'https://pkgs.dev.azure.com/SceneGate/SceneGate/_packaging/SceneGate-Preview/nuget/v3/index.json' | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # We need full history for version number | |
- name: "Download artifacts" | |
uses: actions/download-artifact@v3 | |
with: | |
name: "Artifacts" | |
path: "./build/artifacts/" | |
- name: "Setup .NET SDK" | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: ${{ env.NET_SDK }} | |
# Weird way to authenticate in Azure DevOps Artifacts | |
# Then, we need to setup VSS_NUGET_EXTERNAL_FEED_ENDPOINTS | |
- name: "Install Azure Artifacts Credential Provider" | |
run: wget -qO- https://aka.ms/install-artifacts-credprovider.sh | bash | |
- name: "Deploy artifacts" | |
run: | | |
dotnet tool restore | |
dotnet script build.csx --isolated-load-context -- --target=CI-Deploy --configuration=Release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
STABLE_NUGET_FEED_TOKEN: "az" | |
PREVIEW_NUGET_FEED_TOKEN: "az" # Dummy, auth via below env var | |
VSS_NUGET_EXTERNAL_FEED_ENDPOINTS: '{"endpointCredentials": [{"endpoint":"${{ env.NUGET_FEED }}", "username":"", "password":"${{ secrets.NUGET_TOKEN }}"}]}' | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v2 |