diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d3fd1455..fa8ab692 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -70,40 +70,17 @@ jobs: > "$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 + gh release delete "$TAG_NAME" \ + --repo "$GITHUB_REPOSITORY" \ + --yes 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 diff --git a/tests/config/frontend-workflow.spec.ts b/tests/config/frontend-workflow.spec.ts index ea15c9d0..d77a1bcb 100644 --- a/tests/config/frontend-workflow.spec.ts +++ b/tests/config/frontend-workflow.spec.ts @@ -72,13 +72,14 @@ describe('前端测试 workflow', () => { expect(workflow).toContain('run: yarn --frozen-lockfile') expect(workflow).toContain('echo "frontend_version=v$frontend_version"') expect(workflow).toContain('gh api --include') + expect(workflow).toContain('gh release delete "$TAG_NAME"') 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("awk 'body { print; exit }") 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')