1717 pull-requests : ' read'
1818 runs-on : ubuntu-latest
1919 outputs :
20- host-contracts : ${{ steps.filter.outputs.host-contracts }}
21- gateway-contracts : ${{ steps.filter.outputs.gateway-contracts }}
20+ packages : ${{ steps.filter.outputs.changes }}
2221 steps :
2322 - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
2423 with :
@@ -30,19 +29,30 @@ jobs:
3029 host-contracts:
3130 - .github/workflows/contracts-upgrade-hygiene.yml
3231 - ci/check-upgrade-hygiene.sh
32+ - ci/stubs/host-contracts/**
3333 - host-contracts/**
3434 gateway-contracts:
3535 - .github/workflows/contracts-upgrade-hygiene.yml
3636 - ci/check-upgrade-hygiene.sh
37+ - ci/stubs/gateway-contracts/**
3738 - gateway-contracts/**
3839
39- host-contracts :
40- name : contracts-upgrade-hygiene/host-contracts
40+ check :
41+ name : contracts-upgrade-hygiene/${{ matrix.package }}
4142 needs : check-changes
42- if : ${{ needs.check-changes.outputs.host-contracts == 'true ' }}
43+ if : ${{ needs.check-changes.outputs.packages != '[] ' }}
4344 permissions :
4445 contents : ' read'
4546 runs-on : ubuntu-latest
47+ strategy :
48+ fail-fast : false
49+ matrix :
50+ package : ${{ fromJSON(needs.check-changes.outputs.packages) }}
51+ include :
52+ - package : host-contracts
53+ extra-deps : forge soldeer install
54+ - package : gateway-contracts
55+ extra-deps : ' '
4656 steps :
4757 - name : Checkout PR branch
4858 uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -59,93 +69,24 @@ jobs:
5969 - name : Install Foundry
6070 uses : foundry-rs/foundry-toolchain@82dee4ba654bd2146511f85f0d013af94670c4de # v1.4.0
6171
62- - name : Install PR dependencies
63- working-directory : host-contracts
72+ - name : Install dependencies
6473 run : |
65- npm ci
66- forge soldeer install
67-
68- - name : Install main dependencies
69- working-directory : main-branch/host-contracts
70- run : |
71- npm ci
72- forge soldeer install
73-
74- - name : Align compilation settings
75- run : cp host-contracts/foundry.toml main-branch/host-contracts/foundry.toml
76-
77- - name : Generate address stubs
78- run : |
79- # Host contracts need addresses/FHEVMHostAddresses.sol (generated at deploy time).
80- # Create identical stubs in both copies so bytecode comparison is not affected.
81- mkdir -p host-contracts/addresses main-branch/host-contracts/addresses
82- cat > /tmp/FHEVMHostAddresses.sol << 'SOL'
83- // SPDX-License-Identifier: BSD-3-Clause-Clear
84- pragma solidity ^0.8.24;
85- address constant aclAdd = 0x0000000000000000000000000000000000000001;
86- address constant fhevmExecutorAdd = 0x0000000000000000000000000000000000000002;
87- address constant kmsVerifierAdd = 0x0000000000000000000000000000000000000003;
88- address constant inputVerifierAdd = 0x0000000000000000000000000000000000000004;
89- address constant hcuLimitAdd = 0x0000000000000000000000000000000000000005;
90- address constant pauserSetAdd = 0x0000000000000000000000000000000000000006;
91- SOL
92- cp /tmp/FHEVMHostAddresses.sol host-contracts/addresses/FHEVMHostAddresses.sol
93- cp /tmp/FHEVMHostAddresses.sol main-branch/host-contracts/addresses/FHEVMHostAddresses.sol
94-
95- - name : Run upgrade hygiene check
96- run : ./ci/check-upgrade-hygiene.sh main-branch/host-contracts host-contracts
97-
98- gateway-contracts :
99- name : contracts-upgrade-hygiene/gateway-contracts
100- needs : check-changes
101- if : ${{ needs.check-changes.outputs.gateway-contracts == 'true' }}
102- permissions :
103- contents : ' read'
104- runs-on : ubuntu-latest
105- steps :
106- - name : Checkout PR branch
107- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
108- with :
109- persist-credentials : ' false'
110-
111- - name : Checkout main branch
112- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
113- with :
114- ref : main
115- path : main-branch
116- persist-credentials : ' false'
117-
118- - name : Install Foundry
119- uses : foundry-rs/foundry-toolchain@82dee4ba654bd2146511f85f0d013af94670c4de # v1.4.0
120-
121- - name : Install PR dependencies
122- working-directory : gateway-contracts
123- run : npm ci
124-
125- - name : Install main dependencies
126- working-directory : main-branch/gateway-contracts
127- run : npm ci
74+ npm --prefix ${{ matrix.package }} ci
75+ npm --prefix main-branch/${{ matrix.package }} ci
76+ if [ -n "${{ matrix.extra-deps }}" ]; then
77+ (cd ${{ matrix.package }} && ${{ matrix.extra-deps }})
78+ (cd main-branch/${{ matrix.package }} && ${{ matrix.extra-deps }})
79+ fi
12880
12981 - name : Align compilation settings
130- run : cp gateway-contracts /foundry.toml main-branch/gateway-contracts /foundry.toml
82+ run : cp ${{ matrix.package }} /foundry.toml main-branch/${{ matrix.package }} /foundry.toml
13183
13284 - name : Generate address stubs
13385 run : |
134- # Gateway contracts need addresses/GatewayAddresses.sol (generated at deploy time).
135- mkdir -p gateway-contracts/addresses main-branch/gateway-contracts/addresses
136- cat > /tmp/GatewayAddresses.sol << 'SOL'
137- // SPDX-License-Identifier: BSD-3-Clause-Clear
138- pragma solidity ^0.8.24;
139- address constant gatewayConfigAddress = 0x0000000000000000000000000000000000000001;
140- address constant decryptionAddress = 0x0000000000000000000000000000000000000002;
141- address constant ciphertextCommitsAddress = 0x0000000000000000000000000000000000000003;
142- address constant inputVerificationAddress = 0x0000000000000000000000000000000000000004;
143- address constant kmsGenerationAddress = 0x0000000000000000000000000000000000000005;
144- address constant protocolPaymentAddress = 0x0000000000000000000000000000000000000006;
145- address constant pauserSetAddress = 0x0000000000000000000000000000000000000007;
146- SOL
147- cp /tmp/GatewayAddresses.sol gateway-contracts/addresses/GatewayAddresses.sol
148- cp /tmp/GatewayAddresses.sol main-branch/gateway-contracts/addresses/GatewayAddresses.sol
86+ for dir in ${{ matrix.package }} main-branch/${{ matrix.package }}; do
87+ mkdir -p "$dir/addresses"
88+ cp ci/stubs/${{ matrix.package }}/*.sol "$dir/addresses/"
89+ done
14990
15091 - name : Run upgrade hygiene check
151- run : ./ci/check-upgrade-hygiene.sh main-branch/gateway-contracts gateway-contracts
92+ run : ./ci/check-upgrade-hygiene.sh main-branch/${{ matrix.package }} ${{ matrix.package }}
0 commit comments