generated from tangle-network/blueprint-template
-
Notifications
You must be signed in to change notification settings - Fork 0
199 lines (160 loc) · 5.48 KB
/
ci.yml
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
name: CI
on:
pull_request:
branches: [main]
push:
branches: [main]
workflow_dispatch:
concurrency:
group: rust-validation-${{ github.head_ref }}
cancel-in-progress: true
env:
RUST_BACKTRACE: full
RUST_LOG: "gadget=debug"
CARGO_TERM_COLOR: always
TANGLE_RELEASE: "v1.2.3"
SIGNER: "//Alice"
EVM_SIGNER: "0xcb6df9de1efca7a3998a8ead4e02159d5fa99c3e0d4fd6432667390bb4726854"
jobs:
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
toolchain: nightly-2024-10-13
components: rustfmt
- name: Check Formatting
run: cargo fmt -- --check
lint:
timeout-minutes: 120
name: Clippy
runs-on: ubuntu-latest
steps:
- name: checkout code
uses: actions/checkout@v4
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- name: Verify Forge installation
run: forge --version
- name: Install Solidity Dependencies
run: forge soldeer update -d
- uses: dtolnay/rust-toolchain@nightly
with:
toolchain: nightly-2024-10-13
components: clippy
- uses: swatinem/rust-cache@v2
with:
cache-on-failure: "true"
- name: Forge build
run: forge update && forge build
- uses: taiki-e/github-actions/free-device-space@main
- name: Run Clippy
run: cargo clippy --tests --examples -- -D warnings
test:
timeout-minutes: 90
name: Unit tests
runs-on: ubuntu-latest
steps:
- name: checkout code
uses: actions/checkout@v4
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- name: Verify Forge installation
run: forge --version
- name: Install Solidity Dependencies
run: forge soldeer update -d
- uses: dtolnay/rust-toolchain@nightly
with:
toolchain: nightly-2024-10-13
components: clippy
- uses: swatinem/rust-cache@v2
with:
cache-on-failure: "true"
- uses: taiki-e/install-action@v2
with:
tool: nextest
- name: Forge build
run: forge update && forge build
- uses: taiki-e/github-actions/free-device-space@main
- name: tests
run: cargo nextest run
e2e:
timeout-minutes: 90
name: End-to-End tests
runs-on: ubuntu-latest
steps:
- name: checkout code
uses: actions/checkout@v4
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- name: Verify Forge installation
run: forge --version
- name: Install Solidity Dependencies
run: forge soldeer update -d
- uses: dtolnay/rust-toolchain@nightly
with:
toolchain: nightly-2024-10-13
components: clippy
- uses: swatinem/rust-cache@v2
with:
cache-on-failure: "true"
- uses: taiki-e/install-action@v2
with:
tool: nextest
- name: Forge build
run: forge update && forge build
- name: Download Tangle Node
uses: robinraju/release-downloader@v1
with:
repository: "tangle-network/tangle"
# A flag to set the download target as latest release
# The default value is 'false'
latest: false
# A flag to download from prerelease. It should be combined with latest flag.
# The default value is 'false'
preRelease: false
# The github tag. e.g: v1.0.1
# Download assets from a specific tag/version
tag: ${{ env.TANGLE_RELEASE }}
# The name of the file to download.
# Use this field only to specify filenames other than tarball or zipball, if any.
# Supports wildcard pattern (eg: '*', '*.deb', '*.zip' etc..)
fileName: "tangle-testnet-manual-seal-linux-amd64"
# Download the attached tarball (*.tar.gz)
tarBall: false
# Download the attached zipball (*.zip)
zipBall: false
# A flag to set if the downloaded assets are archives and should be extracted
# Checks all downloaded files if they end with zip, tar or tar.gz and extracts them, if true.
# Prints a warning if enabled but file is not an archive - but does not fail.
extract: true
# Github access token to download files from private repositories
# https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets
# eg: token: ${{ secrets.MY_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Tangle Node
run: |
mkdir -p $HOME/.local/bin
# Check if the downloaded file is executable
ls -l tangle-testnet-manual-seal-linux-amd64
# Move the downloaded file to the bin directory
mv tangle-testnet-manual-seal-linux-amd64 $HOME/.local/bin/tangle
chmod +x $HOME/.local/bin/tangle
# Add the Tangle node to the PATH
echo "$HOME/.local/bin" >> $GITHUB_PATH
# Check the Tangle node version
tangle --version
- uses: taiki-e/github-actions/free-device-space@main
- name: Build Blueprint
run: cargo build --features e2e
- name: Run E2E tests
run: cargo nextest run e2e --features e2e --nocapture