Skip to content

ci: pass deployer pubkey as buffer authority for devnet#73

Merged
dev-jodee merged 2 commits intomainfrom
ci/fix-release-buffer-authority
Apr 30, 2026
Merged

ci: pass deployer pubkey as buffer authority for devnet#73
dev-jodee merged 2 commits intomainfrom
ci/fix-release-buffer-authority

Conversation

@dev-jodee
Copy link
Copy Markdown
Collaborator

Summary

  • Derive the deployer pubkey from the materialized keypair and pass it as buffer-authority-address for devnet releases.
  • Unblocks Write program buffer on devnet, which was retrying 50× then failing.

Root Cause

solana-developers/github-actions/write-program-buffer runs an internal Transfer buffer authority step whenever steps.check-program.outputs.exists == 'true':

solana program set-buffer-authority $BUFFER \
  --keypair ./deploy-keypair.json \
  --new-buffer-authority ${{ inputs.buffer-authority-address }} \
  --url ${{ inputs.rpc-url }}

We were passing an empty buffer-authority-address on devnet, so the CLI rejected the call:

error: The argument '--new-buffer-authority <NEW_BUFFER_AUTHORITY>' requires a value but none was supplied

The action has no flag to skip this step, so we satisfy it by transferring authority to the deployer itself (effective no-op).

Test Plan

  • Trigger Release workflow against devnet from this branch.
  • Confirm Write program buffer succeeds (including the Transfer buffer authority sub-step).
  • Confirm Upgrade program (devnet) proceeds and the program upgrade lands.

Failing run for reference: https://github.com/solana-program/subscriptions/actions/runs/25179831115

The write-program-buffer action runs `solana program set-buffer-authority`
when the program already exists on-chain, regardless of whether a transfer
is actually intended. We were passing an empty `buffer-authority-address`
on devnet, which the CLI rejects with "The argument
'--new-buffer-authority <NEW_BUFFER_AUTHORITY>' requires a value but none
was supplied" and retries up to 50 times before failing.

Derive the deployer pubkey from the materialized keypair and use it as
the buffer authority on devnet. This is a no-op transfer (deployer keeps
authority) and satisfies the action's requirement. Mainnet still uses
SQUADS_VAULT.
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 30, 2026

Compute Unit Report

Instruction Samples Min CUs Max CUs Avg CUs Est Cost (Low) [SOL] Est Cost (Med) [SOL] Est Cost (High) [SOL]
cancel_subscription 11 1805 2118 2003 0.000005000 0.000005080 0.000006001
close_subscription_authority 7 1881 1916 1886 0.000005000 0.000005075 0.000005943
create_fixed_delegation 38 3621 18030 5466 0.000005001 0.000005218 0.000007733
create_plan 84 3540 13450 4757 0.000005001 0.000005190 0.000007378
create_recurring_delegation 27 3640 12645 5369 0.000005001 0.000005214 0.000007684
delete_plan 8 416 416 416 0.000005000 0.000005016 0.000005208
init_subscription_authority 142 8931 25851 12068 0.000005003 0.000005482 0.000011034
revoke_delegation 19 318 585 420 0.000005000 0.000005016 0.000005210
subscribe 21 6666 9690 7462 0.000005002 0.000005298 0.000008731
transfer_fixed 6 10102 13105 11354 0.000005003 0.000005454 0.000010677
transfer_recurring 17 10212 13299 11484 0.000005003 0.000005459 0.000010742
transfer_subscription 10 10495 20995 12150 0.000005003 0.000005486 0.000011075
update_plan 21 424 500 474 0.000005000 0.000005018 0.000005237

Generated: 2026-04-30

The write-metadata-buffer and verify-build (mainnet/use-squads) actions
take `keypair` as the keypair file content, not a path — same pattern as
the devnet sub-actions fixed previously. Pass `${{ env.DEPLOYER_KEYPAIR }}`
directly so a future mainnet release does not fail with "Input must be a
JSON array".

The Squads upgrade-proposal action is left as-is (still consumes
/tmp/deployer.json), so the materialize/cleanup steps remain.
@dev-jodee dev-jodee merged commit 54a9aaf into main Apr 30, 2026
8 checks passed
@dev-jodee dev-jodee deleted the ci/fix-release-buffer-authority branch April 30, 2026 18:30
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