Skip to content

Instantly share code, notes, and snippets.

@dudo
Created January 18, 2025 21:30
Show Gist options
  • Save dudo/0afbc32c7ee04e2f6fb0479d4b8b76b0 to your computer and use it in GitHub Desktop.
Save dudo/0afbc32c7ee04e2f6fb0479d4b8b76b0 to your computer and use it in GitHub Desktop.
Delete Github Deployments
# Variables
OWNER="owner"
REPO="repo"
# List all deployments
DEPLOYMENTS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/$OWNER/$REPO/deployments | jq -r '.[].id')
# Check if any deployments were found
if [ -z "$DEPLOYMENTS" ]; then
echo "No deployments found."
fi
# Iterate through each deployment
echo "$DEPLOYMENTS" | while IFS= read -r ID; do
echo "Attempting to delete deployment ID: $ID"
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X DELETE \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/$OWNER/$REPO/deployments/$ID)
if [ "$RESPONSE" -eq 204 ]; then
echo "Successfully deleted deployment ID: $ID"
elif [ "$RESPONSE" -eq 422 ]; then
echo "Deployment ID: $ID cannot be deleted - marking as inactive."
INACTIVE_RESPONSE=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
-d '{"state": "inactive"}' \
https://api.github.com/repos/$OWNER/$REPO/deployments/$ID/statuses)
if [[ "$INACTIVE_RESPONSE" == *"state"* ]]; then
echo "Deployment ID: $ID marked as inactive. Retrying deletion..."
RETRY_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -X DELETE \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
https://api.github.com/repos/$OWNER/$REPO/deployments/$ID)
if [ "$RETRY_RESPONSE" -eq 204 ]; then
echo "Successfully deleted deployment ID: $ID after marking as inactive."
else
echo "Failed to delete deployment ID: $ID after marking as inactive."
fi
else
echo "Failed to mark deployment ID: $ID as inactive."
fi
else
echo "Failed to delete deployment ID: $ID (HTTP status: $RESPONSE)"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment