Skip to content

Commit 266bc7e

Browse files
committed
Make program keypair optional and check if its correct
1 parent 860d4e7 commit 266bc7e

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

program-upgrade/action.yaml

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,34 @@ inputs:
1818
required: true
1919
program-keypair:
2020
description: "Program address keypair for initial deployment"
21-
required: true
21+
required: false
2222

2323
runs:
2424
using: "composite"
2525
steps:
26-
- name: Write keypairs
26+
- name: Write keypairs and optionally verify program-id keypair
2727
shell: bash
2828
run: |
2929
echo "$DEPLOY_KEYPAIR" > ./deploy-keypair.json && chmod 600 ./deploy-keypair.json
30-
echo "$PROGRAM_KEYPAIR" > ./program-keypair.json && chmod 600 ./program-keypair.json
30+
31+
if [ -z "$PROGRAM_KEYPAIR" ]; then
32+
echo "ℹ️ No program-keypair provided — skipping program-id verification."
33+
else
34+
echo "$PROGRAM_KEYPAIR" > ./program-keypair.json && chmod 600 ./program-keypair.json
35+
36+
echo "🔍 Verifying program-keypair matches inputs.program-id..."
37+
PROGRAM_PUBKEY=$(solana-keygen pubkey ./program-keypair.json)
38+
39+
echo "Expected: '${{ inputs.program-id }}'"
40+
echo "Actual: '$PROGRAM_PUBKEY'"
41+
42+
if [ "$PROGRAM_PUBKEY" != "${{ inputs.program-id }}" ]; then
43+
echo "❌ Error: 'program-id' does not match public key of 'program-keypair'"
44+
exit 1
45+
fi
46+
47+
echo "✅ Verified: program-id matches program-keypair."
48+
fi
3149
env:
3250
DEPLOY_KEYPAIR: ${{ inputs.keypair }}
3351
PROGRAM_KEYPAIR: ${{ inputs.program-keypair }}
@@ -40,6 +58,11 @@ runs:
4058
echo "exists=true" >> $GITHUB_OUTPUT
4159
else
4260
echo "exists=false" >> $GITHUB_OUTPUT
61+
62+
if [ -z "${{ inputs.program-keypair }}" ]; then
63+
echo "❌ Error: program-keypair input is required for initial deployment (program does not exist yet)."
64+
exit 1
65+
fi
4366
fi
4467
4568
- name: Deploy new program

0 commit comments

Comments
 (0)