Skip to content

Instantly share code, notes, and snippets.

@alex-way
Created September 5, 2022 08:50
Show Gist options
  • Save alex-way/891ccabaf984c6052dc4f96d2622f667 to your computer and use it in GitHub Desktop.
Save alex-way/891ccabaf984c6052dc4f96d2622f667 to your computer and use it in GitHub Desktop.
Delete Github Artifacts for repo
import requests
from datetime import datetime, timezone
from dateutil import parser
access_token = "POPULATE ME"
repo = "ORG/Repo"
total_bytes_deleted = 0
headers = {"Authorization": f"Bearer {access_token}"}
params = {"per_page": 100, "page": 1}
while params.get("page"):
response = requests.get(
f"https://api.github.com/repos/{repo}/actions/artifacts",
headers=headers,
params=params,
)
response.raise_for_status()
data = response.json()
for artifact in data["artifacts"]:
created_at = parser.parse(artifact["created_at"])
difference = (
datetime.utcnow().replace(tzinfo=timezone.utc) - created_at
)
if difference.days > 28:
print("deleting artifact", artifact["id"])
response = requests.delete(
artifact["url"],
headers=headers,
)
response.raise_for_status()
total_bytes_deleted += artifact["size_in_bytes"]
print("Total bytes saved", total_bytes_deleted)
if len(data["artifacts"]):
params["page"] += 1
else:
del params["page"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment