-
Notifications
You must be signed in to change notification settings - Fork 118
150 lines (140 loc) · 4.21 KB
/
contracts-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
# Copyright (C) 2023, Ava Labs, Inc. All rights reserved.
# See the file LICENSE for licensing terms.
name: Contracts CI
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
jobs:
cargo-fmt:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust
uses: ./.github/actions/install-rust
with:
cache: false
- uses: Swatinem/rust-cache@v2
with:
# we just want to cache the tools for this one
cache-targets: false
# need to cache "all-crates" to get the tools
cache-all-crates: true
# caching isn't actually for dependencies but the tools
# so it doesn't matter if the job passes or fails
cache-on-failure: true
- uses: taiki-e/install-action@v2
with:
tool: taplo-cli
- name: Run static analysis tests
run: cargo fmt --all --check
- name: Check TOML files
run: taplo fmt --check
- name: print diff
if: failure()
run: |
cargo fmt --all
taplo fmt
git diff --color=always
cargo-doc:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: ./.github/actions/install-go
- name: Install Rust
uses: ./.github/actions/install-rust
with:
targets: wasm32-unknown-unknown
cache: false
- name: Run doc tests
run: RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features --document-private-items --all
cargo-clippy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: ./.github/actions/install-go
- name: Install Rust
uses: ./.github/actions/install-rust
with:
targets: wasm32-unknown-unknown
- name: Run static analysis tests
shell: bash
run: cargo clippy --all --all-features --tests --benches --examples -- -D warnings
cargo-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Go
uses: ./.github/actions/install-go
- name: Install Rust
uses: ./.github/actions/install-rust
with:
targets: wasm32-unknown-unknown
- name: Run unit tests
run: cargo test --all-features --all
cross-tests:
runs-on: ubuntu-latest
services:
docker:
image: docker:19.03.12
options: --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Rust
uses: ./.github/actions/install-rust
- uses: Swatinem/rust-cache@v2
with:
# we just want to cache the tools for this one
cache-targets: false
# need to cache "all-crates" to get the tools
cache-all-crates: true
# caching isn't actually for dependencies but the tools
# so it doesn't matter if the job passes or fails
cache-on-failure: true
- uses: taiki-e/install-action@v2
with:
tool: cross
- name: Run cross tests
run: |
cross -v test -p wasmlanche --target=wasm32-unknown-emscripten
go-test:
runs-on: ubuntu-20.04-32
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
- name: Install Rust
uses: ./.github/actions/install-rust
with:
targets: wasm32-unknown-unknown
cache: false
- name: Run unit tests
shell: bash
run: go test -v -race ./x/contracts/...
go-bench:
runs-on: ubuntu-20.04-32
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
- name: Install Rust
uses: ./.github/actions/install-rust
with:
targets: wasm32-unknown-unknown
cache: false
- name: Run unit tests
shell: bash
run: go test -v -benchmem -run=^$ -bench=. -benchtime=1x ./x/contracts/...