ci(release): add tag-triggered signed release workflow#10
Merged
Conversation
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.github/workflows/release.yml, a tag-triggered (v*) release workflow that builds, signs, notarizes, and packages Triptych's AU/VST3/Standalone artefacts on macOS, and packages an unsigned VST3/Standalone build on Windows.gh release upload.v*tag pushes — it does not run on PRs or branch pushes, so it has no effect on this PR's own CI run.Security model
push: tags: ['v*']only — tag pushes never carry fork-PR secrets, so signing credentials are never exposed to untrusted code.$RUNNER_TEMP/release.keychain-db, random password) that is deleted unconditionally in anif: always()step.permissions: contents: writeonly, scoped to attaching release assets.APPLE_API_KEY_ID,APPLE_API_ISSUER_ID,APPLE_API_KEY_P8,APPLE_CERT_P12,APPLE_CERT_PASSWORD. Yves is adding these at the org level. Until they exist, a tag push would fail at the signing/notarization step — this fails closed and is safe (no unsigned binaries would be silently released from the macOS job).Windows release (unsigned)) and is not a gap to fix here.Notes on adaptation from the suite template
find … -iname "*.vst3|*.component|*.app|*.exe"instead of a hardcodedbuild/Triptych_artefacts/Release/...path, mirroring the same defensive pattern this repo'sci.ymlalready uses in its "Locate plugin artefacts" step (JUCE's artefact path may or may not include aRelease/segment depending on single- vs multi-config generators).Triptych(fromCMakeLists.txt'sproject()/juce_add_plugin()and cross-checked againstci.yml'sARTEFACT_ROOT="build/Triptych_artefacts")..github/workflows/ci.ymland all other existing files are untouched — this PR only adds the new workflow file.Test plan
python3 -c "import yaml; yaml.safe_load(open('.github/workflows/release.yml'))")ci.ymlbuild/test/pluginval/auval workflow is green on this PR (release.yml does not run on PRs)v*tag push after org secrets are configured, to validate the signing/notarization/packaging steps end-to-end