|
|
@@ -335,51 +335,65 @@ jobs:
|
|
|
OWNER=$(echo "$M" | jq -r .owner)
|
|
|
REPO=$(echo "$M" | jq -r .repo)
|
|
|
SRC=$(echo "$M" | jq -r .source)
|
|
|
- mkdir -p "release-assets/manager/$REPO"
|
|
|
- cd "release-assets/manager/$REPO"
|
|
|
- # Keep each manager artifact as its own zip, named after the manager it
|
|
|
- # represents (e.g. KernelSU-Next_manager.zip, ReSukiSU_<artifact>.zip).
|
|
|
- if [ "$SRC" = "release" ]; then
|
|
|
- echo "Downloading all $REPO manager APKs from latest release"
|
|
|
- curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors \
|
|
|
- "https://api.github.com/repos/${OWNER}/${REPO}/releases/latest" \
|
|
|
- > /tmp/manager-rel.json
|
|
|
- for URL in $(jq -r '.assets[] | select(.name | endswith(".apk")) | .browser_download_url' /tmp/manager-rel.json); do
|
|
|
- NAME="${URL##*/}"
|
|
|
- curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors -o "${NAME}" "$URL"
|
|
|
- done
|
|
|
- else
|
|
|
- RUN_ID=$(echo "$M" | jq -r .run_id)
|
|
|
- echo "Downloading $REPO manager from run $RUN_ID"
|
|
|
- ARTIFACTS_JSON=$(curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors \
|
|
|
- -H "Authorization: Bearer ${{ secrets.MY_GITHUB_TOKEN }}" \
|
|
|
- "https://api.github.com/repos/${OWNER}/${REPO}/actions/runs/${RUN_ID}/artifacts")
|
|
|
- # Include either the `want` name-list or every artifact. Preserve each artifact
|
|
|
- # zip under its own name rather than unzipping them.
|
|
|
- WANT="$(echo "$M" | jq -r '.want | if . then join(",") else "" end')"
|
|
|
- if [ -z "$WANT" ]; then
|
|
|
- echo "$ARTIFACTS_JSON" | jq -r '.artifacts[] | (.id|tostring) + " " + (.name|gsub(" "; "_"))' \
|
|
|
- | while read -r AID ART_NAME; do
|
|
|
- curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors \
|
|
|
- -H "Authorization: Bearer ${{ secrets.MY_GITHUB_TOKEN }}" \
|
|
|
- -o "${REPO}_${ART_NAME}.zip" \
|
|
|
- "https://api.github.com/repos/${OWNER}/${REPO}/actions/artifacts/${AID}/zip"
|
|
|
+ dldir="release-assets/manager/_download"
|
|
|
+ outdir="release-assets/manager/$REPO"
|
|
|
+ mkdir -p "$dldir" "$outdir"
|
|
|
+ (
|
|
|
+ cd "$dldir"
|
|
|
+ if [ "$SRC" = "release" ]; then
|
|
|
+ echo "Downloading all $REPO manager APKs from latest release"
|
|
|
+ curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors \
|
|
|
+ "https://api.github.com/repos/${OWNER}/${REPO}/releases/latest" \
|
|
|
+ > /tmp/manager-rel.json
|
|
|
+ OUT_ABS="${GITHUB_WORKSPACE:-$PWD}/release-assets/manager/$REPO"
|
|
|
+ for URL in $(jq -r '.assets[] | select(.name | endswith(".apk")) | .browser_download_url' /tmp/manager-rel.json); do
|
|
|
+ NAME="${URL##*/}"
|
|
|
+ curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors -o "${NAME}" "$URL"
|
|
|
+ # Each APK becomes its own zip, named after that APK (prefixed with the manager).
|
|
|
+ base="${NAME%.apk}"
|
|
|
+ ( zip -qr "${OUT_ABS}/${REPO}_${base}.zip" "${NAME}" )
|
|
|
done
|
|
|
else
|
|
|
- echo "$ARTIFACTS_JSON" | jq -r --arg want "$WANT" '
|
|
|
- ($want | split(",")) as $wl |
|
|
|
- .artifacts[] | select(.name as $n | any($wl[]; $n == .)) | (.id|tostring) + " " + (.name|gsub(" "; "_"))' \
|
|
|
- | while read -r AID ART_NAME; do
|
|
|
+ RUN_ID=$(echo "$M" | jq -r .run_id)
|
|
|
+ echo "Downloading $REPO manager from run $RUN_ID"
|
|
|
+ ARTIFACTS_JSON=$(curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors \
|
|
|
+ -H "Authorization: Bearer ${{ secrets.MY_GITHUB_TOKEN }}" \
|
|
|
+ "https://api.github.com/repos/${OWNER}/${REPO}/actions/runs/${RUN_ID}/artifacts")
|
|
|
+ WANT="$(echo "$M" | jq -r '.want | if . then join(",") else "" end')"
|
|
|
+ if [ -z "$WANT" ]; then
|
|
|
+ ARTIFACT_IDS=$(echo "$ARTIFACTS_JSON" | jq -r '.artifacts[].id')
|
|
|
+ else
|
|
|
+ ARTIFACT_IDS=$(echo "$ARTIFACTS_JSON" | jq -r --arg want "$WANT" '
|
|
|
+ ($want | split(",")) as $wl |
|
|
|
+ .artifacts[] | select(.name as $n | any($wl[]; $n == .)) | .id')
|
|
|
+ fi
|
|
|
+ echo "$ARTIFACT_IDS" | while read -r AID; do
|
|
|
+ [ -n "$AID" ] || continue
|
|
|
+ ART=$(echo "$ARTIFACTS_JSON" | jq -r --arg id "$AID" '.artifacts[] | select(.id == ($id|tonumber)) | .name | gsub(" "; "_")')
|
|
|
curl -fsSL --retry 5 --retry-delay 5 --retry-all-errors \
|
|
|
-H "Authorization: Bearer ${{ secrets.MY_GITHUB_TOKEN }}" \
|
|
|
- -o "${REPO}_${ART_NAME}.zip" \
|
|
|
+ -o "_${AID}.zip" \
|
|
|
"https://api.github.com/repos/${OWNER}/${REPO}/actions/artifacts/${AID}/zip"
|
|
|
+ mkdir -p "_${AID}"
|
|
|
+ unzip -o -q "_${AID}.zip" -d "_${AID}" || true
|
|
|
+ rm -f "_${AID}.zip"
|
|
|
+ # Each APK becomes its own zip, named after that APK (prefixed with the manager).
|
|
|
+ OUT_ABS="${GITHUB_WORKSPACE:-$PWD}/release-assets/manager/$REPO"
|
|
|
+ for apk in _${AID}/*.apk; do
|
|
|
+ [ -f "$apk" ] || continue
|
|
|
+ base="${apk##*/}"
|
|
|
+ ( cd "_${AID}" && zip -qr "${OUT_ABS}/${REPO}_${base%.apk}.zip" "${base}" )
|
|
|
+ done
|
|
|
+ rm -rf "_${AID}"
|
|
|
done
|
|
|
fi
|
|
|
- fi
|
|
|
+ )
|
|
|
cd "${GITHUB_WORKSPACE:-$HOME}"
|
|
|
find "release-assets/manager/$REPO" -type f -iname '*.zip' -print
|
|
|
done
|
|
|
+ rm -rf release-assets/manager/_download
|
|
|
+ echo "--- final manager zips ---"
|
|
|
+ find release-assets/manager -type f -iname '*.zip' -print
|
|
|
ls -la release-assets/manager
|
|
|
|
|
|
- name: Upload manager APK as artifact
|