Added script to remove old images
This commit is contained in:
parent
6922f1be13
commit
706cc0aa37
|
|
@ -0,0 +1,25 @@
|
|||
name: Erase old versions
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- clean_*
|
||||
repository_dispatch:
|
||||
types: [clean]
|
||||
|
||||
jobs:
|
||||
do_clean:
|
||||
name: Remove old versions
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
packages: write
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Remove old untagged and dev_* versions
|
||||
run: |
|
||||
cd tools
|
||||
python3 garbage_collector.py ${{ secrets.PKG_TOKEN }}
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/python3
|
||||
from datetime import datetime, timezone
|
||||
import requests
|
||||
import sys
|
||||
|
||||
|
||||
ORG = 'INTI-CMNB'
|
||||
PKGS = {'kicad_auto', 'kicad5_auto', 'kicad6_auto', 'kicad7_auto'}
|
||||
PKG = 'kicad5_auto'
|
||||
HEADER = {'Accept': 'application/vnd.github+json',
|
||||
'Authorization': 'Bearer '+sys.argv[1],
|
||||
'X-GitHub-Api-Version': '2022-11-28'}
|
||||
|
||||
|
||||
def erase(name):
|
||||
url = f'https://api.github.com/orgs/{ORG}/packages/container/{PKG}/versions/{name}'
|
||||
r = requests.delete(url, timeout=20, allow_redirects=True, headers=HEADER)
|
||||
assert r.status_code == 204, r.status_code
|
||||
|
||||
|
||||
deleted = 0
|
||||
for PKG in PKGS:
|
||||
url = f'https://api.github.com/orgs/{ORG}/packages/container/{PKG}/versions'
|
||||
page = 1
|
||||
received = 100
|
||||
vers = []
|
||||
while received == 100:
|
||||
r = requests.get(url, timeout=20, allow_redirects=True, headers=HEADER, params={'per_page': 100, 'page': page})
|
||||
assert r.status_code == 200
|
||||
page = page+1
|
||||
res = r.json()
|
||||
vers.extend(res)
|
||||
received = len(res)
|
||||
|
||||
now = datetime.now(timezone.utc)
|
||||
for v in vers:
|
||||
# How old is this version?
|
||||
date_str = v["updated_at"]
|
||||
parsed_date = datetime.fromisoformat(date_str.replace('Z', '+00:00'))
|
||||
days_ago = (now - parsed_date).days
|
||||
# Leave anything with 15 or less days
|
||||
if days_ago < 15:
|
||||
continue
|
||||
# Analyze the tags
|
||||
tags = v["metadata"]["container"]["tags"]
|
||||
if len(tags) == 0:
|
||||
print(f"Deleting {v['html_url']} UNTAGGED {days_ago} days ago")
|
||||
erase(v["id"])
|
||||
deleted += 1
|
||||
elif len(tags) == 1 and tags[0].startswith('dev_'):
|
||||
# Is dev_* and isn't tagged as the last dev
|
||||
print(f"Deleting {v['html_url']} {tags[0]} {days_ago} days ago")
|
||||
erase(v["id"])
|
||||
deleted += 1
|
||||
print(f"Deleted {deleted} versions")
|
||||
Loading…
Reference in New Issue