alpine-zdt-images/scripts/update-release.py.in
Jake Buchholz 396bb8ab86 Build Profiles and 3.9.4
* Build Profiles (completion of PR #49)
+ auto-updates version profile when new release detected
+ updates releases/<profile>.yaml after successful builds
* Prune AMIs (in AWS and in releases/<profile>.yaml
+ 'revision' - keep latest revision per release
+ 'release' - keep latest release per version
+ 'version' - remove end-of-life versions
* releases/README.md updater script
* README overhaul
+ Pre-built AMIs --> releases/README.md
+ profiles/README.md for profile configuration details
+ main README.md overhauled to go over how to build and manage custom AMIs
2019-07-05 12:51:09 -07:00

63 lines
1.5 KiB
Python

@PYTHON@
# vim: set ts=4 et:
import json
import os
import re
import sys
import yaml
if len(sys.argv) != 3:
sys.exit("Usage: " + os.path.basename(__file__) + " <profile> <build>")
PROFILE = sys.argv[1]
BUILD = sys.argv[2]
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
MANIFEST_JSON = os.path.join(
SCRIPT_DIR, 'profile', PROFILE, BUILD, 'manifest.json'
)
RELEASE_DIR = os.path.join(SCRIPT_DIR, '..', 'releases')
RELEASE_YAML = os.path.join(RELEASE_DIR, PROFILE + '.yaml')
if not os.path.exists(RELEASE_DIR):
os.makedirs(RELEASE_DIR)
releases = {}
if os.path.exists(RELEASE_YAML):
with open(RELEASE_YAML, 'r') as data:
releases = yaml.safe_load(data)
with open(MANIFEST_JSON, 'r') as data:
MANIFEST = json.load(data)
A = re.split(':|,', MANIFEST['builds'][0]['artifact_id'])
ARTIFACTS = dict(zip(A[0::2], A[1::2]))
BUILD_TIME = MANIFEST['builds'][0]['build_time']
DATA = MANIFEST['builds'][0]['custom_data']
RELEASE = DATA['release']
if BUILD not in releases:
releases[BUILD] = {}
if RELEASE not in releases[BUILD]:
releases[BUILD][RELEASE] = {}
REVISION = {
'description': DATA['ami_desc'],
'profile': PROFILE,
'profile_build': BUILD,
'version': DATA['version'],
'release': RELEASE,
'arch': DATA['arch'],
'revision': DATA['revision'],
'end_of_life': DATA['end_of_life'],
'build_time': BUILD_TIME,
'artifacts': ARTIFACTS
}
releases[BUILD][RELEASE][DATA['ami_name']] = REVISION
with open(RELEASE_YAML, 'w') as data:
yaml.dump(releases, data, sort_keys=False)