Skip to content

Commit 1766232

Browse files
committed
fix: add environment validation for mainnet deployments in CI workflow
1 parent 0ea21a2 commit 1766232

File tree

1 file changed

+61
-1
lines changed

1 file changed

+61
-1
lines changed

.github/workflows/core-smart-contract-deploy.yml

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ on:
1414
- arbitrum
1515
- bellecour
1616
default: 'hardhat'
17+
environment:
18+
description: 'Environment'
19+
required: true
20+
type: choice
21+
options:
22+
- dev
23+
- prod
24+
default: 'dev'
1725

1826
concurrency:
1927
group: ${{ github.ref }}-core-smart-contract-ci
@@ -48,6 +56,42 @@ jobs:
4856
working-directory: packages/smart-contract
4957
run: npm ci
5058

59+
- name: Validate deployment environment and prepare variables
60+
if: inputs.network != 'hardhat'
61+
run: |
62+
NETWORK="${{ inputs.network }}"
63+
ENVIRONMENT="${{ inputs.environment }}"
64+
CHAIN_ID="${{ vars.CHAIN_ID }}"
65+
66+
# Define mainnet networks
67+
MAINNET_NETWORKS=("arbitrum" "bellecour")
68+
69+
IS_MAINNET=false
70+
for mainnet in "${MAINNET_NETWORKS[@]}"; do
71+
if [ "$NETWORK" = "$mainnet" ]; then
72+
IS_MAINNET=true
73+
break
74+
fi
75+
done
76+
77+
# For mainnet networks, check that environment is not dev
78+
if [ "$IS_MAINNET" = true ] && [ "$ENVIRONMENT" = "dev" ]; then
79+
echo "Error: Cannot deploy to mainnet ($NETWORK) with dev environment"
80+
exit 1
81+
fi
82+
83+
ORIGINAL_FOLDER_NAME="chain-${CHAIN_ID}"
84+
if [ "$IS_MAINNET" = false ]; then
85+
NEW_FOLDER_NAME="chain-${CHAIN_ID}-${ENVIRONMENT}"
86+
else
87+
NEW_FOLDER_NAME="chain-${CHAIN_ID}"
88+
fi
89+
90+
# Export variables for subsequent steps
91+
echo "IS_MAINNET=$IS_MAINNET" >> $GITHUB_ENV
92+
echo "ORIGINAL_FOLDER_NAME=$ORIGINAL_FOLDER_NAME" >> $GITHUB_ENV
93+
echo "NEW_FOLDER_NAME=$NEW_FOLDER_NAME" >> $GITHUB_ENV
94+
5195
- name: Deploy contract
5296
working-directory: packages/smart-contract
5397
env:
@@ -60,11 +104,27 @@ jobs:
60104
IS_VERIFICATION_API_V2: ${{ vars.IS_VERIFICATION_API_V2 }}
61105
run: npm run deploy -- --network ${{ inputs.network }} --deployment-id ${{ inputs.network }} --verify
62106

107+
- name: Rename deployment folder based on environment
108+
if: inputs.network != 'hardhat'
109+
working-directory: packages/smart-contract
110+
run: |
111+
# Rename deployment folder if it's a testnet
112+
if [ "$IS_MAINNET" = false ]; then
113+
if [ -d "ignition/deployments/$ORIGINAL_FOLDER_NAME" ]; then
114+
mv "ignition/deployments/$ORIGINAL_FOLDER_NAME" "ignition/deployments/$NEW_FOLDER_NAME"
115+
echo "Renamed deployment folder from '$ORIGINAL_FOLDER_NAME' to '$NEW_FOLDER_NAME'"
116+
else
117+
echo "Warning: Expected deployment folder '$ORIGINAL_FOLDER_NAME' not found"
118+
ls -la ignition/deployments/ || echo "No deployments folder found"
119+
fi
120+
else
121+
echo "Mainnet deployment: keeping original folder name '$ORIGINAL_FOLDER_NAME'"
122+
fi
63123
- name: Save deployment artifacts
64124
if: inputs.network != 'hardhat'
65125
uses: stefanzweifel/git-auto-commit-action@v5
66126
with:
67-
commit_message: 'chore: save deployment artifacts for ${{ inputs.network }} (${{ github.run_id }})'
127+
commit_message: 'chore: save deployment artifacts for ${{ inputs.network }} ${{ inputs.environment }} (${{ github.run_id }})'
68128
file_pattern: 'packages/smart-contract/ignition/deployments/*'
69129
commit_user_name: 'GitHub Actions Bot'
70130
commit_user_email: 'github-actions[bot]@users.noreply.github.com'

0 commit comments

Comments
 (0)