Skip to content

Commit f7540da

Browse files
committed
test
1 parent 18e877b commit f7540da

File tree

3 files changed

+170
-180
lines changed

3 files changed

+170
-180
lines changed

.github/workflows/cron.yml

Lines changed: 11 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Cron Build
1+
name: Cron Deploy
22

33
on:
44
schedule:
@@ -17,187 +17,18 @@ defaults:
1717
run:
1818
shell: bash
1919

20-
env:
21-
LATEST_RELEASE_BRANCH: "release/v5.1" # Change this to the latest release branch so the checkouts are done correctly
22-
2320
jobs:
24-
gen-matrix:
25-
name: Generate matrix
26-
runs-on: ubuntu-latest
27-
outputs:
28-
matrix: ${{ steps.gen-matrix.outputs.matrix }}
29-
branches: ${{ steps.gen-matrix.outputs.branches }}
30-
steps:
31-
- uses: actions/checkout@v4
32-
with:
33-
fetch-depth: 0
34-
35-
- name: Generate matrix
36-
id: gen-matrix
37-
env:
38-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39-
run: |
40-
set -e
41-
42-
# Change this based on the IDF branches we want to build. Don't forget to update env.LATEST_RELEASE_BRANCH
43-
all_branches=("release/v5.1")
44-
45-
# Change this based on the COMMON targets for all branches we want to build.
46-
common_targets="[\"esp32\", \"esp32s2\", \"esp32s3\", \"esp32c2\", \"esp32c3\", \"esp32c6\", \"esp32h2\"]"
47-
48-
# For additional targets per branch, add them here
49-
additional_targets="[{\"idf_branch\": \"release/v5.3\", \"target\": \"esp32p4\"}]"
50-
51-
branches="["
52-
matrix="{"
53-
54-
for branch in ${all_branches[@]}; do
55-
if [ "$branch" == "$LATEST_RELEASE_BRANCH" ]; then
56-
git checkout master
57-
else
58-
git checkout $branch
59-
fi
60-
export IDF_BRANCH=$branch
61-
source ./tools/check-deploy-needed.sh
62-
if [ "$DEPLOY_NEEDED" == "1" ]; then
63-
branches+="\"$branch\","
64-
fi
65-
done
66-
67-
branches="${branches%,}]"
68-
matrix+="\"idf_branch\": $branches,"
69-
matrix+="\"target\": $common_targets,"
70-
71-
matrix+="\"include\": "
72-
# Add all additional targets that are in the selected branches
73-
matrix+=$(echo $additional_targets | jq --argjson branches "$branches" '[.[] | select(.idf_branch as $branch | $branches | index($branch))]')
74-
75-
matrix+="}"
76-
77-
echo "Branches: $branches"
78-
79-
echo "Matrix:"
80-
echo "$matrix" | jq .
81-
82-
if [ ! -x $GITHUB_OUTPUT ]; then
83-
echo "matrix=$matrix" >> $GITHUB_OUTPUT
84-
echo "branches=$branches" >> $GITHUB_OUTPUT
85-
fi
86-
8721
build-libs:
88-
name: Build with IDF ${{ matrix.idf_branch }} for ${{ matrix.target }}
89-
runs-on: ubuntu-latest
90-
if: needs.gen-matrix.outputs.branches != '[]'
91-
needs: gen-matrix
92-
strategy:
93-
fail-fast: false
94-
matrix: ${{ fromJson(needs.gen-matrix.outputs.matrix) }}
95-
steps:
96-
- uses: actions/checkout@v4
97-
with:
98-
# Useful workaround for the checkout action to work with the matrix
99-
# https://github.com/actions/runner/issues/409#issuecomment-1013325196
100-
ref: ${{ matrix.idf_branch == env.LATEST_RELEASE_BRANCH && 'master' || matrix.idf_branch }}
101-
102-
- name: Install dependencies
103-
run: bash ./tools/prepare-ci.sh
104-
105-
- name: Build
106-
env:
107-
GITHUB_TOKEN: ${{ secrets.PUSH_TOKEN || secrets.GITHUB_TOKEN }}
108-
GIT_AUTHOR_EMAIL: ${{ secrets.PUSH_EMAIL }}
109-
GIT_COMMITTER_EMAIL: ${{ secrets.PUSH_EMAIL }}
110-
IDF_BRANCH: ${{ matrix.idf_branch }}
111-
TARGET: ${{ matrix.target }}
112-
run: |
113-
bash ./tools/cron.sh
114-
115-
- name: Replace invalid characters in the artifact name
116-
run: |
117-
branch=${{ matrix.idf_branch }}
118-
echo "libs_branch=${branch//\//_}" >> $GITHUB_ENV
119-
120-
- name: Upload build
121-
if: failure()
122-
uses: actions/upload-artifact@v4
123-
with:
124-
name: build-${{ env.libs_branch }}-${{ matrix.target }}
125-
path: build
126-
127-
- name: Upload library files
128-
uses: actions/upload-artifact@v4
129-
with:
130-
name: libs-${{ env.libs_branch }}-${{ matrix.target }}
131-
path: dist
132-
133-
combine-artifacts:
134-
name: Combine artifacts for IDF ${{ matrix.idf_branch }}
135-
runs-on: ubuntu-latest
136-
needs: [gen-matrix, build-libs]
137-
# Condition is evaluated before the job is run so it won't cause a failure
138-
if: needs.gen-matrix.outputs.branches != '[]'
22+
name: Build with IDF ${{ matrix.idf_branch }}
23+
uses: ./.github/workflows/cron_build.yml
24+
with:
25+
idf_branch: ${{ matrix.idf_branch }}
26+
lib_builder_branch: ${{ matrix.lib_builder_branch }}
27+
targets: ${{ matrix.targets }}
13928
strategy:
14029
fail-fast: false
14130
matrix:
142-
idf_branch: ${{ fromJson(needs.gen-matrix.outputs.branches) }}
143-
steps:
144-
- uses: actions/checkout@v4
145-
with:
146-
# Useful workaround for the checkout action to work with the matrix
147-
# https://github.com/actions/runner/issues/409#issuecomment-1013325196
148-
ref: ${{ matrix.idf_branch == env.LATEST_RELEASE_BRANCH && 'master' || matrix.idf_branch }}
149-
150-
- name: Replace invalid characters in the artifact name
151-
run: |
152-
branch=${{ matrix.idf_branch }}
153-
echo "libs_branch=${branch//\//_}" >> $GITHUB_ENV
154-
155-
- name: Download artifacts
156-
uses: actions/download-artifact@v4
157-
with:
158-
path: dist
159-
pattern: libs-${{ env.libs_branch }}-*
160-
merge-multiple: true
161-
162-
- name: Combine artifacts
163-
run: |
164-
set -e
165-
mkdir -p out
166-
167-
libs_folder="out/tools/esp32-arduino-libs"
168-
169-
files=$(find dist -name 'arduino-esp32-libs-esp*.tar.gz')
170-
for file in $files; do
171-
echo "Extracting $file"
172-
tar zxvf $file -C out
173-
cat $libs_folder/versions.txt >> $libs_folder/versions_full.txt
174-
done
175-
176-
# Merge versions.txt files
177-
awk -i inplace '!seen[$0]++' $libs_folder/versions_full.txt
178-
mv -f $libs_folder/versions_full.txt $libs_folder/versions.txt
179-
180-
cd $libs_folder && tar zcf ../../../dist/esp32-arduino-libs.tar.gz * && cd ../../..
181-
cp out/package_esp32_index.template.json dist/package_esp32_index.template.json
182-
183-
- name: Upload full esp32-arduino-libs archive
184-
uses: actions/upload-artifact@v4
185-
with:
186-
name: esp32-arduino-libs
187-
path: dist/esp32-arduino-libs.tar.gz
188-
189-
- name: Upload package_esp32_index.template.json
190-
uses: actions/upload-artifact@v4
191-
with:
192-
name: package-esp32-index-json
193-
path: dist/package_esp32_index.template.json
194-
195-
- name: Push changes
196-
if: github.repository == 'espressif/esp32-arduino-lib-builder'
197-
env:
198-
GITHUB_TOKEN: ${{ secrets.PUSH_TOKEN }}
199-
GIT_AUTHOR_EMAIL: ${{ secrets.PUSH_EMAIL }}
200-
GIT_COMMITTER_EMAIL: ${{ secrets.PUSH_EMAIL }}
201-
IDF_BRANCH: ${{ matrix.idf_branch }}
202-
run: |
203-
bash ./tools/push-to-arduino.sh
31+
include:
32+
- idf_branch: "release/v5.1"
33+
lib_builder_branch: "master"
34+
targets: "esp32,esp32s2,esp32s3,esp32c3,esp32c6,esp32h2"

.github/workflows/cron_build.yml

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
name: Cron Build Matrix
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
idf_branch:
7+
type: string
8+
required: true
9+
description: 'IDF branch to build'
10+
lib_builder_branch:
11+
type: string
12+
required: true
13+
description: 'Branch of the lib-builder to use'
14+
targets:
15+
type: string
16+
required: true
17+
description: 'Targets to build'
18+
19+
env:
20+
IDF_BRANCH: ${{ inputs.idf_branch }}
21+
22+
jobs:
23+
check-if-needed:
24+
name: Check if deploy is needed for ${{ inputs.idf_branch }}
25+
runs-on: ubuntu-latest
26+
outputs:
27+
deploy_needed: ${{ steps.gen-matrix.outputs.deploy_needed }}
28+
targets_list: ${{ steps.gen-matrix.outputs.targets_list }}
29+
steps:
30+
- uses: actions/checkout@v4
31+
with:
32+
ref: ${{ inputs.lib_builder_branch }}
33+
34+
- name: Generate matrix
35+
id: gen-matrix
36+
env:
37+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38+
run: |
39+
source ./tools/check-deploy-needed.sh
40+
if [ "$DEPLOY_NEEDED" == "1" ]; then
41+
echo "deploy_needed=true" >> $GITHUB_OUTPUT
42+
targets_list=$(echo "${{ inputs.targets }}" | sed 's/ *, */,/g' | sed 's/^/["/' | sed 's/$/"]/' | sed 's/,/","/g')
43+
else
44+
echo "deploy_needed=false" >> $GITHUB_OUTPUT
45+
targets_list='[]'
46+
fi
47+
48+
echo "Targets list: $targets_list"
49+
echo "targets_list=$targets_list" >> $GITHUB_OUTPUT
50+
51+
build-libs:
52+
name: Build with IDF ${{ inputs.idf_branch }} for ${{ matrix.target }}
53+
runs-on: ubuntu-latest
54+
if: needs.check-if-needed.outputs.deploy_needed == 'true'
55+
needs: check-if-needed
56+
strategy:
57+
fail-fast: false
58+
matrix:
59+
target: ${{ fromJson(needs.check-if-needed.outputs.targets_list) }}
60+
steps:
61+
- uses: actions/checkout@v4
62+
with:
63+
ref: ${{ inputs.idf_branch }}
64+
65+
- name: Install dependencies
66+
run: bash ./tools/prepare-ci.sh
67+
68+
- name: Build
69+
env:
70+
GITHUB_TOKEN: ${{ secrets.PUSH_TOKEN || secrets.GITHUB_TOKEN }}
71+
GIT_AUTHOR_EMAIL: ${{ secrets.PUSH_EMAIL }}
72+
GIT_COMMITTER_EMAIL: ${{ secrets.PUSH_EMAIL }}
73+
TARGET: ${{ matrix.target }}
74+
run: |
75+
bash ./tools/cron.sh
76+
77+
- name: Replace invalid characters in the artifact name
78+
run: |
79+
branch=${{ inputs.idf_branch }}
80+
echo "libs_branch=${branch//\//_}" >> $GITHUB_ENV
81+
82+
- name: Upload build
83+
if: failure()
84+
uses: actions/upload-artifact@v4
85+
with:
86+
name: build-${{ env.libs_branch }}-${{ matrix.target }}
87+
path: build
88+
89+
- name: Upload library files
90+
uses: actions/upload-artifact@v4
91+
with:
92+
name: libs-${{ env.libs_branch }}-${{ matrix.target }}
93+
path: dist
94+
95+
combine-artifacts:
96+
name: Combine artifacts for IDF ${{ inputs.idf_branch }}
97+
runs-on: ubuntu-latest
98+
needs: [check-if-needed, build-libs]
99+
if: needs.check-if-needed.outputs.deploy_needed == 'true'
100+
steps:
101+
- uses: actions/checkout@v4
102+
with:
103+
ref: ${{ inputs.lib_builder_branch }}
104+
105+
- name: Replace invalid characters in the artifact name
106+
run: |
107+
branch=${{ inputs.lib_builder_branch }}
108+
echo "libs_branch=${branch//\//_}" >> $GITHUB_ENV
109+
110+
- name: Download artifacts
111+
uses: actions/download-artifact@v4
112+
with:
113+
path: dist
114+
pattern: libs-${{ env.libs_branch }}-*
115+
merge-multiple: true
116+
117+
- name: Combine artifacts
118+
run: bash ./tools/combine-artifacts.sh
119+
120+
- name: Upload full esp32-arduino-libs archive
121+
uses: actions/upload-artifact@v4
122+
with:
123+
name: esp32-arduino-libs-${{ env.libs_branch }}
124+
path: dist/esp32-arduino-libs.tar.gz
125+
126+
- name: Upload package_esp32_index.template.json
127+
uses: actions/upload-artifact@v4
128+
with:
129+
name: package-esp32-index-json-${{ env.libs_branch }}
130+
path: dist/package_esp32_index.template.json
131+
132+
- name: Push changes
133+
if: github.repository == 'espressif/esp32-arduino-lib-builder'
134+
env:
135+
GITHUB_TOKEN: ${{ secrets.PUSH_TOKEN }}
136+
GIT_AUTHOR_EMAIL: ${{ secrets.PUSH_EMAIL }}
137+
GIT_COMMITTER_EMAIL: ${{ secrets.PUSH_EMAIL }}
138+
run: |
139+
bash ./tools/push-to-arduino.sh

tools/cron-combine.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/bin/bash
2+
3+
set -e
4+
mkdir -p out
5+
6+
libs_folder="out/tools/esp32-arduino-libs"
7+
8+
files=$(find dist -name 'arduino-esp32-libs-esp*.tar.gz')
9+
for file in $files; do
10+
echo "Extracting $file"
11+
tar zxvf $file -C out
12+
cat $libs_folder/versions.txt >> $libs_folder/versions_full.txt
13+
done
14+
15+
# Merge versions.txt files
16+
awk -i inplace '!seen[$0]++' $libs_folder/versions_full.txt
17+
mv -f $libs_folder/versions_full.txt $libs_folder/versions.txt
18+
19+
cd $libs_folder && tar zcf ../../../dist/esp32-arduino-libs.tar.gz * && cd ../../..
20+
cp out/package_esp32_index.template.json dist/package_esp32_index.template.json

0 commit comments

Comments
 (0)