From c46c92bc0350f40ce2ff79f41a05c4b359c43abd Mon Sep 17 00:00:00 2001 From: Xavier Fortin Date: Thu, 18 Jun 2026 08:07:01 -0400 Subject: [PATCH 1/4] Remove master branch publishing restriction. --- .github/workflows/build-package.yml | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-package.yml b/.github/workflows/build-package.yml index adcb9fe8..73df2401 100644 --- a/.github/workflows/build-package.yml +++ b/.github/workflows/build-package.yml @@ -32,8 +32,8 @@ on: type: choice options: - 'Skip Publishing' - - 'Dry Run (Master only)' - - 'Publish (Master only)' + - 'Dry Run' + - 'Publish' default: 'Skip Publishing' schedule: - cron: '32 5 * * 1' # 05:32 AM UTC every Monday @@ -54,27 +54,23 @@ jobs: id: info shell: pwsh run: | - $IsMasterBranch = ('${{ github.ref_name }}' -eq 'master') $IsScheduledJob = ('${{ github.event_name }}' -eq 'schedule') $PublishMode = '${{ inputs.publish-mode }}' if ([string]::IsNullOrEmpty($PublishMode)) { $PublishMode = 'Skip Publishing' } $SkipPublish = ($PublishMode -eq 'Skip Publishing') - $DryRun = ($PublishMode -eq 'Dry Run (Master only)') + $DryRun = ($PublishMode -eq 'Dry Run') - $IsPrerelease = -Not [string]::IsNullOrEmpty('${{ inputs.prerelease-suffix }}') - - $PackageEnv = if ((-Not $SkipPublish) -And (-Not $IsScheduledJob) -And ($IsMasterBranch -Or $IsPrerelease)) { + # Manual dispatch can publish from any branch selected in the Actions UI ref picker. + # Scheduled jobs always skip publishing. + $PackageEnv = if ((-Not $SkipPublish) -And (-Not $IsScheduledJob)) { "publish-prod" } else { "publish-test" } if ($IsScheduledJob) { - $SkipPublish = $true # force skipping publish for scheduled jobs - $DryRun = $false # just to avoid confusing 'Notice' messages - } elseif (-Not $IsMasterBranch -And -Not $IsPrerelease) { $SkipPublish = $true # force skipping publish (jobs running in 'publish-test' cannot test the publishing step) $DryRun = $false } @@ -125,6 +121,7 @@ jobs: echo "skip-publish=$($SkipPublish.ToString().ToLower())" >> $Env:GITHUB_OUTPUT echo "dry-run=$($DryRun.ToString().ToLower())" >> $Env:GITHUB_OUTPUT + echo "::notice::Branch: ${{ github.ref_name }}" echo "::notice::Building Packages: $PackageList" echo "::notice::Version: $PackageVersion" echo "::notice::SkipPublish: $SkipPublish" From ba90aabb6de396e2f28025807f8fe9b00dc52e7f Mon Sep 17 00:00:00 2001 From: Xavier Fortin Date: Wed, 17 Jun 2026 14:26:17 -0400 Subject: [PATCH 2/4] Add explicit build branch selection field to publish workflow. --- .github/workflows/build-package.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-package.yml b/.github/workflows/build-package.yml index 73df2401..cc96de0c 100644 --- a/.github/workflows/build-package.yml +++ b/.github/workflows/build-package.yml @@ -3,6 +3,11 @@ name: build package on: workflow_dispatch: inputs: + build-branch: + description: "Branch to build from (must be 'master' or 'release/*')" + type: string + default: 'master' + required: true build-mac: description: 'AvaloniaTheme.MacOS' type: boolean @@ -48,6 +53,7 @@ jobs: package-list: ${{ steps.info.outputs.package-list }} skip-publish: ${{ steps.info.outputs.skip-publish }} dry-run: ${{ steps.info.outputs.dry-run }} + build-branch: ${{ steps.info.outputs.build-branch }} steps: - name: Package information @@ -56,6 +62,13 @@ jobs: run: | $IsScheduledJob = ('${{ github.event_name }}' -eq 'schedule') + # Branch to build from. Scheduled jobs have no inputs, so default to 'master'. + $BuildBranch = '${{ inputs.build-branch }}' + if ([string]::IsNullOrEmpty($BuildBranch)) { $BuildBranch = 'master' } + if ($BuildBranch -ne 'master' -And $BuildBranch -NotMatch '^release/.+') { + throw "invalid build branch: $BuildBranch, must be 'master' or 'release/*'" + } + $PublishMode = '${{ inputs.publish-mode }}' if ([string]::IsNullOrEmpty($PublishMode)) { $PublishMode = 'Skip Publishing' } @@ -120,8 +133,9 @@ jobs: echo "package-list=$PackageList" >> $Env:GITHUB_OUTPUT echo "skip-publish=$($SkipPublish.ToString().ToLower())" >> $Env:GITHUB_OUTPUT echo "dry-run=$($DryRun.ToString().ToLower())" >> $Env:GITHUB_OUTPUT + echo "build-branch=$BuildBranch" >> $Env:GITHUB_OUTPUT - echo "::notice::Branch: ${{ github.ref_name }}" + echo "::notice::Branch: $BuildBranch" echo "::notice::Building Packages: $PackageList" echo "::notice::Version: $PackageVersion" echo "::notice::SkipPublish: $SkipPublish" @@ -136,6 +150,8 @@ jobs: steps: - name: Check out ${{ github.repository }} uses: actions/checkout@v6 + with: + ref: ${{ needs.preflight.outputs.build-branch }} - name: Configure runner shell: pwsh From cf39ae9b1d461ba353482edd8d13a3643ce4d3a3 Mon Sep 17 00:00:00 2001 From: Xavier Fortin Date: Thu, 18 Jun 2026 08:10:31 -0400 Subject: [PATCH 3/4] Fix stale comment on scheduled-job publish skip The comment referenced the removed non-master 'publish-test' case; reword it to reflect that scheduled jobs always skip publishing. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/build-package.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-package.yml b/.github/workflows/build-package.yml index cc96de0c..616fb805 100644 --- a/.github/workflows/build-package.yml +++ b/.github/workflows/build-package.yml @@ -84,8 +84,8 @@ jobs: } if ($IsScheduledJob) { - $SkipPublish = $true # force skipping publish (jobs running in 'publish-test' cannot test the publishing step) - $DryRun = $false + $SkipPublish = $true # scheduled jobs always skip publishing + $DryRun = $false # just to avoid confusing 'Notice' messages } $PackageVersion = '${{ inputs.version }}' From f5d97a54695db29f8b77bceac613dfd9cb04b002 Mon Sep 17 00:00:00 2001 From: Xavier Fortin Date: Thu, 18 Jun 2026 08:13:36 -0400 Subject: [PATCH 4/4] Remove superfluous comment. --- .github/workflows/build-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-package.yml b/.github/workflows/build-package.yml index 616fb805..3dbb1a06 100644 --- a/.github/workflows/build-package.yml +++ b/.github/workflows/build-package.yml @@ -85,7 +85,7 @@ jobs: if ($IsScheduledJob) { $SkipPublish = $true # scheduled jobs always skip publishing - $DryRun = $false # just to avoid confusing 'Notice' messages + $DryRun = $false } $PackageVersion = '${{ inputs.version }}'