mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 07:28:37 +08:00
chore(workflow): 使用原生 GitHub Release 工具 (#727)
This commit is contained in:
+90
-20
@@ -23,7 +23,7 @@ jobs:
|
|||||||
id: release_version
|
id: release_version
|
||||||
run: |
|
run: |
|
||||||
frontend_version=$(jq -r '.version' package.json)
|
frontend_version=$(jq -r '.version' package.json)
|
||||||
echo "frontend_version=v$frontend_version" >> $GITHUB_ENV
|
echo "frontend_version=v$frontend_version" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Setup node
|
- name: Setup node
|
||||||
uses: actions/setup-node@v7
|
uses: actions/setup-node@v7
|
||||||
@@ -54,23 +54,93 @@ jobs:
|
|||||||
echo "$frontend_version" > dist/version.txt
|
echo "$frontend_version" > dist/version.txt
|
||||||
zip -r dist.zip dist
|
zip -r dist.zip dist
|
||||||
|
|
||||||
- name: Delete Release
|
- name: Publish Release
|
||||||
uses: dev-drprasad/delete-tag-and-release@v1.1
|
|
||||||
continue-on-error: true
|
|
||||||
with:
|
|
||||||
tag_name: ${{ env.frontend_version }}
|
|
||||||
delete_release: true
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Generate Release
|
|
||||||
uses: softprops/action-gh-release@v2
|
|
||||||
with:
|
|
||||||
tag_name: ${{ env.frontend_version }}
|
|
||||||
name: ${{ env.frontend_version }}
|
|
||||||
draft: false
|
|
||||||
prerelease: false
|
|
||||||
make_latest: true
|
|
||||||
files: |
|
|
||||||
dist.zip
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
TAG_NAME: ${{ env.frontend_version }}
|
||||||
|
TARGET_SHA: ${{ github.sha }}
|
||||||
|
run: |
|
||||||
|
release_response=$(mktemp)
|
||||||
|
release_error=$(mktemp)
|
||||||
|
trap 'rm -f "$release_response" "$release_error"' EXIT
|
||||||
|
|
||||||
|
set +e
|
||||||
|
gh api --include \
|
||||||
|
"repos/${GITHUB_REPOSITORY}/releases/tags/${TAG_NAME}" \
|
||||||
|
> "$release_response" 2> "$release_error"
|
||||||
|
set -e
|
||||||
|
release_status=$(awk 'NR == 1 { print $2; exit }' "$release_response")
|
||||||
|
release_id=""
|
||||||
|
|
||||||
|
if [ "$release_status" = "200" ]; then
|
||||||
|
release_id=$(awk 'body { print; exit } /^[[:space:]]*$/ { body=1 }' \
|
||||||
|
"$release_response" | jq -r '.id')
|
||||||
|
if [ -z "$release_id" ] || [ "$release_id" = "null" ]; then
|
||||||
|
echo "Unable to resolve release id for ${TAG_NAME}" >&2
|
||||||
|
cat "$release_error" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ "$release_status" != "404" ]; then
|
||||||
|
echo "Unable to query release ${TAG_NAME} (HTTP ${release_status:-unknown})" >&2
|
||||||
|
cat "$release_error" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$release_id" ]; then
|
||||||
|
delete_response=$(mktemp)
|
||||||
|
delete_error=$(mktemp)
|
||||||
|
set +e
|
||||||
|
gh api --include --silent --method DELETE \
|
||||||
|
"repos/${GITHUB_REPOSITORY}/releases/${release_id}" \
|
||||||
|
> "$delete_response" 2> "$delete_error"
|
||||||
|
set -e
|
||||||
|
delete_status=$(awk 'NR == 1 { print $2; exit }' "$delete_response")
|
||||||
|
if [ "$delete_status" != "204" ] && [ "$delete_status" != "404" ]; then
|
||||||
|
echo "Unable to delete release ${TAG_NAME} (HTTP ${delete_status:-unknown})" >&2
|
||||||
|
cat "$delete_error" >&2
|
||||||
|
rm -f "$delete_response" "$delete_error"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f "$delete_response" "$delete_error"
|
||||||
|
fi
|
||||||
|
|
||||||
|
tag_query_response=$(mktemp)
|
||||||
|
tag_query_error=$(mktemp)
|
||||||
|
set +e
|
||||||
|
gh api --include \
|
||||||
|
"repos/${GITHUB_REPOSITORY}/git/ref/tags/${TAG_NAME}" \
|
||||||
|
> "$tag_query_response" 2> "$tag_query_error"
|
||||||
|
set -e
|
||||||
|
tag_query_status=$(awk 'NR == 1 { print $2; exit }' "$tag_query_response")
|
||||||
|
if [ "$tag_query_status" = "200" ]; then
|
||||||
|
tag_delete_response=$(mktemp)
|
||||||
|
tag_delete_error=$(mktemp)
|
||||||
|
set +e
|
||||||
|
gh api --include --silent --method DELETE \
|
||||||
|
"repos/${GITHUB_REPOSITORY}/git/refs/tags/${TAG_NAME}" \
|
||||||
|
> "$tag_delete_response" 2> "$tag_delete_error"
|
||||||
|
set -e
|
||||||
|
tag_delete_status=$(awk 'NR == 1 { print $2; exit }' "$tag_delete_response")
|
||||||
|
if [ "$tag_delete_status" != "204" ]; then
|
||||||
|
echo "Unable to delete tag ${TAG_NAME} (HTTP ${tag_delete_status:-unknown})" >&2
|
||||||
|
cat "$tag_delete_error" >&2
|
||||||
|
rm -f "$tag_delete_response" "$tag_delete_error"
|
||||||
|
rm -f "$tag_query_response" "$tag_query_error"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f "$tag_delete_response" "$tag_delete_error"
|
||||||
|
elif [ "$tag_query_status" != "404" ]; then
|
||||||
|
echo "Unable to query tag ${TAG_NAME} (HTTP ${tag_query_status:-unknown})" >&2
|
||||||
|
cat "$tag_query_error" >&2
|
||||||
|
rm -f "$tag_query_response" "$tag_query_error"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f "$tag_query_response" "$tag_query_error"
|
||||||
|
|
||||||
|
gh release create "$TAG_NAME" \
|
||||||
|
--repo "$GITHUB_REPOSITORY" \
|
||||||
|
--target "$TARGET_SHA" \
|
||||||
|
--title "$TAG_NAME" \
|
||||||
|
--notes "" \
|
||||||
|
--latest \
|
||||||
|
dist.zip
|
||||||
|
|||||||
@@ -71,6 +71,16 @@ describe('前端测试 workflow', () => {
|
|||||||
expect(workflow).toContain('corepack install --global yarn@1.22.22')
|
expect(workflow).toContain('corepack install --global yarn@1.22.22')
|
||||||
expect(workflow).toContain('run: yarn --frozen-lockfile')
|
expect(workflow).toContain('run: yarn --frozen-lockfile')
|
||||||
expect(workflow).toContain('echo "frontend_version=v$frontend_version"')
|
expect(workflow).toContain('echo "frontend_version=v$frontend_version"')
|
||||||
|
expect(workflow).toContain('gh api --include')
|
||||||
|
expect(workflow).toContain('gh release create "$TAG_NAME"')
|
||||||
|
expect(workflow).toContain('release_status" != "404"')
|
||||||
|
expect(workflow).toContain('delete_status" != "404"')
|
||||||
|
expect(workflow).toContain('git/ref/tags/${TAG_NAME}')
|
||||||
|
expect(workflow).toContain('tag_query_status" = "200"')
|
||||||
|
expect(workflow).toContain('tag_query_status" != "404"')
|
||||||
|
expect(workflow).toContain('tag_delete_status" != "204"')
|
||||||
|
expect(workflow).not.toContain('dev-drprasad/delete-tag-and-release')
|
||||||
|
expect(workflow).not.toContain('softprops/action-gh-release')
|
||||||
expect(workflow).not.toContain('actions/checkout@v3')
|
expect(workflow).not.toContain('actions/checkout@v3')
|
||||||
expect(workflow).not.toContain('actions/setup-node@v3')
|
expect(workflow).not.toContain('actions/setup-node@v3')
|
||||||
expect(workflow).not.toContain(' - v2')
|
expect(workflow).not.toContain(' - v2')
|
||||||
|
|||||||
Reference in New Issue
Block a user