Skip to content

Commit 9358cb3

Browse files
authored
Update pecl.yml
1 parent b7c6bbe commit 9358cb3

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

.github/workflows/pecl.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,73 @@ jobs:
153153
154154
gh release upload "${release_tag}" "${artifact_name}" \
155155
-R ${{ github.repository }} --clobber
156+
157+
cleanup-release:
158+
runs-on: ubuntu-latest
159+
if: failure()
160+
needs: [get-extension-matrix, extension, pecl-release]
161+
steps:
162+
- name: Checkout repository
163+
uses: actions/checkout@v4
164+
with:
165+
fetch-depth: 0
166+
token: ${{ secrets.GITHUB_TOKEN }}
167+
168+
- name: Setup git
169+
run: |
170+
git config --global user.name "github-actions[bot]"
171+
git config --global user.email "github-actions[bot]@users.noreply.github.com"
172+
173+
- name: Cleanup Release in Case of Failure
174+
env:
175+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
176+
run: |
177+
set -e
178+
179+
extension=$(basename "${{ inputs.extension-url }}" | tr '[:upper:]' '[:lower:]')
180+
ref="${{ inputs.extension-ref }}"
181+
release_tag="${extension}-${ref}"
182+
183+
echo "=== Starting cleanup for release: $release_tag ==="
184+
185+
echo "=== Deleting all artifacts from this run ==="
186+
artifact_ids=$(gh api repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts --jq '.artifacts[].id' 2>/dev/null || echo "")
187+
if [ -n "$artifact_ids" ]; then
188+
for artifact_id in $artifact_ids; do
189+
echo "Deleting artifact $artifact_id"
190+
gh api -X DELETE repos/${{ github.repository }}/actions/artifacts/$artifact_id || true
191+
done
192+
else
193+
echo "No artifacts found for this run"
194+
fi
195+
196+
echo "=== Checking if release $release_tag exists ==="
197+
if gh release view "$release_tag" -R ${{ github.repository }} >/dev/null 2>&1; then
198+
echo "Release $release_tag exists, proceeding with cleanup"
199+
200+
echo "=== Deleting all assets from release $release_tag ==="
201+
assets=$(gh release view "$release_tag" -R ${{ github.repository }} --json assets --jq '.assets[].name' 2>/dev/null || echo "")
202+
if [ -n "$assets" ]; then
203+
for asset in $assets; do
204+
echo "Deleting asset: $asset"
205+
gh release delete-asset "$release_tag" "$asset" -R ${{ github.repository }} -y || true
206+
done
207+
else
208+
echo "No assets found in release $release_tag"
209+
fi
210+
211+
echo "=== Deleting release $release_tag ==="
212+
gh release delete "$release_tag" -R ${{ github.repository }} -y || true
213+
else
214+
echo "Release $release_tag does not exist, skipping release cleanup"
215+
fi
216+
217+
echo "=== Checking if tag $release_tag exists ==="
218+
if git rev-parse "refs/tags/$release_tag" >/dev/null 2>&1; then
219+
echo "Tag $release_tag exists, deleting it"
220+
git push origin ":refs/tags/$release_tag" || true
221+
else
222+
echo "Tag $release_tag does not exist, skipping tag deletion"
223+
fi
224+
225+
echo "=== Cleanup completed successfully ==="

0 commit comments

Comments
 (0)