[maven] Updates to maven automation

1. Drop RC and milestone releases by adopting a simple
   version regex. Drops a few non-stable releases from
   jreleaser and tomcat. Tested against all of the maven
   automated pages

2. Fix pages with multiple auto: maven entries. In particular,
   groovy was using this, but the newer 4.0 releases were not
   being written correctly to disk.
This commit is contained in:
Nemo
2022-12-17 15:30:37 +05:30
committed by Nemo
parent 3ef9727d6f
commit 4670ff7336

View File

@@ -5,7 +5,17 @@ import json
import frontmatter
import urllib.request
import datetime
import re
# Major.Minor + Optional Patch, no RC, nightly releases.
VERSION_REGEX = r'^\d+\.\d+(\.\d+)?$'
# TODO: Add support for custom regexes
# Hasn't been needed yet, so only write if we need it
def valid_version(version):
if re.match(VERSION_REGEX, version):
return True
return False
def fetch_releases(package_identifier):
group_id, artifact_id = package_identifier.split("/")
@@ -21,10 +31,7 @@ def fetch_releases(package_identifier):
for row in data["response"]["docs"]:
date = datetime.datetime.utcfromtimestamp(row["timestamp"] / 1000)
version = row["v"]
if not any(
exception in version
for exception in ["alpha", "beta", "nightly", "rc", "-M"]
):
if valid_version(version):
abs_date = date.strftime("%Y-%m-%d")
releases[version] = abs_date
print("%s: %s" % (version, abs_date))
@@ -40,20 +47,25 @@ def update_releases(product_filter=None):
if product_filter and product_name != product_filter:
continue
with open(product_file, "r") as f:
releases = {}
found_maven = False
print("::group::%s" % product_name)
data = frontmatter.load(f)
if "auto" in data:
for config in data["auto"]:
for key, _ in config.items():
if key == "maven":
update_product(product_name, config)
found_maven = True
releases = releases | fetch_releases(config["maven"])
if found_maven:
write_file(product_name, releases)
print("::endgroup::")
def update_product(product_name, config):
print("::group::%s" % product_name)
r = fetch_releases(config["maven"])
def write_file(product_name, releases):
with open("releases/%s.json" % product_name, "w") as f:
f.write(json.dumps(r, indent=2))
print("::endgroup::")
f.write(json.dumps(releases, indent=2))
if __name__ == "__main__":