Skip to content

ci: pass keypair content (not path) to devnet release actions#71

Merged
dev-jodee merged 1 commit intomainfrom
ci/fix-release-keypair-input
Apr 30, 2026
Merged

ci: pass keypair content (not path) to devnet release actions#71
dev-jodee merged 1 commit intomainfrom
ci/fix-release-keypair-input

Conversation

@dev-jodee
Copy link
Copy Markdown
Collaborator

Summary

  • Fixes Write program buffer failing in the release workflow with Input must be a JSON array.
  • Pass ${{ env.DEPLOYER_KEYPAIR }} (Doppler-injected content) to the devnet sub-actions instead of the file path /tmp/deployer.json.

Root Cause

The solana-developers/github-actions/{write-program-buffer, program-upgrade, metadata-upload, verify-build} actions all internally do:

- name: Write keypair
  run: echo "$DEPLOY_KEYPAIR" > ./deploy-keypair.json
  env:
    DEPLOY_KEYPAIR: ${{ inputs.keypair }}

i.e. they treat inputs.keypair as the keypair content, not a file path. We were passing /tmp/deployer.json, so the action wrote the literal string /tmp/deployer.json into ./deploy-keypair.json and solana program write-buffer rejected it.

Scope

  • Devnet path only (lines 76, 91, 99, 110).
  • Mainnet/Squads steps (lines 127, 139, 157) and the Materialize deployer keypair step are intentionally left in place — they will be migrated when next exercised on a real mainnet release.

Test Plan

  • Trigger Release workflow against devnet from this branch.
  • Confirm Write program buffer, Upgrade program (devnet), Upload IDL via program-metadata (devnet), Verify build (devnet) all succeed.

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

solana-developers/github-actions/{write-program-buffer,program-upgrade,
metadata-upload,verify-build} all expect the `keypair` input to be the
keypair file *content* (a JSON array string), then internally write it to
./deploy-keypair.json. We were passing the path /tmp/deployer.json, so
the action wrote the literal string "/tmp/deployer.json" into the file
and the solana CLI rejected it with "Input must be a JSON array".

Pass ${{ env.DEPLOYER_KEYPAIR }} (Doppler-injected) directly for the
devnet path. Mainnet/Squads steps left unchanged for now and still rely
on the materialize step; they can be migrated when next exercised.
@dev-jodee dev-jodee merged commit 2051a94 into main Apr 30, 2026
8 checks passed
@dev-jodee dev-jodee deleted the ci/fix-release-keypair-input branch April 30, 2026 17:30
@github-actions
Copy link
Copy Markdown

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 3616 11149 4953 0.000005001 0.000005198 0.000007476
create_plan 84 3540 21553 5221 0.000005001 0.000005208 0.000007610
create_recurring_delegation 27 3640 12673 5257 0.000005001 0.000005210 0.000007628
delete_plan 8 416 416 416 0.000005000 0.000005016 0.000005208
init_subscription_authority 142 7849 28851 12744 0.000005003 0.000005509 0.000011372
revoke_delegation 19 318 585 420 0.000005000 0.000005016 0.000005210
subscribe 21 6666 14166 8533 0.000005002 0.000005341 0.000009266
transfer_fixed 6 10105 19102 13104 0.000005003 0.000005524 0.000011552
transfer_recurring 17 10212 20803 12273 0.000005003 0.000005490 0.000011136
transfer_subscription 10 10446 13495 11250 0.000005003 0.000005450 0.000010625
update_plan 21 424 500 474 0.000005000 0.000005018 0.000005237

Generated: 2026-04-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