Skip to content

feat(ci): add cli-prerelease option to publish workflow#408

Merged
khaliqgant merged 3 commits into
mainfrom
feat/cli-prerelease-option
Feb 12, 2026
Merged

feat(ci): add cli-prerelease option to publish workflow#408
khaliqgant merged 3 commits into
mainfrom
feat/cli-prerelease-option

Conversation

@khaliqgant
Copy link
Copy Markdown
Member

@khaliqgant khaliqgant commented Feb 12, 2026

Summary

  • Add cli-prerelease as a package option in the existing publish.yml workflow
  • Skips: Rust binary builds, standalone builds, all verification jobs, sub-package publishing, GitHub releases
  • Runs: build & version → publish main package only
  • Uses the trusted publish.yml workflow required by npm's OIDC publish restrictions (npm only allows a single registered workflow)

How to use

Actions → Publish Package → Run workflow:

  • Package: cli-prerelease
  • Version: prerelease
  • Preid: beta
  • Tag: beta

Test plan

  • Trigger with cli-prerelease + dry_run: true to verify the lightweight path works
  • Verify binary build/verify/standalone jobs are all skipped
  • Publish a real beta prerelease

🤖 Generated with Claude Code


Open with Devin

khaliqgant and others added 2 commits February 12, 2026 15:56
Add 'cli-prerelease' package option that publishes only the main
agent-relay CLI package, skipping Rust binary builds, standalone
builds, verification, sub-package publishing, and GitHub releases.

Uses the trusted publish.yml workflow (required by npm OIDC) with
a lightweight path: build → publish-main only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
npm trusted publishing only allows a single registered workflow.
The cli-prerelease option in publish.yml replaces this.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Open in Devin Review

Comment thread .github/workflows/publish.yml Outdated
The loosened check `needs.verify-binaries.result == 'skipped'` could
allow publish-main to proceed without binary verification when building
'all' or 'main' packages (e.g., if build-binaries fails, verify-binaries
gets skipped, and publish proceeds with broken binaries).

Scope the skipped check so it only applies when package == 'cli-prerelease',
which intentionally skips binary builds.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@khaliqgant khaliqgant merged commit 7c41511 into main Feb 12, 2026
29 checks passed
@khaliqgant khaliqgant deleted the feat/cli-prerelease-option branch February 12, 2026 19:22
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

View 6 additional findings in Devin Review.

Open in Devin Review

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 verify-publish job runs for cli-prerelease and will fail due to missing binaries

When cli-prerelease is selected, the verify-publish job is not excluded and will run after a successful publish. This job installs the published package and verifies that relay-pty binaries exist and work. However, for cli-prerelease, binaries are intentionally not bundled, and no GitHub release is created (the create-release job is skipped at .github/workflows/publish.yml:907), so the postinstall script's fallback download from GitHub releases will also fail.

Root Cause and Impact

The verify-publish job at .github/workflows/publish.yml:1129-1138 has this condition:

if: |
  always() &&
  github.event.inputs.dry_run != 'true' &&
  needs.publish-main.result == 'success'

It does not filter out cli-prerelease, unlike create-release which has github.event.inputs.package != 'cli-prerelease'. The verify-publish.yml workflow tests relay-pty binary existence (verify-publish.yml:268-280), executability (verify-publish.yml:282-292), and functionality (verify-publish.yml:294-307). All of these will fail for a cli-prerelease publish because:

  1. The publish-main job skips downloading relay-pty binaries for cli-prerelease (.github/workflows/publish.yml:876)
  2. The create-release job is skipped, so no GitHub release with binary assets exists
  3. The postinstall script (scripts/postinstall.js:308) tries to download from https://github.com/AgentWorkforce/relay/releases/download/v<version>/<binary> which will 404

Impact: Every cli-prerelease publish (non-dry-run) will show a failed verify-publish job, creating noise and potentially causing confusion about whether the publish succeeded. The publish itself is not blocked, but the workflow run will show as partially failed.

(Refers to lines 1132-1135)

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant