-
Notifications
You must be signed in to change notification settings - Fork 25
176 lines (155 loc) · 6.07 KB
/
differential-tests.yml
File metadata and controls
176 lines (155 loc) · 6.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
name: Verify Reproducible Builds
on:
workflow_call:
env:
# The compiler modes to use for compilation by retester.
MODES: "Y M0 S+, Y M3 S+, Y Mz S+"
SOLC_VERSION: "0.8.34"
jobs:
build:
uses: ./.github/workflows/reusable-build.yml
with:
is_release: false
retention_days: 1
compile-and-export-hashes-native:
needs: build
strategy:
fail-fast: false
matrix:
include:
- platform: linux-x86_64
target: x86_64-unknown-linux-musl
runner: ubuntu-24.04
- platform: macos-arm64
target: universal-apple-darwin
runner: macos-15
- platform: macos-x86_64
target: universal-apple-darwin
runner: macos-15-intel
- platform: windows-x86_64
target: x86_64-pc-windows-msvc
runner: windows-2022
runs-on: ${{ matrix.runner }}
steps:
# For some deeply nested contracts in `resolc-compiler-tests`, Windows
# will generate a "Filename too long" error. This step enables long paths.
- name: Enable Git Long Paths (Windows)
if: ${{ runner.os == 'Windows' }}
run: git config --system core.longpaths true
- name: Checkout revive
uses: actions/checkout@v4
with:
path: revive
submodules: recursive
- name: Download Binary
uses: actions/download-artifact@v4
with:
name: resolc-${{ matrix.target }}
path: resolc-bin
- name: Make resolc Executable
shell: bash
run: chmod +x "resolc-bin/resolc-${{ matrix.target }}${{ runner.os == 'Windows' && '.exe' || '' }}"
- name: Compile Contracts
id: compile
uses: ./revive/revive-differential-tests/.github/actions/compile-contracts
with:
revive-differential-tests-path: revive/revive-differential-tests
resolc-path: resolc-bin/resolc-${{ matrix.target }}${{ runner.os == 'Windows' && '.exe' || '' }}
solc-version: ${{ env.SOLC_VERSION }}
modes: ${{ env.MODES }}
upload-artifact-name: compilation-report-${{ matrix.platform }}
- name: Export Bytecode Hashes
uses: ./revive/revive-differential-tests/.github/actions/export-bytecode-hashes
with:
revive-differential-tests-path: revive/revive-differential-tests
report-path: ${{ steps.compile.outputs.report-path }}
remove-prefix: ${{ steps.compile.outputs.contracts-source-prefix }}
platform-label: ${{ matrix.platform }}
upload-artifact-name: hashes-${{ matrix.platform }}
compare-hashes:
needs: compile-and-export-hashes-native
runs-on: ubuntu-24.04
steps:
- name: Checkout revive
uses: actions/checkout@v4
with:
path: revive
submodules: true
- name: Compare Bytecode Hashes
uses: ./revive/revive-differential-tests/.github/actions/compare-bytecode-hashes
with:
revive-differential-tests-path: revive/revive-differential-tests
hash-artifact-names: "hashes-linux-x86_64, hashes-macos-arm64, hashes-macos-x86_64, hashes-windows-x86_64"
modes: ${{ env.MODES }}
upload-artifact-name: hash-comparison-result
run-e2e-tests:
needs: build
runs-on: parity-large
timeout-minutes: 75
env:
# Commit SHA that produced the polkadot-sdk crate pinned in Cargo.toml,
# obtained from the crate's .cargo_vcs_info.json via:
# curl -sL https://crates.io/api/v1/crates/polkadot-sdk/<VERSION>/download | tar xzO '*/.cargo_vcs_info.json'
# Current version: 2603.0.0
POLKADOT_SDK_REF: "c56b086a3cfcb3a48b75fd1ef9c77ad9b7408b95"
RUSTFLAGS: "-Awarnings"
steps:
- name: Checkout revive
uses: actions/checkout@v4
with:
path: revive
submodules: recursive
- name: Download Binary
uses: actions/download-artifact@v4
with:
name: resolc-x86_64-unknown-linux-musl
path: ./resolc-bin
- name: Make resolc Executable
shell: bash
run: chmod +x ./resolc-bin/resolc-x86_64-unknown-linux-musl
- name: Checkout Polkadot SDK
uses: actions/checkout@v4
with:
repository: paritytech/polkadot-sdk
ref: ${{ env.POLKADOT_SDK_REF }}
path: polkadot-sdk
submodules: recursive
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libssl-dev protobuf-compiler llvm clang libclang-dev
- name: Download forklift
run: |
curl -fsSLo forklift https://github.com/paritytech/forklift/releases/download/0.15.0/forklift_0.15.0_linux_amd64
chmod +x forklift
sudo mv forklift /usr/local/bin/
- name: Configure forklift
run: |
mkdir -p .forklift
cp polkadot-sdk/.forklift/config.toml .forklift/config.toml
- name: Set Up Rust Toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: "1.90.0"
target: "wasm32-unknown-unknown"
components: "rust-src"
rustflags: ""
- name: Run Differential E2E Tests
uses: ./revive/revive-differential-tests/.github/actions/run-differential-tests
with:
revive-differential-tests-path: revive/revive-differential-tests
polkadot-sdk-path: ./polkadot-sdk
cargo-command: "forklift cargo"
platform: revive-dev-node-polkavm-resolc
resolc-path: ./resolc-bin/resolc-x86_64-unknown-linux-musl
solc-version: ${{ env.SOLC_VERSION }}
expectations-file-path: ./revive/.github/assets/revive-dev-node-polkavm-resolc.json
# Sentinel job that depends on the jobs we want to allow completing (instead of
# being canceled once the other job chains complete). Thus, run-e2e-tests
# will always run even if compare-hashes finishes first, and vice versa.
wait-for-jobs:
if: ${{ always() }}
needs: [compare-hashes, run-e2e-tests]
runs-on: ubuntu-24.04
steps:
- run: echo "All jobs finished"