Merge pull request #302 from BitGo/COIN-6795 #167
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy and Update Release | ||
|
Check failure on line 1 in .github/workflows/deploy_and_release.yml
|
||
| on: | ||
| release: | ||
| types: [published] | ||
| jobs: | ||
| lint-and-test: | ||
| environment: dev | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v3 | ||
| - name: Use Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| cache: 'npm' | ||
| - run: npm install | ||
| - run: npm run lint | ||
| - run: npm run test | ||
| env: | ||
| MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }} | ||
| TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP }} | ||
| PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT }} | ||
| QUICKNODE_ETH_MAINNET_API_KEY: ${{ secrets.QUICKNODE_ETH_MAINNET_API_KEY }} | ||
| QUICKNODE_ETH_HOLESKY_API_KEY: ${{ secrets.QUICKNODE_ETH_HOLESKY_API_KEY }} | ||
| QUICKNODE_ARBITRUM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_SEPOLIA_API_KEY }} | ||
| QUICKNODE_ARBITRUM_ONE_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_ONE_API_KEY }} | ||
| QUICKNODE_OPTIMISM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_SEPOLIA_API_KEY }} | ||
| QUICKNODE_OPTIMISM_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_API_KEY }} | ||
| QUICKNODE_ZKSYNC_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ZKSYNC_SEPOLIA_API_KEY }} | ||
| ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} | ||
| ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }} | ||
| POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }} | ||
| BSCSCAN_API_KEY: ${{ secrets.BSCSCAN_API_KEY }} | ||
| ARBISCAN_API_KEY: ${{ secrets.ARBISCAN_API_KEY }} | ||
| OPTIMISTIC_ETHERSCAN_API_KEY: ${{ secrets.OPTIMISTIC_ETHERSCAN_API_KEY }} | ||
| ZKSYNC_EXPLORER_API_KEY: ${{ secrets.ZKSYNC_EXPLORER_API_KEY }} | ||
| BASESCAN_API_KEY: ${{ secrets.BASESCAN_API_KEY }} | ||
| BEPOLIA_BERA_EXPLORER_API_KEY: ${{ secrets.BEPOLIA_BERA_EXPLORER_API_KEY }} | ||
| BERA_EXPLORER_API_KEY: ${{ secrets.BERA_EXPLORER_API_KEY }} | ||
| OAS_EXPLORER_API_KEY: ${{ secrets.OAS_EXPLORER_API_KEY }} | ||
| CORE_DAO_TESTNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_TESTNET_EXPLORER_API_KEY }} | ||
| CORE_DAO_MAINNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_MAINNET_EXPLORER_API_KEY }} | ||
| FLARE_EXPLORER_API_KEY: ${{ secrets.FLARE_EXPLORER_API_KEY }} | ||
| SONGBIRD_EXPLORER_API_KEY: ${{ secrets.SONGBIRD_EXPLORER_API_KEY }} | ||
| XDC_EXPLORER_API_KEY: ${{ secrets.XDC_EXPLORER_API_KEY }} | ||
| WEMIX_EXPLORER_API_KEY: ${{ secrets.WEMIX_EXPLORER_API_KEY }} | ||
| BERA_RPC_URL: ${{ secrets.BERA_RPC_URL }} | ||
| MONAD_EXPLORER_API_KEY: ${{ secrets.MONAD_EXPLORER_API_KEY }} | ||
| SOMNIA_EXPLORER_API_KEY: ${{ secrets.SOMNIA_EXPLORER_API_KEY }} | ||
| SONEIUM_EXPLORER_API_KEY: ${{ secrets.SONEIUM_EXPLORER_API_KEY }} | ||
| WORLD_EXPLORER_API_KEY: ${{ secrets.WORLD_EXPLORER_API_KEY }} | ||
| CTC_EXPLORER_API_KEY: ${{ secrets.CTC_EXPLORER_API_KEY }} | ||
| PHAROS_EXPLORER_API_KEY: ${{ secrets.PHAROS_EXPLORER_API_KEY }} | ||
| HYPEEVM_EXPLORER_API_KEY: ${{ secrets.HYPEEVM_EXPLORER_API_KEY }} | ||
| KAVAEVM_EXPLORER_API_KEY: ${{ secrets.KAVAEVM_EXPLORER_API_KEY }} | ||
| FLOW_EXPLORER_API_KEY: ${{ secrets.FLOW_EXPLORER_API_KEY }} | ||
| SEIEVM_EXPLORER_API_KEY: ${{ secrets.SEIEVM_EXPLORER_API_KEY }} | ||
| KAIA_EXPLORER_API_KEY: ${{ secrets.KAIA_EXPLORER_API_KEY }} | ||
| IP_EXPLORER_API_KEY: ${{ secrets.IP_EXPLORER_API_KEY }} | ||
| HYPE_EVM_PRIVATE_KEY: ${{ secrets.HYPE_EVM_PRIVATE_KEY }} | ||
| PLUME_EXPLORER_API_KEY: ${{ secrets.PLUME_EXPLORER_API_KEY }} | ||
| MEGAETH_EXPLORER_API_KEY: ${{ secrets.MEGAETH_EXPLORER_API_KEY }} | ||
| HBAREVM_EXPLORER_API_KEY: ${{ secrets.HBAREVM_EXPLORER_API_KEY }} | ||
| opBNB_EXPLORER_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} | ||
| get-network: | ||
| runs-on: ubuntu-latest | ||
| needs: [lint-and-test] | ||
| outputs: | ||
| network: ${{steps.network-name.outputs.result}} | ||
| steps: | ||
| - name: GET NETWORK NAME | ||
| id: network-name | ||
| uses: actions/github-script@v6 | ||
| with: | ||
| github-token: ${{secrets.GITHUB_TOKEN}} | ||
| result-encoding: string | ||
| script: | | ||
| const tag = process.env.GITHUB_REF_NAME; | ||
| const regex = /v.*\-(eth|hteth|matic|tmatic|bsc|tbsc|arbeth|tarbeth|opeth|topeth|zketh|tzketh|baseeth|tbaseeth|bera|tbera|tavaxc|avaxc|toas|oas|tcoredao|coredao|tflr|flr|tsgb|sgb|txdc|xdc|twemix|wemix|tmon|mon|tstt|stt|tsoneium|soneium|world|tworld|tctc|ctc|tapechain|apechain|tphrs|phrs|thypeevm|hypeevm|tsonic|sonic|seievm|tseievm|kaia|tkaia|irys|tirys|tlineaeth|lineaeth|ip|tip|plasma|tplasma|kavaevm|tkavaevm|plume|tplume|tog|og|flow|tflow|megaeth|tmegaeth|hbarevm|thbarevm|fluenteth|tfluenteth|mantle|tmantle|dogeos|tdogeos|opBNB|topBNB|jovayeth|tjovayeth)$/; | ||
| const network = tag.match(regex); | ||
| return network ? network[1] : "hteth"; | ||
| preview: | ||
| runs-on: ubuntu-latest | ||
| needs: [lint-and-test, get-network] | ||
| steps: | ||
| - name: Approval summary | ||
| run: | | ||
| NETWORK="${{ needs.get-network.outputs.network }}" | ||
| if [[ "$NETWORK" == t* ]]; then | ||
| ENVIRONMENT="testnet" | ||
| CMD="npm run deploy-test --network $NETWORK" | ||
| else | ||
| ENVIRONMENT="mainnet" | ||
| CMD="npm run deploy-prod --network $NETWORK" | ||
| fi | ||
| cat <<EOF >> "$GITHUB_STEP_SUMMARY" | ||
| ### Deploy — Approval Summary | ||
| - Release ref: ${{ github.ref_name }} | ||
| - Derived network: $NETWORK | ||
| - Target environment: $ENVIRONMENT | ||
| Actions to be performed after approval: | ||
| - Will run: $CMD | ||
| - Publish explorer verifications where applicable | ||
| > Approve only if the target network and environment are correct. | ||
| EOF | ||
| deploy-to-test: | ||
| runs-on: ubuntu-latest | ||
| needs: [lint-and-test, get-network, preview] | ||
| if: ${{ (needs.get-network.outputs.network == 'hteth' ) || (needs.get-network.outputs.network == 'tmatic' ) || (needs.get-network.outputs.network == 'tbsc' ) || (needs.get-network.outputs.network == 'tarbeth' ) || (needs.get-network.outputs.network == 'topeth' ) || (needs.get-network.outputs.network == 'tzketh' ) || (needs.get-network.outputs.network == 'tbaseeth' ) || (needs.get-network.outputs.network == 'tbera' ) || (needs.get-network.outputs.network == 'tavaxc' ) || (needs.get-network.outputs.network == 'toas' ) || (needs.get-network.outputs.network == 'tcoredao' ) || (needs.get-network.outputs.network == 'tflr' ) || (needs.get-network.outputs.network == 'tsgb' ) || (needs.get-network.outputs.network == 'txdc' ) || (needs.get-network.outputs.network == 'twemix' ) || (needs.get-network.outputs.network == 'tmon' ) || (needs.get-network.outputs.network == 'tstt' ) || (needs.get-network.outputs.network == 'tsoneium' ) || (needs.get-network.outputs.network == 'tworld' ) || (needs.get-network.outputs.network == 'tctc' ) || (needs.get-network.outputs.network == 'tapechain' ) || (needs.get-network.outputs.network == 'tphrs' ) || (needs.get-network.outputs.network == 'thypeevm' ) || (needs.get-network.outputs.network == 'tsonic' )|| (needs.get-network.outputs.network == 'tseievm' ) || (needs.get-network.outputs.network == 'tkaia' ) || (needs.get-network.outputs.network == 'tirys' ) || (needs.get-network.outputs.network == 'tlineaeth' ) || (needs.get-network.outputs.network == 'tip' ) || (needs.get-network.outputs.network == 'tplasma' ) || (needs.get-network.outputs.network == 'tog' ) || (needs.get-network.outputs.network == 'tkavaevm' ) || (needs.get-network.outputs.network == 'tplume') || (needs.get-network.outputs.network == 'tflow') || (needs.get-network.outputs.network == 'tmegaeth') || (needs.get-network.outputs.network == 'thbarevm') || (needs.get-network.outputs.network == 'tfluenteth') || (needs.get-network.outputs.network == 'tmantle') || (needs.get-network.outputs.network == 'tdogeos') || (needs.get-network.outputs.network == 'topBNB' || (needs.get-network.outputs.network == 'tjovayeth')}} | ||
| environment: testnet | ||
| steps: | ||
| - uses: actions/checkout@v2 | ||
| - name: Use Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: 18.x | ||
| cache: 'npm' | ||
| - run: npm install | ||
| - run: npm run deploy-test --network ${{ needs.get-network.outputs.network }} | ||
| env: | ||
| MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }} | ||
| TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP }} | ||
| PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT }} | ||
| QUICKNODE_ETH_MAINNET_API_KEY: ${{ secrets.QUICKNODE_ETH_MAINNET_API_KEY }} | ||
| QUICKNODE_ETH_HOLESKY_API_KEY: ${{ secrets.QUICKNODE_ETH_HOLESKY_API_KEY }} | ||
| QUICKNODE_ARBITRUM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_SEPOLIA_API_KEY }} | ||
| QUICKNODE_ARBITRUM_ONE_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_ONE_API_KEY }} | ||
| QUICKNODE_OPTIMISM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_SEPOLIA_API_KEY }} | ||
| QUICKNODE_OPTIMISM_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_API_KEY }} | ||
| QUICKNODE_ZKSYNC_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ZKSYNC_SEPOLIA_API_KEY }} | ||
| ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} | ||
| ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }} | ||
| POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }} | ||
| BSCSCAN_API_KEY: ${{ secrets.BSCSCAN_API_KEY }} | ||
| ARBISCAN_API_KEY: ${{ secrets.ARBISCAN_API_KEY }} | ||
| OPTIMISTIC_ETHERSCAN_API_KEY: ${{ secrets.OPTIMISTIC_ETHERSCAN_API_KEY }} | ||
| ZKSYNC_EXPLORER_API_KEY: ${{ secrets.ZKSYNC_EXPLORER_API_KEY }} | ||
| BASESCAN_API_KEY: ${{ secrets.BASESCAN_API_KEY }} | ||
| BEPOLIA_BERA_EXPLORER_API_KEY: ${{ secrets.BEPOLIA_BERA_EXPLORER_API_KEY }} | ||
| BERA_EXPLORER_API_KEY: ${{ secrets.BERA_EXPLORER_API_KEY }} | ||
| OAS_EXPLORER_API_KEY: ${{ secrets.OAS_EXPLORER_API_KEY }} | ||
| CORE_DAO_TESTNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_TESTNET_EXPLORER_API_KEY }} | ||
| CORE_DAO_MAINNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_MAINNET_EXPLORER_API_KEY }} | ||
| FLARE_EXPLORER_API_KEY: ${{ secrets.FLARE_EXPLORER_API_KEY }} | ||
| SONGBIRD_EXPLORER_API_KEY: ${{ secrets.SONGBIRD_EXPLORER_API_KEY }} | ||
| XDC_EXPLORER_API_KEY: ${{ secrets.XDC_EXPLORER_API_KEY }} | ||
| WEMIX_EXPLORER_API_KEY: ${{ secrets.WEMIX_EXPLORER_API_KEY }} | ||
| BERA_RPC_URL: ${{ secrets.BERA_RPC_URL }} | ||
| MONAD_EXPLORER_API_KEY: ${{ secrets.MONAD_EXPLORER_API_KEY }} | ||
| SOMNIA_EXPLORER_API_KEY: ${{ secrets.SOMNIA_EXPLORER_API_KEY }} | ||
| SONEIUM_EXPLORER_API_KEY: ${{ secrets.SONEIUM_EXPLORER_API_KEY }} | ||
| WORLD_EXPLORER_API_KEY: ${{ secrets.WORLD_EXPLORER_API_KEY }} | ||
| CTC_EXPLORER_API_KEY: ${{ secrets.CTC_EXPLORER_API_KEY }} | ||
| PHAROS_EXPLORER_API_KEY: ${{ secrets.PHAROS_EXPLORER_API_KEY }} | ||
| HYPEEVM_EXPLORER_API_KEY: ${{ secrets.HYPEEVM_EXPLORER_API_KEY }} | ||
| SEIEVM_EXPLORER_API_KEY: ${{ secrets.SEIEVM_EXPLORER_API_KEY }} | ||
| KAIA_EXPLORER_API_KEY: ${{ secrets.KAIA_EXPLORER_API_KEY }} | ||
| IP_EXPLORER_API_KEY: ${{ secrets.IP_EXPLORER_API_KEY }} | ||
| HYPE_EVM_PRIVATE_KEY: ${{ secrets.HYPE_EVM_PRIVATE_KEY }} | ||
| KAVAEVM_EXPLORER_API_KEY: ${{ secrets.KAVAEVM_EXPLORER_API_KEY }} | ||
| PLUME_EXPLORER_API_KEY: ${{ secrets.PLUME_EXPLORER_API_KEY }} | ||
| FLOW_EXPLORER_API_KEY: ${{ secrets.FLOW_EXPLORER_API_KEY }} | ||
| MEGAETH_EXPLORER_API_KEY: ${{ secrets.MEGAETH_EXPLORER_API_KEY }} | ||
| HBAREVM_EXPLORER_API_KEY: ${{ secrets.HBAREVM_EXPLORER_API_KEY }} | ||
| opBNB_EXPLORER_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} | ||
| - name: Update release notes | ||
| uses: actions/github-script@v6 | ||
| with: | ||
| github-token: ${{secrets.GITHUB_TOKEN}} | ||
| script: | | ||
| const fs = require('fs'); | ||
| const path = require('path'); | ||
| var json; | ||
| var html = ""; | ||
| try { | ||
| json = JSON.parse(fs.readFileSync('./output.json').toString()); | ||
| for(const key in json){ | ||
| html += key+": "+json[key]+"<br>"; | ||
| } | ||
| } catch (err){ | ||
| console.log("json file not found."); | ||
| } | ||
| const response= await github.rest.repos.getReleaseByTag({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| tag: "${{ github.event.release.tag_name }}" | ||
| }); | ||
| github.rest.repos.updateRelease({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| release_id: response.data.id, | ||
| body: html | ||
| }); | ||
| deploy-to-prod: | ||
| runs-on: ubuntu-latest | ||
| needs: [lint-and-test, get-network, preview] | ||
| if: ${{ (needs.get-network.outputs.network == 'eth' ) || (needs.get-network.outputs.network == 'matic' ) || (needs.get-network.outputs.network == 'bsc' ) || (needs.get-network.outputs.network == 'arbeth' ) || (needs.get-network.outputs.network == 'opeth' ) || (needs.get-network.outputs.network == 'zketh' ) || (needs.get-network.outputs.network == 'baseeth' ) || (needs.get-network.outputs.network == 'bera' ) || (needs.get-network.outputs.network == 'avaxc' ) || (needs.get-network.outputs.network == 'coredao' ) || (needs.get-network.outputs.network == 'oas' ) || (needs.get-network.outputs.network == 'flr' ) || (needs.get-network.outputs.network == 'sgb' ) || (needs.get-network.outputs.network == 'xdc' ) || (needs.get-network.outputs.network == 'wemix' ) || (needs.get-network.outputs.network == 'mon' ) || (needs.get-network.outputs.network == 'stt' ) || (needs.get-network.outputs.network == 'soneium' ) || (needs.get-network.outputs.network == 'world' ) || (needs.get-network.outputs.network == 'ctc' ) || (needs.get-network.outputs.network == 'apechain' ) || (needs.get-network.outputs.network == 'phrs' ) || (needs.get-network.outputs.network == 'hypeevm' ) || (needs.get-network.outputs.network == 'sonic' ) || (needs.get-network.outputs.network == 'seievm' ) || (needs.get-network.outputs.network == 'kaia' ) || (needs.get-network.outputs.network == 'irys' ) || (needs.get-network.outputs.network == 'lineaeth' ) || (needs.get-network.outputs.network == 'ip' ) || (needs.get-network.outputs.network == 'plasma' ) || (needs.get-network.outputs.network == 'kavaevm' ) || (needs.get-network.outputs.network == 'og' ) || (needs.get-network.outputs.network == 'plume') || (needs.get-network.outputs.network == 'flow') || (needs.get-network.outputs.network == 'megaeth') || (needs.get-network.outputs.network == 'hbarevm') || (needs.get-network.outputs.network == 'fluenteth') || (needs.get-network.outputs.network == 'mantle') || (needs.get-network.outputs.network == 'dogeos') || (needs.get-network.outputs.network == 'opBNB') || (needs.get-network.outputs.network == 'jovayeth')}} | ||
| environment: mainnet | ||
| steps: | ||
| - uses: actions/checkout@v2 | ||
| - name: Use Node.js | ||
| uses: actions/setup-node@v3 | ||
| with: | ||
| node-version: 18.x | ||
| cache: 'npm' | ||
| - run: npm install | ||
| - run: npm run deploy-prod --network ${{ needs.get-network.outputs.network }} | ||
| env: | ||
| MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.MAINNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }} | ||
| TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT: ${{ secrets.TESTNET_PRIVATE_KEY_FOR_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP: ${{ secrets.PRIVATE_KEY_FOR_V4_CONTRACT_DEPLOYMENT_BACKUP }} | ||
| PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_V1_WALLET_CONTRACT_DEPLOYMENT }} | ||
| PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT: ${{ secrets.PRIVATE_KEY_FOR_BATCHER_CONTRACT_DEPLOYMENT }} | ||
| QUICKNODE_ETH_MAINNET_API_KEY: ${{ secrets.QUICKNODE_ETH_MAINNET_API_KEY }} | ||
| QUICKNODE_ETH_HOLESKY_API_KEY: ${{ secrets.QUICKNODE_ETH_HOLESKY_API_KEY }} | ||
| QUICKNODE_ARBITRUM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_SEPOLIA_API_KEY }} | ||
| QUICKNODE_ARBITRUM_ONE_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_ONE_API_KEY }} | ||
| QUICKNODE_OPTIMISM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_SEPOLIA_API_KEY }} | ||
| QUICKNODE_OPTIMISM_API_KEY: ${{ secrets.QUICKNODE_OPTIMISM_API_KEY }} | ||
| QUICKNODE_ZKSYNC_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ZKSYNC_SEPOLIA_API_KEY }} | ||
| ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} | ||
| ALCHEMY_POLYGON_API_KEY: ${{ secrets.ALCHEMY_POLYGON_API_KEY }} | ||
| POLYGONSCAN_API_KEY: ${{ secrets.POLYGONSCAN_API_KEY }} | ||
| BSCSCAN_API_KEY: ${{ secrets.BSCSCAN_API_KEY }} | ||
| ARBISCAN_API_KEY: ${{ secrets.ARBISCAN_API_KEY }} | ||
| OPTIMISTIC_ETHERSCAN_API_KEY: ${{ secrets.OPTIMISTIC_ETHERSCAN_API_KEY }} | ||
| ZKSYNC_EXPLORER_API_KEY: ${{ secrets.ZKSYNC_EXPLORER_API_KEY }} | ||
| BASESCAN_API_KEY: ${{ secrets.BASESCAN_API_KEY }} | ||
| BEPOLIA_BERA_EXPLORER_API_KEY: ${{ secrets.BEPOLIA_BERA_EXPLORER_API_KEY }} | ||
| BERA_EXPLORER_API_KEY: ${{ secrets.BERA_EXPLORER_API_KEY }} | ||
| OAS_EXPLORER_API_KEY: ${{ secrets.OAS_EXPLORER_API_KEY }} | ||
| CORE_DAO_TESTNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_TESTNET_EXPLORER_API_KEY }} | ||
| CORE_DAO_MAINNET_EXPLORER_API_KEY: ${{ secrets.CORE_DAO_MAINNET_EXPLORER_API_KEY }} | ||
| FLARE_EXPLORER_API_KEY: ${{ secrets.FLARE_EXPLORER_API_KEY }} | ||
| SONGBIRD_EXPLORER_API_KEY: ${{ secrets.SONGBIRD_EXPLORER_API_KEY }} | ||
| XDC_EXPLORER_API_KEY: ${{ secrets.XDC_EXPLORER_API_KEY }} | ||
| WEMIX_EXPLORER_API_KEY: ${{ secrets.WEMIX_EXPLORER_API_KEY }} | ||
| BERA_RPC_URL: ${{ secrets.BERA_RPC_URL }} | ||
| MONAD_EXPLORER_API_KEY: ${{ secrets.MONAD_EXPLORER_API_KEY }} | ||
| SOMNIA_EXPLORER_API_KEY: ${{ secrets.SOMNIA_EXPLORER_API_KEY }} | ||
| SONEIUM_EXPLORER_API_KEY: ${{ secrets.SONEIUM_EXPLORER_API_KEY }} | ||
| WORLD_EXPLORER_API_KEY: ${{ secrets.WORLD_EXPLORER_API_KEY }} | ||
| CTC_EXPLORER_API_KEY: ${{ secrets.CTC_EXPLORER_API_KEY }} | ||
| PHAROS_EXPLORER_API_KEY: ${{ secrets.PHAROS_EXPLORER_API_KEY }} | ||
| HYPEEVM_EXPLORER_API_KEY: ${{ secrets.HYPEEVM_EXPLORER_API_KEY }} | ||
| SEIEVM_EXPLORER_API_KEY: ${{ secrets.SEIEVM_EXPLORER_API_KEY }} | ||
| KAIA_EXPLORER_API_KEY: ${{ secrets.KAIA_EXPLORER_API_KEY }} | ||
| IP_EXPLORER_API_KEY: ${{ secrets.IP_EXPLORER_API_KEY }} | ||
| HYPE_EVM_PRIVATE_KEY: ${{ secrets.HYPE_EVM_PRIVATE_KEY }} | ||
| KAVAEVM_EXPLORER_API_KEY: ${{ secrets.KAVAEVM_EXPLORER_API_KEY }} | ||
| PLUME_EXPLORER_API_KEY: ${{ secrets.PLUME_EXPLORER_API_KEY }} | ||
| FLOW_EXPLORER_API_KEY: ${{ secrets.FLOW_EXPLORER_API_KEY }} | ||
| MEGAETH_EXPLORER_API_KEY: ${{ secrets.MEGAETH_EXPLORER_API_KEY }} | ||
| HBAREVM_EXPLORER_API_KEY: ${{ secrets.HBAREVM_EXPLORER_API_KEY }} | ||
| opBNB_EXPLORER_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} | ||
| - name: Update release notes | ||
| uses: actions/github-script@v6 | ||
| with: | ||
| github-token: ${{secrets.GITHUB_TOKEN}} | ||
| script: | | ||
| const fs = require('fs'); | ||
| const path = require('path'); | ||
| var json; | ||
| var html = ""; | ||
| try { | ||
| json = JSON.parse(fs.readFileSync('./output.json').toString()); | ||
| for(const key in json){ | ||
| html += key+": "+json[key]+"<br>"; | ||
| } | ||
| } catch (err){ | ||
| console.log("json file not found."); | ||
| } | ||
| const response= await github.rest.repos.getReleaseByTag({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| tag: "${{ github.event.release.tag_name }}" | ||
| }); | ||
| github.rest.repos.updateRelease({ | ||
| owner: context.repo.owner, | ||
| repo: context.repo.repo, | ||
| release_id: response.data.id, | ||
| body: html | ||
| }); | ||