-
Notifications
You must be signed in to change notification settings - Fork 18
162 lines (135 loc) · 4.27 KB
/
solana-v2-rust.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
name: Gateway_V2 Program
on:
push:
paths:
- "solana/program_v2"
pull_request:
jobs:
program-lint:
name: Format and lint the Gateway V2 on-chain program on Rust ${{ matrix.rust }} and ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
rust: [ "stable" ]
os: [ ubuntu-latest ]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Use Rust ${{ matrix.rust }}
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
override: true
profile: minimal
components: rustfmt, clippy
- name: Run fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --manifest-path solana/program_v2/Cargo.toml --all -- --check
- name: Cache dependencies
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
./solana/program_v2/target
key: cargo-clippy-${{ hashFiles('solana/program_v2/Cargo.lock') }}
- name: Run Clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --manifest-path solana/program_v2/Cargo.toml --tests --workspace --all-targets -- --deny=warnings
program-unit-test:
name: Unit test program on Rust ${{ matrix.rust }} and ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
rust: [ "stable" ]
os: [ ubuntu-latest ]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Use Rust ${{ matrix.rust }}
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
override: true
profile: minimal
- name: Cache build dependencies
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
./solana/program_v2/target
key: cargo-test-${{ hashFiles('solana/program_v2/Cargo.lock') }}
- name: Run unit tests
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path solana/program_v2/Cargo.toml
anchor-e2e-test:
name: Build, Lint Client and test the Gateway V2 on-chain program on Solana ${{ matrix.solana }}, Rust ${{ matrix.rust }}, node ${{ matrix.node }}, and ${{ matrix.os }}
defaults:
run:
working-directory: ./solana/program_v2
runs-on: ${{ matrix.os }}
strategy:
matrix:
node: [ "16.x" ]
rust: [ "stable" ]
solana: [ "v1.14.16" ]
os: [ ubuntu-latest ]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Use Rust ${{ matrix.rust }}
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
override: true
profile: minimal
- name: Cache build dependencies
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
./solana/program_v2/target
key: cargo-build-${{ hashFiles('solana/program_v2/Cargo.lock') }}
- name: Cache Solana version
uses: actions/cache@v2
with:
path: |
~/.cache
key: solana-${{ matrix.solana }}
- name: Install Solana
run: |
sh -c "$(curl -sSfL https://release.solana.com/${{ matrix.solana }}/install)"
echo "$HOME/.local/share/solana/install/active_release/bin" >> $GITHUB_PATH
- name: Use Node ${{ matrix.node }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node }}
- name: Cache node dependencies
uses: actions/cache@v2
with:
path: |
./solana/program_v2/node_modules
key: yarn-client-${{ hashFiles('solana/program_v2/yarn.lock') }}
- name: Install
run: yarn install --ignore-scripts --frozen-lockfile
- name: Build program
run: yarn build
- name: Lint
run: yarn lint
- name: Run integration tests
run: |
yarn test
# yarn anchor build
# - name: Upload a single artifact
# uses: actions/upload-artifact@v3
# with:
# path: /solana/program_v2
# name: latest-program_v2_version