Skip to content

Commit ad16cd8

Browse files
committed
CI: Fix failure when fetching latest release tag on macOS/arm64
Refer to [1] and [2], leveraging ${{ secrets.GITHUB_TOKEN }} to be authenticated which increases the Github API request rate limit. [1] https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#primary-rate-limit-for-github_token-in-github-actions [2] https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#getting-a-higher-rate-limit
1 parent 878676a commit ad16cd8

File tree

2 files changed

+37
-14
lines changed

2 files changed

+37
-14
lines changed

.github/workflows/main.yml

+21-3
Original file line numberDiff line numberDiff line change
@@ -359,9 +359,27 @@ jobs:
359359
env:
360360
CC: ${{ steps.install_cc.outputs.cc }}
361361
run: |
362-
make artifact
363-
make ENABLE_SYSTEM=1 artifact
364-
make ENABLE_ARCH_TEST=1 artifact
362+
LATEST_RELEASE=$(wget --header="Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -q \
363+
https://api.github.com/repos/sysprog21/rv32emu-prebuilt/releases -O- \
364+
| grep '"tag_name"' \
365+
| grep "ELF" \
366+
| head -n 1 \
367+
| sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
368+
make LATEST_RELEASE=$LATEST_RELEASE artifact
369+
LATEST_RELEASE=$(wget --header="Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -q \
370+
https://api.github.com/repos/sysprog21/rv32emu-prebuilt/releases -O- \
371+
| grep '"tag_name"' \
372+
| grep "Linux-Image" \
373+
| head -n 1 \
374+
| sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
375+
make LATEST_RELEASE=$LATEST_RELEASE ENABLE_SYSTEM=1 artifact
376+
LATEST_RELEASE=$(wget --header="Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -q \
377+
https://api.github.com/repos/sysprog21/rv32emu-prebuilt/releases -O- \
378+
| grep '"tag_name"' \
379+
| grep "sail" \
380+
| head -n 1 \
381+
| sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
382+
make LATEST_RELEASE=$LATEST_RELEASE ENABLE_ARCH_TEST=1 artifact
365383
# Hack Cloudflare 403 Forbidden on GitHub Runner for Doom artifact download
366384
wget --header="User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15" \
367385
--header="Referer: https://www.doomworld.com/" \

mk/artifact.mk

+16-11
Original file line numberDiff line numberDiff line change
@@ -43,25 +43,30 @@ define fetch-releases-tag
4343
$(if $(wildcard $(BIN_DIR)/$(2)), \
4444
$(info $(call warnx, $(3) is found. Skipping downloading.)), \
4545
$(eval LATEST_RELEASE := $(shell wget -q https://api.github.com/repos/sysprog21/rv32emu-prebuilt/releases -O- \
46-
| grep '"tag_name"' \
47-
| grep "$(1)" \
48-
| head -n 1 \
49-
| sed -E 's/.*"tag_name": "([^"]+)".*/\1/')) \
46+
| grep '"tag_name"' \
47+
| grep "$(1)" \
48+
| head -n 1 \
49+
| sed -E 's/.*"tag_name": "([^"]+)".*/\1/')) \
5050
$(if $(LATEST_RELEASE),, \
5151
$(error Fetching tag of latest releases failed) \
5252
) \
5353
)
5454
endef
5555

56+
LATEST_RELEASE ?=
57+
5658
ifeq ($(call has, PREBUILT), 1)
57-
ifeq ($(call has, SYSTEM), 1)
58-
$(call fetch-releases-tag,Linux-Image,rv32emu-linux-image-prebuilt.tar.gz,Linux image)
59-
else ifeq ($(call has, ARCH_TEST), 1)
60-
$(call fetch-releases-tag,sail,rv32emu-prebuilt-sail-$(HOST_PLATFORM),Sail model)
61-
else
62-
$(call fetch-releases-tag,ELF,rv32emu-prebuilt.tar.gz,Prebuilt blob)
59+
# On macOS/arm64 Github runner, let's leverage the ${{ secrets.GITHUB_TOKEN }} to prevent 403 rate limit error.
60+
# Thus, the LATEST_RELEASE tag is defined at Github job steps, no need to fetch them here.
61+
ifeq ($(LATEST_RELEASE),)
62+
ifeq ($(call has, SYSTEM), 1)
63+
$(call fetch-releases-tag,Linux-Image,rv32emu-linux-image-prebuilt.tar.gz,Linux image)
64+
else ifeq ($(call has, ARCH_TEST), 1)
65+
$(call fetch-releases-tag,sail,rv32emu-prebuilt-sail-$(HOST_PLATFORM),Sail model)
66+
else
67+
$(call fetch-releases-tag,ELF,rv32emu-prebuilt.tar.gz,Prebuilt benchmark)
68+
endif
6369
endif
64-
6570
PREBUILT_BLOB_URL = https://github.com/sysprog21/rv32emu-prebuilt/releases/download/$(LATEST_RELEASE)
6671
else
6772
# Since rv32emu only supports the dynamic binary translation of integer instruction in tiered compilation currently,

0 commit comments

Comments
 (0)