mirror of
https://github.com/remittor/zapret-openwrt.git
synced 2026-01-27 04:40:34 +03:00
github: releases: Add step "Wait for GitHub API consistency"
This commit is contained in:
58
.github/workflows/releases.yml
vendored
58
.github/workflows/releases.yml
vendored
@@ -5,7 +5,7 @@ on:
|
|||||||
workflows: ["build"]
|
workflows: ["build"]
|
||||||
types: [completed]
|
types: [completed]
|
||||||
release:
|
release:
|
||||||
types: [published, created, edited]
|
types: [published, unpublished, created, edited, deleted, prereleased]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
@@ -25,6 +25,62 @@ jobs:
|
|||||||
ref: gh-pages
|
ref: gh-pages
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
|
- name: Wait for GitHub API consistency (release events)
|
||||||
|
if: github.event_name == 'release'
|
||||||
|
env:
|
||||||
|
REPO: ${{ github.repository }}
|
||||||
|
ACTION: ${{ github.event.action }}
|
||||||
|
TARGET_ID: ${{ github.event.release.id }}
|
||||||
|
TARGET_NAME: ${{ github.event.release.name }}
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
echo "Release action: $ACTION"
|
||||||
|
echo "Target release id: $TARGET_ID"
|
||||||
|
max=10
|
||||||
|
delay=6
|
||||||
|
check() {
|
||||||
|
curl -s https://api.github.com/repos/$REPO/releases
|
||||||
|
}
|
||||||
|
for iter in $(seq 1 $max); do
|
||||||
|
case "$ACTION" in
|
||||||
|
created)
|
||||||
|
echo "Release created (draft). No API wait needed."
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
published|prereleased)
|
||||||
|
if check | jq "any(.[]; .id == $TARGET_ID)"; then
|
||||||
|
echo "Release appeared in API"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
deleted)
|
||||||
|
if ! check | jq "any(.[]; .id == $TARGET_ID)"; then
|
||||||
|
echo "Release disappeared from API"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
unpublished)
|
||||||
|
if check | jq "any(.[]; .id == $TARGET_ID and .draft == true)"; then
|
||||||
|
echo "Release is now draft"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
edited)
|
||||||
|
if check | jq "any(.[]; .id == $TARGET_ID and .name == \"$TARGET_NAME\")"; then
|
||||||
|
echo "Release updated"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "No consistency wait needed for action: $ACTION"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo "Retry $iter/$max..."
|
||||||
|
sleep "$delay"
|
||||||
|
done
|
||||||
|
echo "WARNING: API consistency timeout for action $ACTION"
|
||||||
|
|
||||||
- name: Save FULL releases.json
|
- name: Save FULL releases.json
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
Reference in New Issue
Block a user