forked from espressif/esp32-arduino-lib-builder
-
Notifications
You must be signed in to change notification settings - Fork 25
173 lines (154 loc) · 6.56 KB
/
Copy pathparallel_build.yaml
File metadata and controls
173 lines (154 loc) · 6.56 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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
name: IDF v5.5 gcc 15.2 picolib
on:
workflow_dispatch: # Manually start a workflow
jobs:
build-libs:
name: Build Libs for ${{ matrix.target }}
runs-on: ubuntu-latest
strategy:
matrix:
target: [esp32, esp32u, esp32s2, esp32s3, esp32c2, esp32c3, esp32c5, esp32c6, esp32h2, esp32p4, esp32p4_es, esp32c61]
fail-fast: true
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install dependencies
run: bash ./tools/prepare-ci.sh
- name: Get current branch
run: |
echo "GIT_BRANCH=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_ENV
- name: Build Libs for ${{ matrix.target }}
run: |
bash ./build.sh -e -t ${{ matrix.target }}
mv release-info.txt out/framework-arduinoespressif32
- name: Upload artifacts for ${{ matrix.target }}
uses: actions/upload-artifact@v4
with:
name: artifacts-${{ matrix.target }}
path: out/framework-arduinoespressif32
build-slave_firmware:
name: Build Slave Firmware
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install dependencies
run: bash ./tools/prepare-ci.sh
- name: Build slave firmware
run: bash ./tools/compile_slave.sh
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: slave_firmware
path: ./esp-hosted-mcu/slave/wifi_copro_fw
combine-artifacts:
name: Combine artifacts and create framework
needs: [build-libs, build-slave_firmware]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
path: framework-arduinoespressif32
pattern: artifacts-*
merge-multiple: true
- name: Download slave firmware
uses: actions/download-artifact@v4
with:
name: slave_firmware
path: slave_firmware
- name: Create complete framework
run: |
mkdir -p framework-arduinoespressif32/tools/slave_firmware
mv slave_firmware/* framework-arduinoespressif32/tools/slave_firmware/
mv framework-arduinoespressif32/release-info.txt .
IDF_BRANCH=$(grep 'esp-idf branch' release-info.txt | sed -E 's/.*branch \[([^]]+)\].*/\1/')
IDF_COMMIT=$(grep 'esp-idf branch' release-info.txt | sed -E 's/.*commit \[([^]]+)\].*/\1/')
echo "IDF_BRANCH=$IDF_BRANCH"
echo "IDF_COMMIT=$IDF_COMMIT"
idf_version_string="${IDF_BRANCH//\//_}-$IDF_COMMIT"
# Update sdkconfig files with slave firmware version
if [ -f "framework-arduinoespressif32/tools/slave_firmware/coprocessor_fw_version.txt" ]; then
FIRMWARE_VERSION=$(cat framework-arduinoespressif32/tools/slave_firmware/coprocessor_fw_version.txt)
echo "Found firmware version: $FIRMWARE_VERSION"
# Array of MCU targets that need sdkconfig updates
mcu_targets=("esp32" "esp32u" "esp32s2" "esp32s3" "esp32c2" "esp32c3" "esp32c5" "esp32c6" "esp32c61" "esp32h2" "esp32p4" "esp32p4_es")
for mcu in "${mcu_targets[@]}"; do
sdkconfig_path="framework-arduinoespressif32/tools/esp32-arduino-libs/$mcu/sdkconfig"
if [ -f "$sdkconfig_path" ]; then
echo "Updating $sdkconfig_path with firmware version: $FIRMWARE_VERSION"
# Remove existing CONFIG_ESP_HOSTED_IDF_SLAVE_TARGET line and add new one at the beginning
sed -i -e '/^CONFIG_ESP_HOSTED_IDF_SLAVE_TARGET/d' -e "1i CONFIG_ESP_HOSTED_IDF_SLAVE_TARGET=\"$FIRMWARE_VERSION\"" "$sdkconfig_path"
else
echo "Warning: sdkconfig file not found at $sdkconfig_path"
fi
done
else
echo "Warning: coprocessor_fw_version.txt not found"
fi
tar --exclude=.* -Jcf framework-arduinoespressif32-${idf_version_string}.tar.xz framework-arduinoespressif32/
- name: Set tag name
id: set_tag_name
run: |
# Debug: Zeige den Inhalt von release-info.txt
echo "=== Content of release-info.txt ==="
cat release-info.txt
echo "================================="
# Extrahiere IDF Version mit vollständigem Muster
# Erfasst: x.y, x.y.z, x.y_suffix, x.y.z_suffix, etc.
IDF_VERSION=$(grep 'esp-idf branch' release-info.txt | sed -E 's/.*branch \[release\/v([0-9]+\.[0-9]+(\.[0-9]+)?([_.-]?[a-zA-Z0-9]+)*)\].*/\1/' | head -1)
# Fallback: Versuche ohne "release/" Präfix
if [ -z "$IDF_VERSION" ]; then
IDF_VERSION=$(grep 'esp-idf branch' release-info.txt | sed -E 's/.*branch \[v([0-9]+\.[0-9]+(\.[0-9]+)?([_.-]?[a-zA-Z0-9]+)*)\].*/\1/' | head -1)
fi
# Fallback: Extrahiere beliebige Versionsnummer nach "v"
if [ -z "$IDF_VERSION" ]; then
IDF_VERSION=$(grep 'esp-idf branch' release-info.txt | sed -E 's/.*v([0-9]+\.[0-9]+[._-]?[a-zA-Z0-9]*).*/\1/' | head -1)
fi
# Default falls nichts gefunden wird
if [ -z "$IDF_VERSION" ]; then
IDF_VERSION="unknown"
fi
# Datum im europäischen Format (Tag/Monat-Stunde-Minute)
DATE=$(date +"%d%m-%H%M")
# Tag name ohne "v" Präfix
TAG_NAME="${DATE}-${IDF_VERSION}"
echo "IDF_VERSION: $IDF_VERSION"
echo "DATE: $DATE"
echo "TAG_NAME: $TAG_NAME"
# Validiere Tag-Name Format (erlaubt Punkte, Unterstriche, Bindestriche)
if [[ "$TAG_NAME" =~ ^[a-zA-Z0-9._-]+$ ]]; then
echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT
else
echo "ERROR: Invalid tag name format: $TAG_NAME"
exit 1
fi
- name: Debug tag name
run: |
echo "Generated tag name: ${{ steps.set_tag_name.outputs.tag_name }}"
if [ -z "${{ steps.set_tag_name.outputs.tag_name }}" ]; then
echo "ERROR: tag_name is empty!"
exit 1
fi
- name: Release framework-arduinoespressif32
uses: jason2866/action-gh-release@v1.3
with:
tag_name: ${{ steps.set_tag_name.outputs.tag_name }}
body_path: release-info.txt
prerelease: true
files: |
framework-arduinoespressif32-*.tar.xz
release-info.txt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}