Skip to content

release-kbagent: publish-s3 fails OIDC AssumeRoleWithWebIdentity — apt/rpm/apk + brew/winget/choco stuck (v0.64.0) #453

Description

@padak

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.

  1. 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.
  2. 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.
  3. 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-s3homebrew / 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions