-
Notifications
You must be signed in to change notification settings - Fork 152
214 lines (207 loc) · 6.9 KB
/
documentation.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
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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# matth-x/MicroOcpp
# Copyright Matthias Akstaller 2019 - 2024
# MIT License
name: Documentation
on:
push:
branches:
- main
pull_request:
permissions:
contents: write
jobs:
build_simulator:
name: Build Simulator
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- uses: actions/cache@v2
with:
key: ${{ github.ref }}
path: .cache
- name: Get build tools
run: |
sudo apt update
sudo apt install cmake libssl-dev build-essential
- name: Checkout Simulator
uses: actions/checkout@v3
with:
repository: matth-x/MicroOcppSimulator
path: MicroOcppSimulator
ref: 2cb07cdbe53954a694a29336ab31eac2d2b48673
submodules: 'recursive'
- name: Clean MicroOcpp submodule
run: |
rm -rf MicroOcppSimulator/lib/MicroOcpp
- name: Checkout MicroOcpp submodule
uses: actions/checkout@v3
with:
path: MicroOcppSimulator/lib/MicroOcpp
- name: Generate CMake files
run: cmake -S ./MicroOcppSimulator -B ./MicroOcppSimulator/build -DCMAKE_CXX_FLAGS="-DMO_OVERRIDE_ALLOCATION=1 -DMO_ENABLE_HEAP_PROFILER=1"
- name: Compile
run: cmake --build ./MicroOcppSimulator/build -j 32 --target mo_simulator
- name: Upload Simulator executable
uses: actions/upload-artifact@v4
with:
name: Simulator executable
path: |
MicroOcppSimulator/build/mo_simulator
MicroOcppSimulator/public/bundle.html.gz
if-no-files-found: error
retention-days: 1
measure_heap:
needs: build_simulator
name: Heap measurements
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- name: Install Python dependencies
run: pip install requests paramiko pandas
- name: Get Simulator
uses: actions/download-artifact@v4
with:
name: Simulator executable
path: MicroOcppSimulator
- name: Measure heap and create reports
run: |
mkdir -p docs/assets/tables
python tests/benchmarks/scripts/measure_heap.py
env:
TEST_DRIVER_URL: ${{ secrets.TEST_DRIVER_URL }}
TEST_DRIVER_CONFIG: ${{ secrets.TEST_DRIVER_CONFIG }}
TEST_DRIVER_KEY: ${{ secrets.TEST_DRIVER_KEY }}
MO_SIM_CONFIG: ${{ secrets.MO_SIM_CONFIG }}
MO_SIM_OCPP_SERVER: ${{ secrets.MO_SIM_OCPP_SERVER }}
MO_SIM_API_CERT: ${{ secrets.MO_SIM_API_CERT }}
MO_SIM_API_KEY: ${{ secrets.MO_SIM_API_KEY }}
MO_SIM_API_CONFIG: ${{ secrets.MO_SIM_API_CONFIG }}
SSH_LOCAL_PRIV: ${{ secrets.SSH_LOCAL_PRIV }}
SSH_HOST_PUB: ${{ secrets.SSH_HOST_PUB }}
- name: Upload reports
uses: actions/upload-artifact@v4
with:
name: Memory usage reports CSV
path: docs/assets/tables
if-no-files-found: error
build_firmware_size:
name: Build firmware
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Cache pip
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v2
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Set up Python
uses: actions/setup-python@v4
- name: Install PlatformIO
run: |
python -m pip install --upgrade pip
pip install --upgrade platformio
- name: Run PlatformIO
run: pio ci --lib="." --build-dir="${{ github.workspace }}/../build" --keep-build-dir --project-conf="./tests/benchmarks/firmware_size/platformio.ini" ./tests/benchmarks/firmware_size/main.cpp
- name: Move firmware files # change path to location without parent dir ('..') statement (to make upload-artifact happy)
run: |
mkdir firmware
mv "${{ github.workspace }}/../build/.pio/build/v16/firmware.elf" firmware/firmware_v16.elf
mv "${{ github.workspace }}/../build/.pio/build/v201/firmware.elf" firmware/firmware_v201.elf
- name: Upload firmware linker files
uses: actions/upload-artifact@v4
with:
name: Firmware linker files
path: firmware
if-no-files-found: error
retention-days: 1
evaluate_firmware:
needs: build_firmware_size
name: Static firmware analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- uses: actions/cache@v2
with:
key: ${{ github.ref }}
path: .cache
- name: Install Python dependencies
run: pip install pandas
- name: Get build tools
run: |
sudo apt update
sudo apt install build-essential cmake ninja-build
sudo apt -y install gcc-9 g++-9
g++ --version
- name: Check out bloaty
uses: actions/checkout@v3
with:
repository: google/bloaty
ref: 379d5305670c00c36a57e608079fd253f13bde63
path: tools/bloaty
submodules: recursive
- name: Install bloaty
run: |
cmake -B tools/bloaty/build -G Ninja -S tools/bloaty
cmake --build tools/bloaty/build -j 32
- name: Get firmware linker files
uses: actions/download-artifact@v4
with:
name: Firmware linker files
path: firmware
- name: Run bloaty
run: |
mkdir -p docs/assets/tables
tools/bloaty/build/bloaty firmware/firmware_v16.elf -d compileunits --csv -n 0 > docs/assets/tables/bloaty_v16.csv
tools/bloaty/build/bloaty firmware/firmware_v201.elf -d compileunits --csv -n 0 > docs/assets/tables/bloaty_v201.csv
- name: Evaluate and create reports
run: python tests/benchmarks/scripts/eval_firmware_size.py
- name: Upload reports
uses: actions/upload-artifact@v4
with:
name: Firmware size reports CSV
path: docs/assets/tables
if-no-files-found: error
deploy:
needs: [evaluate_firmware, measure_heap]
name: Deploy docs
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.x
- uses: actions/cache@v2
with:
key: ${{ github.ref }}
path: .cache
- name: Install Python dependencies
run: pip install pandas mkdocs-material mkdocs-table-reader-plugin
- name: Get firmware size reports
uses: actions/download-artifact@v4
with:
name: Firmware size reports CSV
path: docs/assets/tables
- name: Get memory occupation reports
uses: actions/download-artifact@v4
with:
name: Memory usage reports CSV
path: docs/assets/tables
- name: Run mkdocs
run: mkdocs gh-deploy --force