Skip to content

Commit 6256eb4

Browse files
committed
fix(libs): Allow for manual rebuilding and fix commit checking
1 parent b6f03b6 commit 6256eb4

File tree

4 files changed

+68
-9
lines changed

4 files changed

+68
-9
lines changed

.github/workflows/cron.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ on:
1212
# │ │ │ │ │
1313
# * * * * *
1414
- cron: '0 */6 * * *'
15-
workflow_dispatch: # For testing
15+
workflow_dispatch: # For manually rebuilding the libraries
1616

1717
defaults:
1818
run:
@@ -21,6 +21,7 @@ defaults:
2121
jobs:
2222
build-libs:
2323
name: Build with IDF ${{ matrix.idf_branch }}
24+
if: github.repository_owner == 'espressif'
2425
uses: ./.github/workflows/cron_build.yml
2526
with:
2627
idf_branch: ${{ matrix.idf_branch }}

.github/workflows/cron_build.yml

-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ jobs:
132132
compression-level: 0
133133

134134
- name: Push changes
135-
if: github.repository == 'espressif/esp32-arduino-lib-builder'
136135
env:
137136
GITHUB_TOKEN: ${{ secrets.PUSH_TOKEN }}
138137
GIT_AUTHOR_EMAIL: ${{ secrets.PUSH_EMAIL }}

tools/check-deploy-needed.sh

+24-4
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,39 @@ AR_NEW_COMMIT_MESSAGE="IDF $IDF_BRANCH $IDF_COMMIT"
3737
AR_NEW_PR_TITLE="IDF $IDF_BRANCH"
3838

3939
LIBS_RELEASE_TAG="idf-"${IDF_BRANCH//\//_}""
40-
LIBS_VERSION="$LIBS_RELEASE_TAG-$IDF_COMMIT"
40+
LIBS_VERSION_PREFIX="$LIBS_RELEASE_TAG-$IDF_COMMIT-v"
41+
VERSION_COUNTER=1
4142

4243
AR_HAS_BRANCH=`github_branch_exists "$AR_REPO" "$AR_NEW_BRANCH_NAME"`
4344
if [ "$AR_HAS_BRANCH" == "1" ]; then
44-
AR_HAS_COMMIT=`github_commit_exists "$AR_REPO" "$AR_NEW_BRANCH_NAME" "$IDF_COMMIT"`
45+
LATEST_LIBS_IDF=`github_get_libs_idf "$AR_REPO" "$AR_NEW_BRANCH_NAME" "$AR_NEW_PR_TITLE"`
4546
else
46-
AR_HAS_COMMIT=`github_commit_exists "$AR_REPO" "$AR_BRANCH" "$IDF_COMMIT"`
47+
LATEST_LIBS_IDF=`github_get_libs_idf "$AR_REPO" "$AR_BRANCH" "$AR_NEW_PR_TITLE"`
4748
fi
49+
50+
echo "Current IDF commit: $IDF_COMMIT"
51+
echo "Latest IDF commit in $AR_BRANCH of $AR_REPO: $LATEST_LIBS_IDF"
52+
53+
AR_HAS_COMMIT=`if [ "$LATEST_LIBS_IDF" == "$IDF_COMMIT" ]; then echo "1"; else echo "0"; fi`
4854
AR_HAS_PR=`github_pr_exists "$AR_REPO" "$AR_NEW_BRANCH_NAME"`
4955

5056
LIBS_RELEASE_ID=`github_release_id "$AR_LIBS_REPO" "$LIBS_RELEASE_TAG"`
5157
LIBS_HAS_RELEASE=`if [ -n "$LIBS_RELEASE_ID" ]; then echo "1"; else echo "0"; fi`
52-
LIBS_ASSET_ID=`github_release_asset_id "$AR_LIBS_REPO" "$LIBS_RELEASE_ID" "esp32-arduino-libs-$LIBS_VERSION.zip"`
58+
59+
if [ "$GITHUB_EVENT_NAME" == "workflow_dispatch" ]; then
60+
while true; do
61+
LIBS_ASSET_ID=`github_release_asset_id "$AR_LIBS_REPO" "$LIBS_RELEASE_ID" "esp32-arduino-libs-$LIBS_VERSION_PREFIX$VERSION_COUNTER.zip"`
62+
if [ -n "$LIBS_ASSET_ID" ]; then
63+
VERSION_COUNTER=$((VERSION_COUNTER+1))
64+
else
65+
break
66+
fi
67+
done
68+
else
69+
LIBS_ASSET_ID=`github_release_asset_id "$AR_LIBS_REPO" "$LIBS_RELEASE_ID" "esp32-arduino-libs-$LIBS_VERSION_PREFIX$VERSION_COUNTER.zip"`
70+
fi
71+
72+
LIBS_VERSION="$LIBS_VERSION_PREFIX$VERSION_COUNTER"
5373
LIBS_HAS_ASSET=`if [ -n "$LIBS_ASSET_ID" ]; then echo "1"; else echo "0"; fi`
5474

5575
export IDF_COMMIT

tools/config.sh

+42-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ if [ -z $IDF_TARGET ]; then
2525
fi
2626

2727
# Owner of the target ESP32 Arduino repository
28-
AR_USER="espressif"
28+
AR_USER="$GITHUB_REPOSITORY_OWNER"
2929

3030
# The full name of the repository
3131
AR_REPO="$AR_USER/arduino-esp32"
@@ -99,12 +99,51 @@ if [[ "$AR_OS" == "macos" ]]; then
9999
export SSTAT="stat -f %z"
100100
fi
101101

102+
function github_get_libs_idf(){ # github_get_libs_idf <repo-path> <branch-name> <message-prefix>
103+
local repo_path="$1"
104+
local branch_name="$2"
105+
local message_prefix="$3"
106+
message_prefix=$(echo $message_prefix | sed 's/[]\/$*.^|[]/\\&/g') # Escape special characters
107+
local page=1
108+
local version_found=""
109+
local libs_version=""
110+
111+
while [ "$libs_version" == "" ]; do
112+
version_found=`curl -s -k -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3.raw+json" "https://api.github.com/repos/$repo_path/commits?sha=$branch_name&per_page=100&page=$page" | jq -r '.[].commit.message' | grep -Eo "$message_prefix [a-f0-9]{8}" | awk 'NR==1{print $NF}'`
113+
if [ ! "$version_found" == "" ] && [ ! "$version_found" == "null" ]; then
114+
libs_version=$version_found
115+
else
116+
page=$((page+1))
117+
fi
118+
done
119+
120+
if [ ! "$libs_version" == "" ] && [ ! "$libs_version" == "null" ]; then echo $libs_version; else echo ""; fi
121+
}
122+
102123
function github_commit_exists(){ #github_commit_exists <repo-path> <branch-name> <commit-message>
103124
local repo_path="$1"
104125
local branch_name="$2"
105126
local commit_message="$3"
106-
local commits_found=`curl -s -k -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3.raw+json" "https://api.github.com/repos/$repo_path/commits?sha=$branch_name" | jq -r '.[].commit.message' | grep "$commit_message" | wc -l`
107-
if [ ! "$commits_found" == "" ] && [ ! "$commits_found" == "null" ] && [ ! "$commits_found" == "0" ]; then echo $commits_found; else echo 0; fi
127+
local page=1
128+
local commits_found=0
129+
130+
while true; do
131+
local response=`curl -s -k -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3.raw+json" "https://api.github.com/repos/$repo_path/commits?sha=$branch_name&per_page=100&page=$page"`
132+
133+
if [[ -z "$response" || "$response" == "[]" ]]; then
134+
break
135+
fi
136+
137+
local commits=`echo "$response" | jq -r '.[].commit.message' | grep "$commit_message" | wc -l`
138+
if [ "$commits" -gt 0 ]; then
139+
commits_found=1
140+
break
141+
fi
142+
143+
page=$((page+1))
144+
done
145+
146+
echo $commits_found
108147
}
109148

110149
function github_last_commit(){ # github_last_commit <repo-path> <branch-name>

0 commit comments

Comments
 (0)