diff options
author | Daniil Baturin <daniil@baturin.org> | 2021-01-31 01:43:19 +0700 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2021-01-31 01:48:56 +0700 |
commit | de0e7e483ba0e3b059b74899c28aff95f4293726 (patch) | |
tree | 3c9cb8d6b0f2d10360e7707f45be134407796dd2 /scripts | |
parent | d930d384e4b49bc59a0394b7a67808b4110fdcca (diff) | |
download | community.vyos.net-de0e7e483ba0e3b059b74899c28aff95f4293726.tar.gz community.vyos.net-de0e7e483ba0e3b059b74899c28aff95f4293726.zip |
Add a nightly builds pages.
Not yet public, until nightly builds on S3 are public.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/list-nightly-builds.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/scripts/list-nightly-builds.py b/scripts/list-nightly-builds.py new file mode 100755 index 0000000..6de4058 --- /dev/null +++ b/scripts/list-nightly-builds.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +# +# Builds a list of nightly builds from S3 +# +# Requires the following environment variables: +# SNAPSHOTS_BUCKET +# AWS_ACCESS_KEY_ID +# AWS_SECRET_ACCESS_KEY + +import os +import re +import json + +import boto3 + +import jinja2 + +from functools import cmp_to_key + +bucket = os.getenv("SNAPSHOTS_BUCKET") + +def make_link(s, f): + f = re.sub(r'\s+', '+', f) + return "https://s3.amazonaws.com/{0}/{1}".format(bucket, f) + +def compare(l, r): + try: + regex = r'\-(\d+)\-' + l_date = int(re.search(regex, l).group(1)) + r_date = int(re.search(regex, r).group(1)) + if l_date == r_date: + return 0 + elif l_date > r_date: + return 1 + else: + return -1 + except: + return(-1) + + +s3 = boto3.client('s3') +object_listing = s3.list_objects_v2(Bucket=bucket, Prefix='rolling') +data = object_listing['Contents'] + +files = [] +for f in data: + files.append(f['Key']) + +file_names = list(set(map(lambda s: re.sub(r'rolling/(.*?)', r'\1', s), files))) +file_names.sort(reverse=True, key=cmp_to_key(compare)) + +builds = [] + +for name in file_names: + build = {} + build['file'] = name + build['link'] = make_link('rolling', name) + + builds.append(build) + +tmpl = jinja2.Template(""" +<ul> +{% for b in builds %} + <li><a href="{{b.link}}">{{b.file}}</a></li> +{% endfor %} +</ul> +""") + +print(tmpl.render(builds=builds)) |