forked from rusefi/rusefi
-
Notifications
You must be signed in to change notification settings - Fork 0
154 lines (125 loc) · 4.79 KB
/
Copy pathhardware-ci.yaml
File metadata and controls
154 lines (125 loc) · 4.79 KB
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
#
# https://github.com/rusefi/rusefi/wiki/Dev-Quality-Control#hardware-continuous-integration
#
name: HW CI
on:
push:
pull_request:
workflow_dispatch:
env:
AUTOMATION_REF: ${{github.ref_name}}
jobs:
hardware-ci:
strategy:
# Let all builds finish even if one fails early
fail-fast: false
matrix:
build-target: [
f407-discovery,
nucleo_f767
#proteus F7 HW CI is not 100% reliable #6002 proteus_f7,
# proteus_f4
]
include:
- build-target: f407-discovery
runs-on: hw-ci-f4-discovery
# see HwCiF4Discovery.java or https://github.com/rusefi/rusefi/wiki/Dev-Quality-Control#stm32f407g-disc1 for wiring documentation
test-suite: com.rusefi.HwCiF4Discovery
test-suite-ini: firmware/tunerstudio/generated/rusefi_f407-discovery.ini
folder: config/boards/f407-discovery
vbatt_supply: 12
- build-target: nucleo_f767
runs-on: hw-ci-nucleo-f7
test-suite: com.rusefi.HwCiNucleoF7
test-suite-ini: firmware/tunerstudio/generated/rusefi_stm32f767_nucleo.ini
folder: config/boards/nucleo_f767
# - build-target: proteus_f4
# runs-on: hw-ci-proteus
# # see HwCiProteus which would point you at ProteusAnalogTest.java for wiring documentation
# test-suite: com.rusefi.HwCiProteus
# folder: config/boards/proteus
# vbatt_supply: 12
# - build-target: proteus_f7
# runs-on: hw-ci-proteus-f7
# test-suite: com.rusefi.HwCiProteus
# folder: config/boards/proteus
# # let's power Proteus from same DC adapter as Nuc PC
# vbatt_supply: 12
runs-on: ${{matrix.runs-on}}
steps:
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: '17'
- uses: actions/checkout@v5
- name: Checkout Submodules
run: |
misc/git_scripts/common_submodule_init.sh
- name: Identify Agent
run: |
uname -a
hostname
# TODO: address `Acquire GCC` version copy paste, maybe a tiny action to acquire specific version?
- name: Acquire Arm GNU Toolchain (arm-none-eabi-gcc)
uses: carlosperate/arm-none-eabi-gcc-action@v1
with:
release: '14.2.Rel1'
# Make sure the compiler works
- name: Test/Identify Compiler
run: arm-none-eabi-gcc -v
- name: Configuration Definition and Enum to String CI, without pushing new .jar
working-directory: ./java_tools
run: |
./gradlew :config_definition:shadowJar :enum_to_string:shadowJar
- name: Generate All Configs
working-directory: ./firmware/
run: bash gen_config.sh
- name: Build Firmware
# run: .github/workflows/hw-ci/build_for_hw_ci.sh config/boards/f407-discovery f407-discovery
run: .github/workflows/hw-ci/build_for_hw_ci.sh ${{matrix.folder}} ${{matrix.build-target}}
- name: Show USB status
run: |
lsusb -vvv
- name: Check for STLINK
run: st-info --probe
# - name: Install tools
# run: |
# sudo apt-get install openocd libusb-1.0
#
# - name: Build gethla
# working-directory: .github/workflows/hw-ci/gethla
# run: bash build.sh
#
# - name: List STLINK serials
# working-directory: .github/workflows/hw-ci/gethla
# run: ./gethla
# ls -l /dev/serial/by-id/
# we specify power supply voltage to share power supply between NUC and ECU under test
# java automated test suite picks ECU based on specified serial
# echo "HARDWARE_CI_VBATT=${{matrix.vbatt_supply}}" >> $GITHUB_ENV
- name: Set EXTRA env
run: |
echo "Nothing"
# (cat .github/workflows/openocd_ci_f4_discovery.cfg ) | .github/workflows/hw-ci/openocd_wipe_and_flash.sh
# (cat .github/workflows/openocd_ci_proteus_f7.cfg ) | .github/workflows/hw-ci/openocd_wipe_and_flash.sh
- name: st-flash wipe & flash STM32
run: |
st-flash --area=main erase
st-flash --format=binary --reset --connect-under-reset write firmware/deliver/rusefi.bin 0x08000000
- name: Upload build bin artifact
uses: actions/upload-artifact@v4
with:
name: rusefi_hw-ci-${{matrix.build-target}}.bin
path: ./firmware/build/rusefi*.bin
- name: Upload .ini artifact
uses: actions/upload-artifact@v4
with:
name: rusefi_hw-ci-${{matrix.build-target}}.ini
path: ${{matrix.test-suite-ini}}
- name: Show USB status after flashing
run: |
lsusb -vvv
# This both compiles and runs HW CI tests
# .github/workflows/hw-ci/run_hw_ci.sh com.rusefi.HwCiF4Discovery
- name: Run Hardware CI
run: .github/workflows/hw-ci/run_hw_ci.sh ${{matrix.test-suite}} ${{matrix.test-suite-ini}}