-
Notifications
You must be signed in to change notification settings - Fork 5
190 lines (181 loc) · 6.27 KB
/
ci.yaml
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
name: ci
on:
push:
branches: [ master ]
tags:
- 'v*'
pull_request:
branches: [ master ]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
security_audit:
name: security_audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install cargo-audit from crates.io
uses: baptiste0928/cargo-install@v3
with:
crate: cargo-audit
- run: cargo audit --ignore RUSTSEC-2022-0093 --ignore RUSTSEC-2023-0065 --ignore RUSTSEC-2024-0344
env:
ANCHOR_IDL_BUILD_SKIP_LINT: TRUE
code_gen:
name: code generation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt, clippy
toolchain: nightly-2024-07-25
- name: Regenerate Shank IDL files
run: cargo b --release -p jito-tip-router-shank-cli && ./target/release/jito-tip-router-shank-cli
- name: Verify no changed files
uses: tj-actions/verify-changed-files@v20
with:
fail-if-changed: true
fail-message: 'Unexpected changes in the shank IDL files. Please run `./target/release/jito-tip-router-shank-cli` to regenerate the files.'
- name: Set Node.js 22.x
uses: actions/setup-node@v3
with:
node-version: 22.x
- name: Run install
uses: borales/actions-yarn@v4
with:
cmd: install
- name: Generate kinobi IDL files
uses: borales/actions-yarn@v4
with:
cmd: generate-clients
- name: Verify no changed files
uses: tj-actions/verify-changed-files@v20
id: verify-changed-kinobi-files
- name: Run step only when any of the above files change.
if: steps.verify-changed-kinobi-files.outputs.files_changed == 'true'
env:
CHANGED_FILES: ${{ steps.verify-changed-kinobi-files.outputs.changed_files }}
run: |
echo "Changed files: $CHANGED_FILES"
echo "Unexpected changes in the client files. Please run `yarn generate-clients` to regenerate the files."
exit 1
lint:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt, clippy
toolchain: nightly-2024-07-25
- name: Install cargo-sort from crates.io
uses: baptiste0928/cargo-install@v3
with:
crate: cargo-sort
- run: cargo sort --workspace --check
- run: cargo fmt --all --check
- run: |
export ANCHOR_IDL_BUILD_SKIP_LINT=true
cargo clippy --all-features -- -D warnings -D clippy::all -D clippy::nursery -D clippy::integer_division -D clippy::arithmetic_side_effects -D clippy::style -D clippy::perf
env:
ANCHOR_IDL_BUILD_SKIP_LINT: true
build:
name: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: aarcangeli/[email protected]
with:
path: .cargo
filenames: programs.env
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: install solana toolsuite
run: sh -c "$(curl -sSfL https://release.solana.com/v1.18.22/install)"
- name: add to path
run: echo "/home/runner/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH
- name: Building programs
run: cargo-build-sbf
env:
TIP_ROUTER_PROGRAM_ID: ${{ env.TIP_ROUTER_PROGRAM_ID }}
SBF_OUT_DIR: ${{ github.workspace }}/target/sbf-solana-solana/release
ANCHOR_IDL_BUILD_SKIP_LINT: true
- name: Upload MEV Tip Distribution NCN program
uses: actions/upload-artifact@v4
with:
name: jito_tip_router_program.so
path: target/sbf-solana-solana/release/
if-no-files-found: error
# coverage:
# name: coverage
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: actions-rust-lang/setup-rust-toolchain@v1
# with:
# components: rustfmt, clippy
# toolchain: nightly-2024-07-25
# - name: Install cargo-llvm-cov
# uses: taiki-e/install-action@cargo-llvm-cov
# - name: Generate code coverage
# run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
# env:
# TIP_ROUTER_PROGRAM_ID: Fv9aHCgvPQSr4jg9W8eTS6Ys1SNmh2qjyATrbsjEMaSH
# - name: Upload coverage to Codecov
# uses: codecov/[email protected]
# with:
# token: ${{ secrets.CODECOV_TOKEN }}
# slug: jito-foundation/jito-tip-router
# fail_ci_if_error: true
test_sbf:
name: cargo test
runs-on: ubuntu-latest
needs:
- build
env:
ANCHOR_IDL_BUILD_SKIP_LINT: true
steps:
- uses: actions/checkout@v4
- uses: aarcangeli/[email protected]
with:
path: .cargo
filenames: programs.env
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Download MEV Tip Distribution NCN program
uses: actions/download-artifact@v4
with:
name: jito_tip_router_program.so
path: integration_tests/tests/fixtures/
- uses: taiki-e/install-action@nextest
# Test the non-BPF tests and the BPF tests separately
- run: cargo nextest run --all-features -E 'not test(bpf)'
- run: cargo nextest run --all-features -E 'test(bpf)'
env:
SBF_OUT_DIR: ${{ github.workspace }}/integration_tests/tests/fixtures
# create_release:
# name: Create Release
# needs:
# - build
# - test_sbf
# runs-on: ubuntu-latest
# if: startsWith(github.ref, 'refs/tags/')
# steps:
# - name: Download all artifacts
# uses: actions/download-artifact@v4
# with:
# merge-multiple: true
# - run: ls -lh
# - name: Release
# uses: softprops/action-gh-release@v2
# if: startsWith(github.ref, 'refs/tags/')
# with:
# files: |
# *.so
# fail_on_unmatched_files: true