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