mirror of
https://github.com/google/security-research
synced 2026-06-08 14:27:23 +00:00
37 lines
1.6 KiB
Python
Executable File
37 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env -S python3 -u
|
|
import json
|
|
from utils import *
|
|
from lxml import etree
|
|
|
|
releases = []
|
|
|
|
def add_release(release_id, branch=None):
|
|
url = f"https://storage.googleapis.com/kernelctf-build/releases/{release_id}/bzImage"
|
|
status_code = requests.head(url).status_code
|
|
if status_code == 200:
|
|
print(" -> Release already exists, skipping...")
|
|
return
|
|
if status_code != 403:
|
|
fail(f"Unexpected HTTP status code for release check: {status_code} (url = {url})")
|
|
|
|
global releases
|
|
releases.append({ "releaseId": release_id, "branch": branch })
|
|
|
|
for lts_version in ["6.6"]:
|
|
latest_lts = run(f"git ls-remote --tags --sort='-v:refname' https://github.com/gregkh/linux 'v{lts_version}.*[0-9]'")[0].split("refs/tags/")[1]
|
|
print(f"Latest LTS {lts_version}: {latest_lts}")
|
|
add_release(f"lts-{latest_lts[1:]}")
|
|
|
|
for cos_milestone in [105, 109]:
|
|
release_notes = fetch(f"https://cloud.google.com/feeds/cos-{cos_milestone}-release-notes.xml")
|
|
tree = etree.XML(release_notes.encode('utf-8'))
|
|
entries = tree.xpath("//*[local-name() = 'content']/text()")
|
|
latest_entry = entries[0]
|
|
version_tuple = checkOnlyOne(list(set(re.findall(f"cos-{cos_milestone}-(\d+)-(\d+)-(\d+)", latest_entry))), "too many versions were found")
|
|
release_id = f"cos-{cos_milestone}-{'.'.join(version_tuple)}"
|
|
commit = checkOnlyOne(re.findall("https://cos.googlesource.com/third_party/kernel/\+/([0-9a-f]{40})", latest_entry), "multiple commits were found")
|
|
print(f"Latest COS {cos_milestone}: {release_id}, commit = {commit}")
|
|
add_release(release_id, commit)
|
|
|
|
ghSet("OUTPUT", "releases=" + json.dumps(releases))
|