1111 - hardhat
1212 - avalancheFujiTestnet
1313 - arbitrumSepolia
14+ - arbitrum
1415 - bellecour
1516 default : ' hardhat'
1617 environment :
1718 description : ' Environment'
1819 required : true
1920 type : choice
2021 options :
21- - testnets
22- - mainnets
23- default : ' testnets '
22+ - dev
23+ - prod
24+ default : ' dev '
2425
2526jobs :
26-
27- # Validate deployment network and environment.
28- validate :
29- runs-on : ubuntu-latest
30- steps :
31- - uses : actions/checkout@v4
32- with :
33- fetch-depth : 0
34-
35- # On Github, the environment `mainnets` is restricted to
36- # the main branch. Here we check that it's only used with
37- # mainnet networks.
38- - name : Validate mainnet deployment
39- run : |
40- if [[ "${{ inputs.environment }}" == "mainnets" && "${{ inputs.network }}" != "bellecour" ]]; then
41- echo "::error::mainnets environment can only be used with mainnet networks."
42- exit 1
43- fi
44- echo "Deploying to network '${{ inputs.network }}' with environment '${{ inputs.environment }}'."
45-
46- # Build and test before deploying.
47- ci :
48- needs : validate
49- uses : ./.github/workflows/sharing-smart-contracts-reusable.yml
27+ build-and-test :
28+ uses : ./.github/workflows/sharing-smart-contracts-ci.yml
5029 with :
51- node-version : 18
30+ node-version : 20
5231
53- # Deploy and verify contract.
5432 deploy :
55- needs : ci
33+ # needs: build-and-test
5634 runs-on : ubuntu-latest
35+ env :
36+ CI : true
5737 permissions :
5838 contents : write # Required to commit deployment files.
59- environment : ${{ inputs.environment }}
39+ environment : ${{ inputs.network }}
6040 steps :
61- - name : Set environment variables
62- id : set-env
63- run : |
64- echo "PRIVATE_KEY=${{ secrets.PRIVATE_KEY }}" >> $GITHUB_ENV
65-
66- if [ "${{ inputs.network }}" == "arbitrumSepolia" ]; then
67- echo "POCO_ADDRESS=0x14B465079537655E1662F012e99EBa3863c8B9E0" >> $GITHUB_ENV
68- echo "DATASET_REGISTRY_ADDRESS=0x3441A0C9FE488c51fcABa2bAAA048720f4D4F72D" >> $GITHUB_ENV
69- echo "ETHERSCAN_API_KEY=${{ secrets.ETHERSCAN_API_KEY }}" >> $GITHUB_ENV
70- echo "DEPLOYMENT_ID=chain-421614" >> $GITHUB_ENV
71- fi
72-
7341 - uses : actions/checkout@v4
7442 with :
7543 fetch-depth : 0
7644
7745 - uses : actions/setup-node@v4
7846 with :
79- node-version : 18
47+ node-version : 20
48+ cache : ' npm'
49+ cache-dependency-path : ' packages/sharing-smart-contract'
8050
8151 - name : Install dependencies
8252 working-directory : packages/sharing-smart-contract
@@ -88,20 +58,62 @@ jobs:
8858 version : stable
8959 cache : true
9060
61+ - name : Validate deployment environment and prepare variables
62+ if : inputs.network != 'hardhat'
63+ run : |
64+ NETWORK="${{ inputs.network }}"
65+ ENVIRONMENT="${{ inputs.environment }}"
66+
67+ case "$NETWORK" in
68+ arbitrum|bellecour)
69+ if [ "$ENVIRONMENT" = "dev" ]; then
70+ echo "Error: Cannot deploy to mainnet ($NETWORK) with dev environment"
71+ exit 1
72+ fi
73+ echo "IS_MAINNET=true" >> $GITHUB_ENV
74+ ;;
75+ *)
76+ echo "IS_MAINNET=false" >> $GITHUB_ENV
77+ ;;
78+ esac
79+
9180 - name : Deploy contracts
81+ id : deploy
9282 working-directory : packages/sharing-smart-contract
93- run : npm run deploy -- --network ${{ inputs.network }}
83+ env :
84+ # For Deployment
85+ RPC_URL : ${{ secrets.RPC_URL }}
86+ DEPLOYER_PRIVATE_KEY : ${{ secrets.DEPLOYER_PRIVATE_KEY }}
87+ ADMIN_PRIVATE_KEY : ${{ secrets.ADMIN_PRIVATE_KEY }}
88+ POCO_ADDRESS : ${{ vars.POCO_ADDRESS }}
89+ DATASET_REGISTRY_ADDRESS : ${{ vars.DATASET_REGISTRY_ADDRESS }}
90+ run : |
91+ if [ "${{ inputs.network }}" = "hardhat" ]; then
92+ npm run deploy -- --network ${{ inputs.network }}
93+ else
94+ # For testnets, use network-environment; for mainnets, use network only
95+ if [ "$IS_MAINNET" = false ]; then
96+ DEPLOYMENT_ID="${{ inputs.network }}-${{ inputs.environment }}"
97+ else
98+ DEPLOYMENT_ID="${{ inputs.network }}"
99+ fi
100+ echo "deployment-id=$DEPLOYMENT_ID" >> $GITHUB_OUTPUT
101+ POCO_ADDRESS="${{ vars.POCO_ADDRESS }}" \
102+ DATASET_REGISTRY_ADDRESS="${{ vars.DATASET_REGISTRY_ADDRESS }}" \
103+ DEPLOYMENT_ID="$DEPLOYMENT_ID" \
104+ npm run deploy -- --network ${{ inputs.network }}
105+ fi
94106
95107 - name : Save deployment artifacts
96108 if : inputs.network != 'hardhat'
97109 uses : stefanzweifel/git-auto-commit-action@v5
98110 with :
99- commit_message : ' chore: save deployment artifacts for ${{ inputs.network }} ( ${{ inputs.environment }}, ${{ github.run_id }})'
111+ commit_message : ' chore: save deployment artifacts for ${{ inputs.network }} ${{ inputs.environment }} ( ${{ github.run_id }})'
100112 file_pattern : ' packages/sharing-smart-contract/ignition/deployments/* packages/sharing-smart-contract/.openzeppelin/*'
101113 commit_user_name : ' GitHub Actions Bot'
102114 commit_user_email : ' github-actions[bot]@users.noreply.github.com'
103115 commit_author : ' GitHub Actions Bot <github-actions[bot]@users.noreply.github.com>'
104116
105117 - name : Verify contracts
106- working-directory : packages/sharing-smart-contract
107- run : echo "TODO" # npm run verify:ignition -- $DEPLOYMENT_ID
118+ # TODO
119+ run : echo "Verification step is not implemented yet"
0 commit comments