Summary
The release-kbagent native-distribution pipeline's signing steps were broken on every recent stable tag (v0.63.3, v0.63.4, v0.64.0) — that's why none of them produced a GitHub Release or native packages (only the PyPI wheel got out). Those signing failures are now fixed in #451 (merged). The one remaining blocker is publish-s3, which fails on AWS OIDC role assumption — that needs your AWS-side fix.
What was broken → fixed in #451
Verified on the re-tag run https://github.com/keboola/cli/actions/runs/27863857637 — all four freeze jobs are now green and the GitHub Release + binaries published.
- macOS —
stapler Error 73. build/package/macos/sign_notarize.sh ran xcrun stapler staple on the bare PyInstaller Mach-O binary. stapler only staples bundles (.app/.dmg/.pkg); a standalone executable cannot be stapled → deterministic Error 73 on every release. Notarization itself succeeds (notarytool → Accepted). Fix: drop the staple step — a Developer-ID-signed + notarized CLI binary is validated online by Gatekeeper (code-directory hash); stapling only matters for offline first-run of a bundle.
- Windows — TSA timeout.
build/package/windows/sign.sh timestamped against a single TSA (timestamp.digicert.com) with no retry/fallback → java.net.SocketTimeoutException: Connect timed out. Fix: jsign comma-separated --tsaurl failover (digicert,sectigo,ssl.com) + --tsretries 5 --tsretrywait 15.
- PyPI — not idempotent. Added
skip-existing: true to pypa/gh-action-pypi-publish so a re-tag/re-run after a downstream failure doesn't fail on an already-published version.
What still needs YOU (AWS infra)
publish-s3 fails:
Could not assume role with OIDC: Not authorized to perform sts:AssumeRoleWithWebIdentity
Likely cause: the IAM role (secrets.AWS_ROLE_ARN) trust policy doesn't authorize the GitHub OIDC token for this repo/ref. The repo moved to keboola/cli; the trust policy's sub condition may still reference an old repo path, or may not allow tag refs. Please check:
- the IAM role trust policy allows the GitHub OIDC provider +
repo:keboola/cli:* (incl. ref:refs/tags/*);
secrets.AWS_ROLE_ARN and the release environment's AWS secrets are correct for keboola/cli.
How to finish 0.64.0 after the IAM fix
The signed binaries and the GitHub Release for v0.64.0 already exist; only the S3-backed channels are missing. After the trust-policy fix, re-run the failed + skipped jobs:
gh run rerun 27863857637 --failed
pypi is skip-existing now and freeze/github-release already succeeded, so the re-run only does publish-s3 → homebrew / winget / chocolatey.
Current state of 0.64.0
- ✅ PyPI
keboola-cli==0.64.0
- ✅ GitHub Release v0.64.0 (Latest) — all native binaries +
.deb/.rpm/.apk attached + release notes → CLI auto-update picks it up
- ❌ S3 apt/rpm/apk repos + Homebrew/WinGet/Chocolatey — blocked on the IAM fix above
cc @Matovidlo
Summary
The
release-kbagentnative-distribution pipeline's signing steps were broken on every recent stable tag (v0.63.3, v0.63.4, v0.64.0) — that's why none of them produced a GitHub Release or native packages (only the PyPI wheel got out). Those signing failures are now fixed in #451 (merged). The one remaining blocker ispublish-s3, which fails on AWS OIDC role assumption — that needs your AWS-side fix.What was broken → fixed in #451
Verified on the re-tag run https://github.com/keboola/cli/actions/runs/27863857637 — all four
freezejobs are now green and the GitHub Release + binaries published.staplerError 73.build/package/macos/sign_notarize.shranxcrun stapler stapleon the bare PyInstaller Mach-O binary.stapleronly staples bundles (.app/.dmg/.pkg); a standalone executable cannot be stapled → deterministic Error 73 on every release. Notarization itself succeeds (notarytool→ Accepted). Fix: drop the staple step — a Developer-ID-signed + notarized CLI binary is validated online by Gatekeeper (code-directory hash); stapling only matters for offline first-run of a bundle.build/package/windows/sign.shtimestamped against a single TSA (timestamp.digicert.com) with no retry/fallback →java.net.SocketTimeoutException: Connect timed out. Fix: jsign comma-separated--tsaurlfailover (digicert,sectigo,ssl.com) +--tsretries 5 --tsretrywait 15.skip-existing: truetopypa/gh-action-pypi-publishso a re-tag/re-run after a downstream failure doesn't fail on an already-published version.What still needs YOU (AWS infra)
publish-s3fails:cli-dist.keboola.comapt/rpm/apk index) +homebrew/winget/chocolatey(they depend onpublish-s3) were skipped → those channels are NOT on 0.64.0.Likely cause: the IAM role (
secrets.AWS_ROLE_ARN) trust policy doesn't authorize the GitHub OIDC token for this repo/ref. The repo moved tokeboola/cli; the trust policy'ssubcondition may still reference an old repo path, or may not allow tag refs. Please check:repo:keboola/cli:*(incl.ref:refs/tags/*);secrets.AWS_ROLE_ARNand thereleaseenvironment's AWS secrets are correct forkeboola/cli.How to finish 0.64.0 after the IAM fix
The signed binaries and the GitHub Release for v0.64.0 already exist; only the S3-backed channels are missing. After the trust-policy fix, re-run the failed + skipped jobs:
pypiisskip-existingnow andfreeze/github-releasealready succeeded, so the re-run only doespublish-s3→homebrew/winget/chocolatey.Current state of 0.64.0
keboola-cli==0.64.0.deb/.rpm/.apkattached + release notes → CLI auto-update picks it upcc @Matovidlo