Skip to content

Commit ff708ea

Browse files
authored
fix: upload release assets before publishing (#104)
1 parent 433ab08 commit ff708ea

1 file changed

Lines changed: 38 additions & 4 deletions

File tree

.github/workflows/release.yml

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
url: https://pypi.org/p/cisco-ai-skill-scanner
2424
permissions:
2525
id-token: write
26-
contents: write # needed to attach requirements.txt to the GitHub release
26+
contents: write # needed to create/update the GitHub release assets
2727
steps:
2828
- name: Checkout code
2929
uses: actions/checkout@v4
@@ -53,12 +53,46 @@ jobs:
5353
--no-emit-project \
5454
--output-file release-assets/requirements.txt
5555
56-
- name: Publish package distributions to PyPI
57-
uses: pypa/gh-action-pypi-publish@release/v1
56+
- name: Check GitHub release state
57+
id: release-state
58+
env:
59+
GH_TOKEN: ${{ github.token }}
60+
VERSION: ${{ inputs.version }}
61+
run: |
62+
if gh release view "$VERSION" --json isDraft --jq '.isDraft' >/tmp/release-is-draft; then
63+
is_draft="$(</tmp/release-is-draft)"
64+
echo "exists=true" >> "$GITHUB_OUTPUT"
65+
echo "draft=$is_draft" >> "$GITHUB_OUTPUT"
5866
59-
- name: Attach requirements.txt to GitHub release
67+
if [[ "$is_draft" == "false" ]]; then
68+
echo "published=true" >> "$GITHUB_OUTPUT"
69+
echo "::warning::GitHub release $VERSION is already published. Immutable releases cannot accept new assets, so requirements.txt upload will be skipped."
70+
else
71+
echo "published=false" >> "$GITHUB_OUTPUT"
72+
fi
73+
else
74+
echo "exists=false" >> "$GITHUB_OUTPUT"
75+
echo "draft=false" >> "$GITHUB_OUTPUT"
76+
echo "published=false" >> "$GITHUB_OUTPUT"
77+
fi
78+
79+
- name: Attach requirements.txt to draft GitHub release
80+
if: steps.release-state.outputs.published != 'true'
6081
uses: softprops/action-gh-release@v2
6182
with:
6283
tag_name: ${{ inputs.version }}
6384
files: release-assets/requirements.txt
6485
fail_on_unmatched_files: true
86+
draft: true
87+
88+
- name: Publish package distributions to PyPI
89+
uses: pypa/gh-action-pypi-publish@release/v1
90+
with:
91+
skip-existing: true
92+
93+
- name: Publish GitHub release
94+
if: steps.release-state.outputs.published != 'true'
95+
env:
96+
GH_TOKEN: ${{ github.token }}
97+
VERSION: ${{ inputs.version }}
98+
run: gh release edit "$VERSION" --draft=false

0 commit comments

Comments
 (0)