Skip to content

Commit 7b32b17

Browse files
committed
Split mainnets and testnets
1 parent c1a8dc0 commit 7b32b17

File tree

2 files changed

+92
-17
lines changed

2 files changed

+92
-17
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Deploy mainnets
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
12+
concurrency:
13+
group: deploy-mainnets-${{ github.workflow }}-${{ github.ref }}
14+
cancel-in-progress: false
15+
16+
jobs:
17+
discover-matrix:
18+
name: Discover mainnet matrix
19+
runs-on: ubuntu-latest
20+
outputs:
21+
matrix: ${{ steps.build-matrix.outputs.matrix }}
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v4
25+
26+
- name: Setup Node.js
27+
uses: actions/setup-node@v4
28+
with:
29+
node-version: 20
30+
31+
- name: Setup pnpm
32+
uses: pnpm/action-setup@v4
33+
with:
34+
version: 9
35+
36+
- name: Install dependencies
37+
run: |
38+
pnpm install --frozen-lockfile --ignore-scripts
39+
40+
- id: build-matrix
41+
name: Build matrix from Catapult networks (mainnets only)
42+
shell: bash
43+
run: |
44+
set -euo pipefail
45+
46+
CHAIN_IDS=$(pnpm exec catapult list networks --simple-chain-ids --only-non-testnets)
47+
48+
MATRIX_ITEMS=()
49+
while IFS= read -r CHAIN_ID; do
50+
[[ -z "${CHAIN_ID}" ]] && continue
51+
NETWORK_NAME=$(pnpm exec catapult utils chain-id-to-name "${CHAIN_ID}")
52+
NETWORK_NAME_ESCAPED=${NETWORK_NAME//"/\"}
53+
MATRIX_ITEMS+=("{\"chainId\": ${CHAIN_ID}, \"networkName\": \"${NETWORK_NAME_ESCAPED}\"}")
54+
done <<< "${CHAIN_IDS}"
55+
56+
if [[ ${#MATRIX_ITEMS[@]} -eq 0 ]]; then
57+
echo "No mainnets discovered" >&2
58+
echo "matrix={\"include\":[]}" >> "$GITHUB_OUTPUT"
59+
exit 0
60+
fi
61+
62+
printf -v MATRIX_JSON '{"include":[%s]}' "$(IFS=,; echo "${MATRIX_ITEMS[*]}")"
63+
64+
echo "Discovered matrix: ${MATRIX_JSON}"
65+
echo "matrix=${MATRIX_JSON}" >> "$GITHUB_OUTPUT"
66+
67+
deploy:
68+
name: "Deploy to ${{ matrix.networkName }} (${{ matrix.chainId }})"
69+
needs: discover-matrix
70+
runs-on: ubuntu-latest
71+
environment:
72+
name: mainnet
73+
strategy:
74+
fail-fast: false
75+
matrix: ${{ fromJSON(needs.discover-matrix.outputs.matrix) }}
76+
steps:
77+
- name: Placeholder
78+
env:
79+
NETWORK_NAME: ${{ matrix.networkName }}
80+
CHAIN_ID: ${{ matrix.chainId }}
81+
run: |
82+
echo "TODO: mainnet deployment for $NETWORK_NAME ($CHAIN_ID)"
83+
84+
Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Deploy per network
1+
name: Deploy testnets
22

33
on:
44
push:
@@ -10,12 +10,12 @@ permissions:
1010
contents: read
1111

1212
concurrency:
13-
group: deploy-per-network-${{ github.workflow }}-${{ github.ref }}
13+
group: deploy-testnets-${{ github.workflow }}-${{ github.ref }}
1414
cancel-in-progress: false
1515

1616
jobs:
1717
discover-matrix:
18-
name: Discover networks matrix
18+
name: Discover testnet matrix
1919
runs-on: ubuntu-latest
2020
outputs:
2121
matrix: ${{ steps.build-matrix.outputs.matrix }}
@@ -38,32 +38,23 @@ jobs:
3838
pnpm install --frozen-lockfile --ignore-scripts
3939
4040
- id: build-matrix
41-
name: Build matrix from Catapult networks
41+
name: Build matrix from Catapult networks (testnets only)
4242
shell: bash
4343
run: |
4444
set -euo pipefail
4545
46-
if [[ "${GITHUB_EVENT_NAME}" == "pull_request" || "${GITHUB_REF_NAME}" != "master" ]]; then
47-
FILTER="--only-testnets"
48-
else
49-
FILTER=""
50-
fi
51-
52-
# List chain IDs (one per line)
53-
CHAIN_IDS=$(pnpm exec catapult list networks --simple-chain-ids ${FILTER})
46+
CHAIN_IDS=$(pnpm exec catapult list networks --simple-chain-ids --only-testnets)
5447
55-
# Build JSON array for matrix: [{"chainId": 1, "networkName": "Ethereum"}, ...]
5648
MATRIX_ITEMS=()
5749
while IFS= read -r CHAIN_ID; do
5850
[[ -z "${CHAIN_ID}" ]] && continue
5951
NETWORK_NAME=$(pnpm exec catapult utils chain-id-to-name "${CHAIN_ID}")
60-
# Escape double quotes in network name just in case
61-
NETWORK_NAME_ESCAPED=${NETWORK_NAME//\"/\\\"}
52+
NETWORK_NAME_ESCAPED=${NETWORK_NAME//"/\"}
6253
MATRIX_ITEMS+=("{\"chainId\": ${CHAIN_ID}, \"networkName\": \"${NETWORK_NAME_ESCAPED}\"}")
6354
done <<< "${CHAIN_IDS}"
6455
6556
if [[ ${#MATRIX_ITEMS[@]} -eq 0 ]]; then
66-
echo "No networks discovered" >&2
57+
echo "No testnets discovered" >&2
6758
echo "matrix={\"include\":[]}" >> "$GITHUB_OUTPUT"
6859
exit 0
6960
fi
@@ -86,6 +77,6 @@ jobs:
8677
NETWORK_NAME: ${{ matrix.networkName }}
8778
CHAIN_ID: ${{ matrix.chainId }}
8879
run: |
89-
echo "TODO: implement deployment for $NETWORK_NAME ($CHAIN_ID)"
80+
echo "TODO: testnet deployment for $NETWORK_NAME ($CHAIN_ID)"
9081
9182

0 commit comments

Comments
 (0)