Skip to content

Commit 8281715

Browse files
authored
Merge pull request #84 from ngundotra/update-whitelist
Update whitelist
2 parents 875eda6 + b272312 commit 8281715

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

update_image_whitelist.py

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,48 @@
1+
import re
12
import requests
23
import os
34

45
github_token = os.environ.get('GITHUB_TOKEN')
56
use_ghcr = os.environ.get('USE_GHCR', 'false').lower() == 'true'
67
headers = {'Authorization': f'Bearer {github_token}'}
78

8-
if not use_ghcr:
9+
if use_ghcr:
910
response = requests.get(
10-
"https://hub.docker.com/v2/namespaces/ellipsislabs/repositories/solana/tags?page_size=1000"
11+
"https://api.github.com/orgs/ellipsis-labs/packages/container/solana/versions?per_page=100",
12+
headers=headers
1113
)
1214
if response.status_code != 200:
1315
raise Exception(f"Failed to get Docker images: {response.status_code} {response.text}")
14-
results = response.json()["results"]
16+
results = response.json()
1517
else:
1618
response = requests.get(
17-
"https://api.github.com/users/ngundotra/packages/container/solana/versions?per_page=100",
18-
headers=headers
19+
"https://hub.docker.com/v2/namespaces/ellipsislabs/repositories/solana/tags?page_size=1000"
1920
)
2021
if response.status_code != 200:
2122
raise Exception(f"Failed to get Docker images: {response.status_code} {response.text}")
22-
results = response.json()
23+
results = response.json()["results"]
2324

2425
digest_map = {}
2526
for result in results:
26-
if result["name"] != "latest":
27-
try:
28-
major, minor, patch = list(map(int, result["name"].split(".")))
29-
digest_map[(major, minor, patch)] = result["digest"]
30-
except Exception as e:
31-
print(e)
32-
continue
27+
if use_ghcr:
28+
# For GHCR, extract version from metadata
29+
metadata = result.get("metadata", {})
30+
container = metadata.get("container", {})
31+
tags = container.get("tags", [])
32+
for tag in tags:
33+
match = re.match(r'(\d+)\.(\d+)\.(\d+)', tag)
34+
if match:
35+
major, minor, patch = map(int, match.groups())
36+
digest_map[(major, minor, patch)] = result["name"] # "name" contains the digest for GHCR
37+
break
38+
else:
39+
if result["name"] != "latest":
40+
try:
41+
major, minor, patch = list(map(int, result["name"].split(".")))
42+
digest_map[(major, minor, patch)] = result["digest"]
43+
except Exception as e:
44+
print(e)
45+
continue
3346

3447

3548
entries = []

0 commit comments

Comments
 (0)