forked from thesis/acre-ledger-app
-
Notifications
You must be signed in to change notification settings - Fork 0
143 lines (122 loc) · 3.71 KB
/
ci-workflow.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
name: CI
on:
workflow_dispatch:
push:
branches:
- master
- main
- develop
pull_request:
branches:
- master
- main
- develop
jobs:
job_build:
name: Compilation for X, S+, Stax and Flex
strategy:
matrix:
include:
- model: nanox
SDK: "$NANOX_SDK"
- model: nanosp
SDK: "$NANOSP_SDK"
- model: stax
SDK: "$STAX_SDK"
- model: flex
SDK: "$FLEX_SDK"
runs-on: ubuntu-latest
container:
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest
steps:
- name: Clone
uses: actions/checkout@v2
- name: Build
run: |
make DEBUG=0 COIN=acre BOLOS_SDK=${{ matrix.SDK }} && mv bin/ acre-bin/
make clean
make DEBUG=0 COIN=acre_testnet BOLOS_SDK=${{ matrix.SDK }} && mv bin/ acre-testnet-bin/
- name: Upload Acre app binary
uses: actions/upload-artifact@v4
with:
name: acre-app-${{ matrix.model }}
path: acre-bin
- name: Upload Acre Testnet app binary
uses: actions/upload-artifact@v4
with:
name: acre-testnet-app-${{ matrix.model }}
path: acre-testnet-bin
job_unit_test:
name: Unit test
needs: job_build
runs-on: ubuntu-latest
container:
image: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest
steps:
- name: Clone
uses: actions/checkout@v2
- name: Build unit tests
run: |
cd unit-tests/
cmake -Bbuild -H. && make -C build && make -C build test
- name: Generate code coverage
run: |
cd unit-tests/
lcov --directory . -b "$(realpath build/)" --capture --initial -o coverage.base && \
lcov --rc lcov_branch_coverage=1 --directory . -b "$(realpath build/)" --capture -o coverage.capture && \
lcov --directory . -b "$(realpath build/)" --add-tracefile coverage.base --add-tracefile coverage.capture -o coverage.info && \
lcov --directory . -b "$(realpath build/)" --remove coverage.info '*/unit-tests/*' -o coverage.info && \
genhtml coverage.info -o coverage
- uses: actions/upload-artifact@v4
with:
name: code-coverage
path: unit-tests/coverage
# - name: Upload to codecov.io
# uses: codecov/codecov-action@v3
# with:
# token: ${{ secrets.CODECOV_TOKEN }}
# files: ./unit-tests/coverage.info
# flags: unittests
# name: app-acre
# fail_ci_if_error: true
# verbose: true
- name: HTML documentation
run: doxygen .doxygen/Doxyfile
- uses: actions/upload-artifact@v4
with:
name: documentation
path: doc/html
job_test_mainnet:
name: Tests on mainnet
strategy:
matrix:
include:
- model: nanox
- model: nanosp
- model: stax
- model: flex
needs: job_build
runs-on: ubuntu-latest
container:
image: ghcr.io/ledgerhq/app-bitcoin-new/speculos-bitcoin:latest
ports:
- 1234:1234
- 9999:9999
- 40000:40000
- 41000:41000
- 42000:42000
- 43000:43000
options: --entrypoint /bin/bash
steps:
- name: Clone
uses: actions/checkout@v2
- name: Download Acre app binary
uses: actions/download-artifact@v4
with:
name: acre-app-${{matrix.model}}
path: bin
- name: Run tests
run: |
cd tests_mainnet
pip install -r requirements.txt
PYTHONPATH=$PYTHONPATH:/speculos pytest --headless --model=${{ matrix.model }} --timeout=300