Skip to content

AugustSecurityUpdate (#1338) #145

AugustSecurityUpdate (#1338)

AugustSecurityUpdate (#1338) #145

name: GithubActionsRelease
############################################################################################################
# All of thes jobs runs commands only on a tag push in the Material-Blazor\Material.Blazor repository
# The publishing actions in forked repositories were handled by the WIP workflow
# An 'ExitWorkflow' action is sorely needed
############################################################################################################
on:
push:
tags:
- 5.** # Push events to matching pattern, i.e. 5.0.0, 5.1.0
env:
buildPlatform: 'Any CPU'
buildConfiguration: 'WebAssembly'
outputDocFx: ${{github.workspace}}\siteDocFx
outputMB: ${{github.workspace}}\siteMB
outputWeb: ${{github.workspace}}\siteWeb
projectMB: 'Material.Blazor/Material.Blazor.csproj'
projectTest: 'Material.Blazor.Test/Material.Blazor.Test.csproj'
projectWeb: 'Material.Blazor.Website.WebAssembly/Material.Blazor.Website.WebAssembly.csproj'
jobs:
############################################################################################################
# This job is used to gate actions. By creating this job we don't need to proliferate the repo checks
############################################################################################################
deployment-allowed-mb:
name: Running on Material-Blazor/Material.Blazor?
runs-on: ubuntu-latest
if: github.repository == 'Material-Blazor/Material.Blazor'
steps:
- name: Nothing to see here
run: echo ""
############################################################################################################
# Run the test project. Should this fail, we don't perform any deploy action
############################################################################################################
test:
name: Run .NET tests
runs-on: windows-latest
steps:
- name: Checkout repository under $GITHUB_WORKSPACE so the job can access it πŸ›ŽοΈ
uses: actions/checkout@v4
- name: Use dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.x'
- name: Run the acceptance tests as the first build action and cancel out the rest if it fails
run: dotnet test ${{env.projectTest}} --configuration ${{env.buildConfiguration}}
############################################################################################################
# Build documentation
############################################################################################################
build-documentation:
name: Build documentation
runs-on: windows-latest
steps:
- name: Checkout repository under $GITHUB_WORKSPACE so the job can access it πŸ›ŽοΈ
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.x'
- name: Setup docfx
run: |
copy Material.Blazor\docfx.json.MD2 docfx.json
copy Material.Blazor\index.md.MD2 index.md
copy Material.Blazor\toc.yml.MD2 toc.yml
dotnet tool update -g docfx
- name: Build Material.Blazor
run: dotnet build ${{env.projectMB}} --configuration ${{env.buildConfiguration}}
- name: Create documentation πŸ”§
run: docfx docfx.json
env:
DOCFX_SOURCE_BRANCH_NAME: main
- name: Upload Documentation Artifacts πŸ”Ί # The project is then uploaded as an artifact named 'siteDocFx'.
uses: actions/upload-artifact@v4
with:
name: siteDocFx
path: siteDocFx
############################################################################################################
# Build website
############################################################################################################
build-website:
needs: [test]
name: Build website
runs-on: windows-latest
steps:
- name: Get the version
run: echo "version=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
shell: bash
- name: Checkout repository under $GITHUB_WORKSPACE so the job can access it πŸ›ŽοΈ
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.x'
- name: Build and Publish Website πŸ”§
run: >
dotnet publish ${{env.projectWeb}}
--configuration ${{env.buildConfiguration}}
--output ${{env.outputWeb}}
-p:Version=${{env.version}}
-p:BlazorEnableCompression=false
--framework net8.0
- name: Upload Website Artifacts πŸ”Ί # The website is then uploaded as an artifact named 'siteWeb'.
uses: actions/upload-artifact@v4
with:
name: siteWeb
path: siteWeb
############################################################################################################
# deployghpages
############################################################################################################
deployghpages:
name: Deploy to material.blazor
needs: [test, build-documentation, build-website, deployment-allowed-mb]
runs-on: ubuntu-latest
steps:
- name: Checkout repository under $GITHUB_WORKSPACE so the job can access it πŸ›ŽοΈ
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.x'
- name: Download Artifacts πŸ”» # The documentation is downloaded into the 'siteDocFx' folder.
uses: actions/download-artifact@v4
with:
name: siteDocFx
path: siteDocFx
- name: Download Artifacts πŸ”» # The built project is downloaded into the 'siteWeb' folder.
uses: actions/download-artifact@v4
with:
name: siteWeb
path: siteWeb
- name: Configure deployment directory structure κ™ͺ
run: |
mv siteWeb/wwwroot deployroot
mv siteDocFx deployroot/docs
- name: Deploy πŸš€
uses: JamesIves/github-pages-deploy-action@v4
with:
token: ${{secrets.GH_PAT}}
branch: gh-pages
folder: 'deployroot'
############################################################################################################
# Build package and deploy
############################################################################################################
build-and-deploy-package:
name: Build nuget package & deploy to nuget
needs: [test, deployment-allowed-mb, deployghpages]
runs-on: windows-latest
steps:
- name: Get the version
run: echo "version=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
shell: bash
- name: Checkout repository under $GITHUB_WORKSPACE so the job can access it πŸ›ŽοΈ
uses: actions/checkout@v4
- name: Setup dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.x'
- name: Build Material.Blazor & Generate the NuGet package πŸ”§
run: >
dotnet pack ${{env.projectMB}}
--configuration ${{env.buildConfiguration}}
--output ${{env.outputMB}}
-p:IncludeSymbols=true
-p:SymbolPackageFormat=snupkg
-p:Version=${{env.version}}
- name: Display MaterialBlazor package output κ™ͺ
run: dir ${{env.outputMB}}
- name: Upload Package πŸš€
run: >
dotnet nuget push ${{env.outputMB}}\*.nupkg
-k ${{secrets.NUGET_API_KEY}}
-s https://api.nuget.org/v3/index.json
############################################################################################################
# Create release
############################################################################################################
create-release:
name: Create release
needs: [build-and-deploy-package]
runs-on: ubuntu-latest
steps:
- name: Get the version
run: echo "version=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
shell: bash
- name: Create Release
uses: ncipollo/release-action@v1
with:
name: Release ${{ env.version }}
tag: ${{ env.version }}