Deploy Batcher Contract and Update Release #180
Workflow file for this run
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 Batcher Contract and Update Release | |
| on: | |
| workflow_dispatch: | |
| jobs: | |
| lint-and-test: | |
| environment: dev | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| 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 }} | |
| CARTIO_BERA_EXPLORER_API_KEY: ${{ secrets.CARTIO_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 }} | |
| 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@v7 | |
| 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|flr|tflr|sgb|tsgb|txdc|xdc|twemix|wemix|tmon|mon|tstt|stt|tsoneium|soneium|tworld|world)$/; | |
| const matchedNetwork = tag.match(regex); | |
| if (!matchedNetwork) { | |
| console.log("No match found for the network name, defaulting to 'hteth'."); | |
| return "hteth"; | |
| } | |
| return matchedNetwork[1]; | |
| deploy-batcher-contract-to-test: | |
| runs-on: ubuntu-latest | |
| needs: [lint-and-test, get-network] | |
| 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 == 'tcoredao' ) || (needs.get-network.outputs.network == 'toas' ) || (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' )}} | |
| environment: testnet | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 16.x | |
| cache: 'npm' | |
| - run: npm install | |
| - run: npm run deploy-batcher --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_HOLESKY_API_KEY: ${{ secrets.QUICKNODE_ETH_HOLESKY_API_KEY }} | |
| QUICKNODE_ARBITRUM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_SEPOLIA_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 }} | |
| CARTIO_BERA_EXPLORER_API_KEY: ${{ secrets.CARTIO_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 }} | |
| - name: Update release notes | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| script: | | |
| const updateRelease = require('./utils/updateRelease.js'); | |
| await updateRelease({ github, context }); | |
| deploy-batcher-contract-to-prod: | |
| runs-on: ubuntu-latest | |
| needs: [lint-and-test, get-network] | |
| 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 == 'sgb' ) || (needs.get-network.outputs.network == 'flr' ) || (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' )}} | |
| environment: mainnet | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Use Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 16.x | |
| cache: 'npm' | |
| - run: npm install | |
| - run: npm run deploy-batcher --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_HOLESKY_API_KEY: ${{ secrets.QUICKNODE_ETH_HOLESKY_API_KEY }} | |
| QUICKNODE_ARBITRUM_SEPOLIA_API_KEY: ${{ secrets.QUICKNODE_ARBITRUM_SEPOLIA_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 }} | |
| CARTIO_BERA_EXPLORER_API_KEY: ${{ secrets.CARTIO_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 }} | |
| - name: Update release notes | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| script: | | |
| const updateRelease = require('./utils/updateRelease.js'); | |
| await updateRelease({ github, context }); |