-
Notifications
You must be signed in to change notification settings - Fork 28
130 lines (125 loc) · 4.15 KB
/
main.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
name: CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
CARGO_TERM_COLOR: always
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: cargo fmt --all -- --config format_code_in_doc_comments=true --check
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
- name: Set profile
run: rustup set profile minimal && rustup component add clippy
- name: Build
run: cargo build
- name: Clippy
run: cargo clippy --all-features -- -D warnings
test-emulators:
runs-on: ubuntu-20.04
strategy:
matrix:
rust:
- version: 1.66.1 # STABLE
features: miniscript
- version: 1.48.0 # MSRV
features: miniscript
emulator:
- name: trezor
- name: ledger
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build and push
uses: docker/build-push-action@v3
with:
context: ci/
file: ci/Dockerfile.${{ matrix.emulator.name }}
tags: hwi/${{ matrix.emulator.name }}_emulator:latest
load: true
cache-from: type=gha
cache-to: type=gha
- name: Run simulator image
run: docker run --name simulator --network=host hwi/${{ matrix.emulator.name }}_emulator &
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
cache: 'pip'
- name: Install python dependencies
run: pip install -r requirements.txt
- name: Set default toolchain
run: rustup default ${{ matrix.rust.version }}
- name: Set profile
run: rustup set profile minimal
- name: Update toolchain
run: rustup update
- if: ${{matrix.rust.version}} = 1.48.0
name: Pin dependencies that use edition 2021
# serde 1.0.157 uses syn 2.0 which requires edition 2021.
# serde_json depends on 1.0.66
# once_cell v0.15.0 uses edition 2021.
# quote 1.0.31 uses proc-macro2 1.0.66, which requires edition 2021
run: cargo update -p serde_json --precise 1.0.99 && cargo update -p serde --precise 1.0.156 && cargo update -p once_cell --precise 1.14.0 && cargo update -p quote --precise 1.0.30 && cargo update -p proc-macro2 --precise 1.0.65
- name: Test
run: cargo test --features ${{ matrix.rust.features }}
- name: Wipe
run: cargo test test_wipe_device -- --ignored
test-readme-examples:
runs-on: ubuntu-20.04
steps:
- name: checkout
uses: actions/checkout@v2
- name: cache
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-test-md-docs-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
- name: Build simulator image
run: docker build -t hwi/ledger_emulator ./ci -f ci/Dockerfile.ledger
- name: Run simulator image
run: docker run --name simulator --network=host hwi/ledger_emulator &
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
cache: 'pip'
- name: Install python dependencies
run: pip install -r requirements.txt
- name: Set default toolchain
run: rustup default nightly
- name: Set profile
run: rustup set profile minimal
- name: Update toolchain
run: rustup update
- name: Test
run: cargo test --features doctest -- doctest::ReadmeDoctests