|
| 1 | +import re |
1 | 2 | import requests |
2 | 3 | import os |
3 | 4 |
|
4 | 5 | github_token = os.environ.get('GITHUB_TOKEN') |
5 | 6 | use_ghcr = os.environ.get('USE_GHCR', 'false').lower() == 'true' |
6 | 7 | headers = {'Authorization': f'Bearer {github_token}'} |
7 | 8 |
|
8 | | -if not use_ghcr: |
| 9 | +if use_ghcr: |
9 | 10 | 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 |
11 | 13 | ) |
12 | 14 | if response.status_code != 200: |
13 | 15 | raise Exception(f"Failed to get Docker images: {response.status_code} {response.text}") |
14 | | - results = response.json()["results"] |
| 16 | + results = response.json() |
15 | 17 | else: |
16 | 18 | 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" |
19 | 20 | ) |
20 | 21 | if response.status_code != 200: |
21 | 22 | raise Exception(f"Failed to get Docker images: {response.status_code} {response.text}") |
22 | | - results = response.json() |
| 23 | + results = response.json()["results"] |
23 | 24 |
|
24 | 25 | digest_map = {} |
25 | 26 | 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 |
33 | 46 |
|
34 | 47 |
|
35 | 48 | entries = [] |
|
0 commit comments