-
-
Notifications
You must be signed in to change notification settings - Fork 4
135 lines (119 loc) · 3.69 KB
/
build.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
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: Build
on:
workflow_dispatch:
push:
tags: ["v*"]
branches: ["*"]
paths-ignore: ["docs/**", "**/*.md", "**/portal/**", "tools/**", "test/**"]
pull_request:
paths-ignore: ["docs/**", "**/*.md", "**/portal/**", "tools/**", "test/**"]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build safeboot-${{ matrix.board }}.bin
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
board:
[
"denky_d4",
"esp32-c3-devkitc-02",
"esp32-c6-devkitc-1",
"esp32-gateway",
"esp32-poe-iso",
"esp32-poe",
"esp32-s2-saola-1",
"esp32-s3-devkitc-1",
"esp32-solo1",
"esp32dev",
"esp32s3box",
"tinypico",
"wipy3",
"wt32-eth01"
]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get Tags
run: git fetch --force --tags origin
- name: Cache PlatformIO
uses: actions/cache@v4
with:
key: ${{ runner.os }}-pio
path: |
~/.cache/pip
~/.platformio
- name: Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Build
run: |
python -m pip install --upgrade pip
pip install --upgrade platformio
SAFEBOOT_BOARD=${{ matrix.board }} pio run -e safeboot
cp .pio/build/safeboot/firmware.bin ./safeboot-${{ matrix.board }}.bin
- name: Test
run: SAFEBOOT_BOARD=${{ matrix.board }} pio run -d test -e ci
- name: Upload
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.board }}
if-no-files-found: error
path: |
*.bin
release:
name: Release
if: ${{ github.repository_owner == 'mathieucarbou' && github.event_name != 'pull_request' && ( github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') ) }}
runs-on: ubuntu-latest
needs: [build]
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download
uses: actions/download-artifact@v4
with:
path: artifacts/
- name: Move
run: |
ls -R artifacts
find artifacts -name '*.bin' -exec mv {} artifacts/ \;
- name: Pre-Release
if: ${{ github.ref == 'refs/heads/main' }}
uses: mathieucarbou/marvinpinto-action-automatic-releases@latest
with:
repo_token: "${{ secrets.ACCESS_TOKEN }}"
automatic_release_tag: latest
prerelease: true
title: Pre-release Builds
files: |
artifacts/*.bin
tools/factory.py
- name: Changelog
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
id: github_release
uses: mikepenz/release-changelog-builder-action@v5
with:
failOnError: true
commitMode: true
configuration: ".github/workflows/release-notes-config.json"
env:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
- name: Release
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
uses: softprops/action-gh-release@v2
with:
body: ${{steps.github_release.outputs.changelog}}
append_body: true
draft: false
files: |
artifacts/*.bin
tools/factory.py
env:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}