mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-08 23:54:39 +00:00
All four bump workflows triggered on `release: types: [released]`, which never fires here: create-release.yml publishes the release with GITHUB_TOKEN, and GitHub suppresses workflow-triggering events for GITHUB_TOKEN actions. They had zero runs across every release up to v1.13.1. Switch them to `workflow_run` on "Create Release Assets" completion, filtered to a successful tag push. That also removes a latent race: `released` fired while the matrix legs were still uploading assets, whereas workflow_run fires after all of them finish. The workflow_run payload carries no draft/prerelease flags, so add a resolve-release composite action that reads them back from the API and feeds assert-stable-release, keeping the defense-in-depth guard intact instead of inferring stability from the tag string alone. Also gate the cask/winget bumps on the package existing upstream. Neither `amethyst-nostr` nor `VitorPamplona.Amethyst` has been bootstrapped, and bump-cask-pr/winget-releaser can only update an existing package — without the gate, fixing the trigger would file a spurious [release-ops] issue on every release. Docs: correct the claims this uncovered — Homebrew/Winget are not shipping, macOS is arm64-only (no Intel DMG), the release carries 31 assets (13 Android, not 12), Maven Central publishes from a step inside deploy-android and lags repo1 by tens of minutes, RELEASE_NOTES_ID is minor-releases-only, and note the git-credential-manager hang that blocks the release push.
113 lines
4.8 KiB
YAML
113 lines
4.8 KiB
YAML
name: Bump Winget Manifest
|
|
|
|
# Fires after "Create Release Assets" finishes successfully for a tag push.
|
|
#
|
|
# NOT `release: types: [released]`. That event never fires here: the release is
|
|
# created by create-release.yml using GITHUB_TOKEN, and GitHub does not raise
|
|
# workflow-triggering events for GITHUB_TOKEN actions. This workflow sat
|
|
# silently dead through every release up to v1.13.1 for exactly that reason.
|
|
# See the longer note in bump-homebrew.yml.
|
|
on:
|
|
workflow_run:
|
|
workflows: ["Create Release Assets"]
|
|
types: [completed]
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
description: 'Release tag to submit (for manual recovery)'
|
|
required: true
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
# The "Report failure" step below opens a [release-ops] issue via
|
|
# github.rest.issues.create; that needs issues:write. Without it the failure
|
|
# reporter itself 403s and no alert is ever filed.
|
|
issues: write
|
|
|
|
concurrency:
|
|
group: bump-winget-${{ github.event.workflow_run.head_branch || inputs.tag }}
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
bump:
|
|
# See bump-homebrew.yml for why these three conditions: successful, tag-push
|
|
# (not a dry-run dispatch), v-prefixed. Exact format enforced downstream.
|
|
if: >-
|
|
github.event_name == 'workflow_dispatch' ||
|
|
(github.event.workflow_run.conclusion == 'success' &&
|
|
github.event.workflow_run.event == 'push' &&
|
|
startsWith(github.event.workflow_run.head_branch, 'v'))
|
|
runs-on: windows-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v7
|
|
|
|
- name: Resolve release
|
|
id: rel
|
|
uses: ./.github/actions/resolve-release
|
|
with:
|
|
tag: ${{ github.event.workflow_run.head_branch || inputs.tag }}
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Re-assert stable release
|
|
uses: ./.github/actions/assert-stable-release
|
|
with:
|
|
tag: ${{ steps.rel.outputs.tag }}
|
|
is_prerelease: ${{ steps.rel.outputs.is_prerelease }}
|
|
is_draft: ${{ steps.rel.outputs.is_draft }}
|
|
|
|
# winget-releaser UPDATES an existing package; `VitorPamplona.Amethyst`
|
|
# has never been submitted to microsoft/winget-pkgs. Until the one-time
|
|
# new-package PR lands (BUILDING.md § Bootstrap), no-op instead of failing
|
|
# every release with a spurious [release-ops] issue.
|
|
- name: Check the package exists in winget-pkgs
|
|
id: pkg
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
URL=https://api.github.com/repos/microsoft/winget-pkgs/contents/manifests/v/VitorPamplona/Amethyst
|
|
if curl -fsSL -o /dev/null -H "Accept: application/vnd.github+json" "$URL"; then
|
|
echo "bootstrapped=true" >> "$GITHUB_OUTPUT"
|
|
echo "VitorPamplona.Amethyst found in winget-pkgs; proceeding with submission"
|
|
else
|
|
echo "bootstrapped=false" >> "$GITHUB_OUTPUT"
|
|
echo "::warning::Package 'VitorPamplona.Amethyst' is not in microsoft/winget-pkgs yet, so there is nothing to update for ${{ steps.rel.outputs.tag }}. Amethyst is NOT shipping via Winget. Submit the one-time new-package PR (BUILDING.md § Bootstrap) to activate this channel."
|
|
fi
|
|
|
|
- name: Submit manifest to winget-pkgs
|
|
if: steps.pkg.outputs.bootstrapped == 'true'
|
|
uses: vedantmgoyal9/winget-releaser@4ffc7888bffd451b357355dc214d43bb9f23917e # v2
|
|
with:
|
|
identifier: VitorPamplona.Amethyst
|
|
version: ${{ steps.rel.outputs.tag }}
|
|
# Asset naming contract: scripts/asset-name.sh
|
|
installers-regex: '^amethyst-desktop-.*-windows-x64\.msi$'
|
|
token: ${{ secrets.WINGET_TOKEN }}
|
|
|
|
- name: Report failure
|
|
if: failure()
|
|
uses: actions/github-script@v9
|
|
with:
|
|
script: |
|
|
const tag = context.payload.workflow_run?.head_branch || context.payload.inputs?.tag || 'unknown';
|
|
const runUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
|
|
await github.rest.issues.create({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
title: `[release-ops] bump-winget failed for ${tag}`,
|
|
body: [
|
|
`Winget manifest submission failed for release \`${tag}\`.`,
|
|
``,
|
|
`- Run: ${runUrl}`,
|
|
`- Channel: Winget (\`VitorPamplona.Amethyst\`)`,
|
|
``,
|
|
`Recovery options:`,
|
|
`1. Re-run the workflow once underlying issue is fixed`,
|
|
`2. Manually submit via \`wingetcreate update VitorPamplona.Amethyst -v ${tag.replace(/^v/, '')}\``,
|
|
`3. File PR directly against microsoft/winget-pkgs`
|
|
].join('\n'),
|
|
labels: ['release-ops', 'bug']
|
|
});
|