release #29
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: release | |
on: | |
workflow_dispatch: | |
inputs: | |
prereleaseSlug: | |
description: 'Prerelease slug (optional)' | |
required: false | |
default: '' | |
type: choice | |
options: | |
- rc | |
- beta | |
- '' | |
jobs: | |
meta: | |
uses: ./.github/workflows/part-compute-version.yml | |
secrets: inherit | |
with: | |
prereleaseSlug: ${{ inputs.prereleaseSlug }} | |
checkTagIsUnique: true | |
build: | |
uses: ./.github/workflows/part-build.yml | |
secrets: inherit | |
needs: meta | |
with: | |
COALESCE_VERSION: ${{ needs.meta.outputs.COALESCE_VERSION }} | |
validate-template: | |
runs-on: ubuntu-latest | |
name: "test template: ${{matrix.testCase}}" | |
needs: [meta, build] | |
strategy: | |
matrix: | |
testCase: | |
# Nothing: | |
- "" | |
# Everything (except tenancy): | |
- "--Identity --MicrosoftAuth --GoogleAuth --UserPictures --AuditLogs --ExampleModel --DarkMode --TrackingBase --AppInsights --OpenAPI" | |
# Assorted partial variants: | |
- "--Identity --UserPictures --TrackingBase" | |
- "--Identity --MicrosoftAuth --AuditLogs" | |
# Tenancy variants: | |
- "--Identity --Tenancy --TenantCreateExternal --GoogleAuth" | |
- "--Identity --Tenancy --TenantCreateSelf --TenantMemberInvites --AuditLogs --LocalAuth --EmailSendGrid" | |
- "--Identity --Tenancy --TenantCreateAdmin --TenantMemberInvites --MicrosoftAuth --LocalAuth --EmailAzure" | |
defaults: | |
run: | |
shell: pwsh | |
working-directory: ./templates/Coalesce.Vue.Template | |
env: | |
COALESCE_VERSION: ${{ needs.meta.outputs.COALESCE_VERSION }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup dotnet | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: | | |
8.0.x | |
9.0.x | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: ${{ github.workspace }}/artifacts | |
- name: Add local nuget source | |
run: | | |
dotnet nuget add source "${{ github.workspace }}/artifacts/packages" --name "local-nuget" | |
# Install the coalesce packages that we just built so we can validate that the template | |
# works correctly with the version of Coalesce that we're releasing (which is also the version | |
# that will get substituted into the template when we build it in part-template-build). | |
# This isn't part of part-template-build because we want to validate before we publish any new versions. | |
- name: "Install newly built Coalesce packages" | |
run: | | |
$ErrorActionPreference = "Stop" | |
$PSNativeCommandUseErrorActionPreference = $true | |
echo $env:COALESCE_VERSION | |
ls ${{ github.workspace }}/artifacts | |
$filePath = "./content/Directory.Build.props" | |
$newVersion = "<CoalesceVersion>$env:COALESCE_VERSION</CoalesceVersion>" | |
(Get-Content $filePath) -replace '<CoalesceVersion>.*?<\/CoalesceVersion>', $newVersion | Set-Content $filePath | |
cat $filePath | |
cd ./content/*.Web | |
npm i $(Get-ChildItem -Path "${{ github.workspace }}/artifacts/coalesce-vue*.tgz").FullName --save | |
npm i $(Get-ChildItem -Path "${{ github.workspace }}/artifacts/coalesce-vue-vue3*.tgz").FullName --save | |
cat package.json | |
- name: TestLocal | |
run: ./TestLocal.ps1 "${{ matrix.testCase }}" | |
publish: | |
uses: ./.github/workflows/part-publish.yml | |
needs: [build, validate-template] | |
secrets: inherit | |
create-release: | |
runs-on: ubuntu-latest | |
needs: [meta, publish] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: rickstaa/action-create-tag@v1 | |
if: ${{ success() && !inputs.prereleaseSlug }} | |
with: | |
tag: ${{ needs.meta.outputs.COALESCE_VERSION }} | |
build-template: | |
uses: ./.github/workflows/part-template-build.yml | |
secrets: inherit | |
# Versioned template build depends upon NPM packages being published, | |
# and nuget packages existing as local artifacts (since Nuget.org is so slow | |
# to make new packages available, we consume the local artifacts instead of waiting). | |
needs: [meta, publish] | |
with: | |
COALESCE_VERSION: ${{ needs.meta.outputs.COALESCE_VERSION }} | |
publish-template: | |
runs-on: ubuntu-latest | |
needs: [build-template] | |
steps: | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: template-packages | |
- name: dotnet nuget push | |
run: dotnet nuget push "**/*.nupkg" -s https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_TOKEN }} |