-
Notifications
You must be signed in to change notification settings - Fork 0
160 lines (139 loc) · 4.3 KB
/
firmware.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
name: '🔥 Firmware Build'
on:
push:
tags:
- 'v*.*.*'
branches:
- 'master'
paths:
- 'src/**'
- '.github/workflows/*.yml'
- '.github/workflows/*.json'
- '!**/README.md'
- '!**.rst'
pull_request:
branches:
- 'master'
paths:
- 'src/**'
- '.github/workflows/*.yml'
- '.github/workflows/*.json'
- '!**/README.md'
- '!**.rst'
jobs:
build-firmware:
runs-on: ubuntu-20.04
strategy:
matrix:
target: [OPENMV2, OPENMV3, OPENMV4, OPENMV4P, OPENMVPT, OPENMV_RT1060, ARDUINO_PORTENTA_H7, ARDUINO_GIGA, ARDUINO_NICLA_VISION, ARDUINO_NANO_RP2040_CONNECT, ARDUINO_NANO_33_BLE_SENSE]
fail-fast: false
steps:
- name: '⏳ Checkout repository'
uses: actions/checkout@v4
with:
submodules: false
- name: '🧱 Update submodules'
run: source tools/ci.sh && ci_update_submodules
- name: '♻ Caching dependencies'
uses: actions/[email protected]
id: cache
with:
path: ~/cache/gcc
key: 'arm-gnu-toolchain-13.2.rel1'
- name: '🛠 Install toolchain '
if: steps.cache.outputs.cache-hit != 'true'
run: source tools/ci.sh && ci_install_arm_gcc
- name: '🏗 Build firmware'
run: source tools/ci.sh && ci_build_target ${{ matrix.target }}
- name: '⬆ Upload artifacts'
if: github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}
path: ${{ matrix.target }}
if-no-files-found: error
stable-release:
needs: build-firmware
runs-on: ubuntu-20.04
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- name: '⏳ Checkout repository'
uses: actions/checkout@v4
with:
submodules: false
- name: '🤌 Download artifacts'
uses: actions/download-artifact@v4
with:
path: firmware
- name: '📦 Package firmware'
run: source tools/ci.sh && ci_package_firmware_release ${{github.ref_name}}
- name: "✏️ Generate release changelog"
id: changelog
uses: mikepenz/release-changelog-builder-action@v4
with:
toTag: ${{ github.sha }}
configuration: '.github/workflows/changelog.json'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: '🔥 Create stable release'
uses: softprops/action-gh-release@v1
with:
draft: true
files: firmware_*.zip
body: ${{steps.changelog.outputs.changelog}}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: '🧹 Remove artifacts'
uses: geekyeggo/delete-artifact@v2
with:
name: firmware
failOnError: false
development-release:
needs: build-firmware
runs-on: ubuntu-20.04
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') == false
permissions:
contents: write
steps:
- name: '⏳ Checkout repository'
uses: actions/checkout@v4
with:
submodules: false
- name: '🤌 Download artifacts'
uses: actions/download-artifact@v4
with:
path: firmware
- name: '📦 Package firmware'
run: source tools/ci.sh && ci_package_firmware_development
- name: '🧹 Delete old release'
uses: dev-drprasad/[email protected]
with:
delete_release: true
tag_name: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: "✏️ Generate release changelog"
id: changelog
uses: mikepenz/release-changelog-builder-action@v4
with:
toTag: ${{ github.sha }}
configuration: '.github/workflows/changelog.json'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: '🔥 Create development release'
uses: softprops/action-gh-release@v1
with:
draft: false
name: Development Release
tag_name: development
body: |
**⚠️ This is a development release, and it may be unstable.**
${{steps.changelog.outputs.changelog}}
files: firmware/firmware_*.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: '🧹 Remove artifacts'
uses: geekyeggo/delete-artifact@v2
with:
name: firmware
failOnError: false