OpenParable
Skip to content
← Back to skills

Github Actions

DevOps & Security
github-actions

Github Actions is an Agent Skill for devops & security published in the tddworks/ClaudeBar repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

Manage ClaudeBar's GitHub Actions CI/CD pipelines: build, test, and release workflows. Use this skill when: (1) Setting up secrets for CI/CD (certificate, API key, Sparkle key, Codecov) (2) Creating a new release — tag-based or manual workflow_dispatch (3) Triggering or explaining the build.yml, tests.yml, or release.yml workflows (4) Debugging release failures (signing, notarization, appcast) (5) Managing beta vs stable channels for Sparkle auto-updates (6) User says "release a new version", "push a tag", "set up CI secrets", "why did the release fail"

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/tddworks/ClaudeBar/blob/HEAD/.claude/skills/github-actions/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/github-actions, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

ClaudeBar GitHub Actions

Three workflows live in .github/workflows/. See reference files for setup and troubleshooting.

Workflows at a Glance

WorkflowTriggerRunnerPurpose
build.ymlpush/PR to main, developmacos-15Debug + release build verification
tests.ymlpush/PR to main, developmacos-26Unit tests + Codecov coverage upload
release.ymlv* tag push OR manualmacos-15Sign → notarize → DMG → GitHub release → appcast

Create a Release

Option A — Tag (recommended):

# 1. Update CHANGELOG.md with release notes for this version
# 2. Commit and push
git add CHANGELOG.md
git commit -m "docs: add release notes for v1.2.0"
git push origin main

# 3. Tag and push — this triggers release.yml automatically
git tag v1.2.0 && git push origin v1.2.0

# Beta / pre-release (automatically flagged on GitHub)
git tag v1.2.0-beta.1 && git push origin v1.2.0-beta.1

Option B — Manual dispatch:

  1. Go to Actions → Release → Run workflow
  2. Enter version (e.g. 1.2.0 or 1.2.0-beta.1)
  3. Optionally toggle publish_appcast and debug

Supported version formats: X.Y.Z, X.Y.Z-beta, X.Y.Z-beta.N, X.Y.Z-alpha.N, X.Y.Z-rc.N

Secrets Required

SecretRequired ForSee
APPLE_CERTIFICATE_P12Code signingsecrets-setup.md
APPLE_CERTIFICATE_PASSWORDCode signingsecrets-setup.md
APP_STORE_CONNECT_API_KEY_P8Notarizationsecrets-setup.md
APP_STORE_CONNECT_KEY_IDNotarizationsecrets-setup.md
APP_STORE_CONNECT_ISSUER_IDNotarizationsecrets-setup.md
SPARKLE_EDDSA_PRIVATE_KEYIn-app auto-updatessecrets-setup.md
CODECOV_TOKENCoverage uploadsecrets-setup.md
APP_IDENTITYOptional signing overridesecrets-setup.md

What the Release Pipeline Does

git tag v1.2.0
      │
      ▼
release.yml
  1. Extract + validate version (SemVer)
  2. Update Info.plist (CFBundleShortVersionString + CFBundleVersion = run_number)
  3. tuist install → tuist generate
  4. xcodebuild archive (arm64 + x86_64, unsigned)
  5. Import Developer ID cert into temp keychain
  6. codesign with entitlements
  7. notarytool submit + staple
  8. Create ZIP + DMG (signed), SHA256 checksums
  9. Extract release notes from CHANGELOG.md
 10. Publish GitHub Release (draft: false)
 11. Generate Sparkle appcast with EdDSA signature
 12. Deploy appcast to GitHub Pages

Debugging Failures

Enable verbose output via manual dispatch → debug: true. This prints:

  • P12 certificate details and contents
  • All identities in the signing keychain
  • Certificate subject and expiry dates

For detailed troubleshooting: troubleshooting.md

Beta Channel

Pre-release tags (v1.2.0-beta.1) automatically:

  • Set GitHub release as prerelease: true
  • Add <sparkle:channel>beta</sparkle:channel> to the appcast entry
  • Are only offered to users with Beta Updates enabled in Settings

Stable releases always win over betas of the same version (stable gets higher build number).

See release-workflow.md for the full beta channel matrix.