forked from emmebrusa/TSDZ2-Smart-EBike-1
-
Notifications
You must be signed in to change notification settings - Fork 1
164 lines (155 loc) · 5.39 KB
/
build.yaml
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
name: Build
on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
push:
paths:
- ".github/workflows/*"
- "src/*"
- "tests/*"
- "pyproject.toml"
- "setup.py"
pull_request:
paths:
- "src/*"
- "tests/*"
- "pyproject.toml"
- "setup.py"
env:
SDCC_VERSION: 4.4.0
jobs:
Build_Windows:
runs-on: windows-latest
steps:
# - name: Start SSH session
# uses: luchihoratiu/debug-via-ssh@main
# with:
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
# SSH_PASS: ${{ secrets.SSH_PASS }}
- name: Install SDCC
run: |
Invoke-WebRequest -UserAgent "Wget" -Uri https://sourceforge.net/projects/sdcc/files/sdcc-win64/$env:SDCC_VERSION/sdcc-$env:SDCC_VERSION-rc3-x64-setup.exe/download -OutFile sdcc_setup.exe
Start-Process -wait -FilePath "sdcc_setup.exe" -ArgumentList "/S", "/D=C:\Program Files\SDCC"
echo "Adding SDCC to PATH"
Add-Content $env:GITHUB_PATH "C:\Program Files\SDCC\bin"
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
# this mainly checks whether tests compile and work on windows. The actual test report runs on Ubuntu job
- name: Check testing framework
run: |
pip install -e .
rm tests/sim/_tsdz2.cdef # make sure cdef is generated from the source to check testing framework
pytest --collect-only
- name: Build
run: |
cd src
make clean
make CFLAGS=--Werror
- uses: actions/upload-artifact@v4
with:
name: firmware_from_windows
path: bin/main.hex
Build_Linux:
runs-on: ubuntu-latest
steps:
# - name: Start SSH session
# uses: luchihoratiu/debug-via-ssh@main
# with:
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
# SSH_PASS: ${{ secrets.SSH_PASS }}
- name: Install SDCC
run: |
cd ~
wget https://sourceforge.net/projects/sdcc/files/sdcc-linux-amd64/$SDCC_VERSION/sdcc-$SDCC_VERSION-amd64-unknown-linux2.5.tar.bz2/download -O sdcc-amd64.tar.bz2
sudo tar xf sdcc-amd64.tar.bz2
cd sdcc-$SDCC_VERSION/
sudo cp -r * /usr/local
sdcc --version
sdcc --print-search-dirs
- uses: actions/checkout@v4
- name: Build
run: |
cd src
make clean
make CFLAGS=--Werror
- uses: actions/upload-artifact@v4
with:
name: firmware_from_linux
path: bin/main.hex
Static-analysis:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Prepare cppcheck
run: |
mkdir -p b
git clone https://github.com/danmar/cppcheck.git
cd cppcheck
git fetch --all --tags --force
git checkout 2.14.2
mkdir -p build
- name: Cache Cppcheck build
id: cppcheck-build
uses: actions/cache@v4
env:
cache-name: cppcheck-build
with:
path: ./cppcheck/build
key: ${{ runner.os }}-cppcheck-build-${{ env.cache-name }}-${{ hashFiles('cli/*.*') }}
restore-keys: |
${{ runner.os }}-cppcheck-build-${{ env.cache-name }}-
${{ runner.os }}-cppcheck-build-
${{ runner.os }}-
- name: Install cppcheck
shell: bash
run: |
cd cppcheck/build
cmake ..
cmake --build .
sudo make install
cppcheck --version
- name: Cache Cppcheck dumps
id: cppcheck-dump-dir
uses: actions/cache@v4
env:
cache-name: cppcheck-build-dir
with:
path: ./b
key: ${{ runner.os }}-cppcheck-dump-dir-${{ env.cache-name }}-${{ hashFiles('src/**/*.{c,h}') }}
restore-keys: |
${{ runner.os }}-cppcheck-dump-dir-${{ env.cache-name }}-
${{ runner.os }}-cppcheck-dump-dir-
${{ runner.os }}-
- name: Run cppcheck
shell: bash
run: |
cppcheck src --cppcheck-build-dir=b -j8 --enable=all --check-level=exhaustive --force --std=c99 -Isrc/STM8S_StdPeriph_Lib/inc -iSTM8S_StdPeriph_Lib --suppress=missingIncludeSystem --suppress=variableScope -DSTM8S105 -DHSE_Value=16000000 -D_SDCC_ -DUSE_STDPERIPH_DRIVER -USTM8AF52Ax -USTM8AF622x -USTM8AF626x -USTM8AF62Ax -USTM8S003 -USTM8S005 -USTM8S007 -USTM8S103 -USTM8S207 -USTM8S208 -USTM8S903 -U__CSMC__ -U__ICCSTM8__ -U__RCST7__ -U__CDT_PARSER__ -URAM_EXECUTION -UHALL_DEBUG -UTIME_DEBUG -UUSE_FULL_ASSERT 2>/dev/null
Compare_builds:
needs: [Build_Windows, Build_Linux]
runs-on: ubuntu-latest
steps:
- name: Download Windows build
uses: actions/download-artifact@v4
with:
name: firmware_from_windows
path: firmware_from_windows
- name: Download Linux build
uses: actions/download-artifact@v4
with:
name: firmware_from_linux
path: firmware_from_linux
- name: Compare build files
run: |
echo "Comparing build files"
git diff firmware_from_windows/main.hex firmware_from_linux/main.hex --word-diff=color --ignore-space-at-eol --exit-code
echo "Done comparing build files. Files are the same."