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
1826concurrency :
1927 group : ${{ github.ref }}-core-smart-contract-ci
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