1313 MAX_RETRIES : 3
1414 RETRY_DELAY : 30
1515
16+ permissions :
17+ contents : write
18+ issues : write
19+
1620jobs :
1721 update-release :
1822 runs-on : ubuntu-latest
@@ -94,20 +98,31 @@ jobs:
9498 env :
9599 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
96100 run : |
97- # Check if release exists
98- if gh release view "${{ env.VERSION }}" &>/dev/null; then
99- # Update existing release and upload ISO
100- gh release edit "${{ env.VERSION }}" \
101- --title "Release ${{ env.VERSION }}" \
102- --notes-file release_notes.md
103- gh release upload "${{ env.VERSION }}" ./iso-files/*
104- else
105- # Create new release with ISO
106- gh release create "${{ env.VERSION }}" \
107- --title "Release ${{ env.VERSION }}" \
108- --notes-file release_notes.md \
109- --target ${GITHUB_REF#refs/heads/} \
110- ./iso-files/*
101+ retries=0
102+ max_retries=${{ env.MAX_RETRIES }}
103+
104+ while [ $retries -lt $max_retries ]; do
105+ if gh release view "${{ env.VERSION }}" &>/dev/null; then
106+ gh release edit "${{ env.VERSION }}" \
107+ --title "Release ${{ env.VERSION }}" \
108+ --notes-file release_notes.md && \
109+ gh release upload "${{ env.VERSION }}" ./iso-files/* && break
110+ else
111+ gh release create "${{ env.VERSION }}" \
112+ --title "Release ${{ env.VERSION }}" \
113+ --notes-file release_notes.md \
114+ --target ${GITHUB_REF#refs/heads/} \
115+ ./iso-files/* && break
116+ fi
117+
118+ retries=$((retries + 1))
119+ [ $retries -lt $max_retries ] && sleep ${{ env.RETRY_DELAY }}
120+ done
121+
122+ if [ $retries -eq $max_retries ]; then
123+ echo "::error::Failed to create/update release after $max_retries attempts"
124+ exit 1
125+ fi
111126
112127 - name : Upload Build Logs
113128 if : always()
@@ -119,10 +134,13 @@ jobs:
119134
120135 - name : Notify on Failure
121136 if : failure()
137+ env :
138+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
122139 uses : actions/github-script@v6
123140 with :
141+ github-token : ${{ secrets.GITHUB_TOKEN }}
124142 script : |
125- const issue = await github.rest.issues.create({
143+ await github.rest.issues.create({
126144 owner: context.repo.owner,
127145 repo: context.repo.repo,
128146 title: '❌ Release Update Failed',
0 commit comments