Refactor release resolution into reusable script
This commit is contained in:
parent
451302ef2b
commit
0f33753e69
14
.github/workflows/sync-blackbox-exporter.yml
vendored
14
.github/workflows/sync-blackbox-exporter.yml
vendored
@ -43,19 +43,7 @@ jobs:
|
||||
id: latest
|
||||
run: |
|
||||
set -euo pipefail
|
||||
gh api -H "Accept: application/vnd.github+json" \
|
||||
"/repos/${GH_REPO}/releases?per_page=100" \
|
||||
| jq -r '.[].tag_name' \
|
||||
| grep -E '^v0(\\.|$)' \
|
||||
| sort -V -r \
|
||||
| head -n 1 > /tmp/tag.txt
|
||||
|
||||
if [ ! -s /tmp/tag.txt ]; then
|
||||
echo "No v0.* tags found." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TAG=$(cat /tmp/tag.txt)
|
||||
TAG=$(./scripts/resolve_github_repo_release.sh "${GH_REPO}" '^v0(\.|$)' 'v0.*')
|
||||
VERSION=${TAG#v}
|
||||
|
||||
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
|
||||
|
||||
5
.github/workflows/sync-otel-collector.yml
vendored
5
.github/workflows/sync-otel-collector.yml
vendored
@ -29,7 +29,6 @@ jobs:
|
||||
RSYNC_SSH_USER: ${{ secrets.RSYNC_SSH_USER }}
|
||||
VPS_HOST: ${{ secrets.VPS_HOST }}
|
||||
REMOTE_ROOT: /data/update-server/otel/OpenTelemetry/
|
||||
DEFAULT_TAG: v0.133.0
|
||||
outputs:
|
||||
tag: ${{ steps.resolve.outputs.tag }}
|
||||
version: ${{ steps.resolve.outputs.version }}
|
||||
@ -46,7 +45,7 @@ jobs:
|
||||
jq --version
|
||||
rsync --version | head -n1
|
||||
|
||||
- name: Resolve tag (use input or default)
|
||||
- name: Resolve tag (use input or latest v0.*)
|
||||
id: resolve
|
||||
run: |
|
||||
set -euo pipefail
|
||||
@ -54,7 +53,7 @@ jobs:
|
||||
if [ -n "$TAG_INPUT" ]; then
|
||||
TAG="$TAG_INPUT"
|
||||
else
|
||||
TAG="$DEFAULT_TAG"
|
||||
TAG=$(./scripts/resolve_github_repo_release.sh "${GH_REPO}" '^v0\.[0-9]+\.[0-9]+$' 'v0.*')
|
||||
fi
|
||||
|
||||
# 基本校验:必须形如 v0.X.Y
|
||||
|
||||
14
.github/workflows/sync-xray-core.yml
vendored
14
.github/workflows/sync-xray-core.yml
vendored
@ -43,19 +43,7 @@ jobs:
|
||||
id: latest
|
||||
run: |
|
||||
set -euo pipefail
|
||||
gh api -H "Accept: application/vnd.github+json" \
|
||||
"/repos/${GH_REPO}/releases?per_page=100" \
|
||||
| jq -r '.[].tag_name' \
|
||||
| grep -E '^v25(\.|$)' \
|
||||
| sort -V -r \
|
||||
| head -n 1 > /tmp/tag.txt
|
||||
|
||||
if [ ! -s /tmp/tag.txt ]; then
|
||||
echo "No v25.* tags found." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TAG=$(cat /tmp/tag.txt)
|
||||
TAG=$(./scripts/resolve_github_repo_release.sh "${GH_REPO}" '^v25(\.|$)' 'v25.*')
|
||||
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
|
||||
echo "Latest tag: $TAG"
|
||||
|
||||
|
||||
28
scripts/resolve_github_repo_release.sh
Executable file
28
scripts/resolve_github_repo_release.sh
Executable file
@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo "Usage: $0 <github_repo> <tag_regex> [human_readable_pattern]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
GH_REPO="$1"
|
||||
TAG_REGEX="$2"
|
||||
PATTERN_DESC="${3:-$TAG_REGEX}"
|
||||
|
||||
TMP_FILE="$(mktemp)"
|
||||
trap 'rm -f "$TMP_FILE"' EXIT
|
||||
|
||||
gh api -H "Accept: application/vnd.github+json" \
|
||||
"/repos/${GH_REPO}/releases?per_page=100" \
|
||||
| jq -r '.[].tag_name // empty' \
|
||||
| grep -E "${TAG_REGEX}" \
|
||||
| sort -V -r \
|
||||
| head -n 1 > "$TMP_FILE"
|
||||
|
||||
if [ ! -s "$TMP_FILE" ]; then
|
||||
echo "No tags matching pattern (${PATTERN_DESC}) found for ${GH_REPO}." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat "$TMP_FILE"
|
||||
Loading…
Reference in New Issue
Block a user