mirror of
https://github.com/neondatabase/neon.git
synced 2025-12-23 06:09:59 +00:00
## Problem We had a problem with https://github.com/neondatabase/neon/pull/11413 having e2e tests failing, because an e2e test (8d271bed47) depended on an unreleased pageserver fix (0ee5bfa2fc). This came up because neon release CI runs against the most recent releases of the other components, but cloud e2e tests run against latest, which is tagged from main. ## Summary of changes Add an additional `released` tag for released versions. ## Alternative to consider We could (and maybe should) instead switch to `latest` being used for released versions and `main` being used where we use `latest` right now. That'd also mean we don't have to adjust the CI in the cloud repo.
70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
import itertools
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
source_tag = os.getenv("SOURCE_TAG")
|
|
target_tag = os.getenv("TARGET_TAG")
|
|
branch = os.getenv("BRANCH")
|
|
dev_acr = os.getenv("DEV_ACR")
|
|
prod_acr = os.getenv("PROD_ACR")
|
|
dev_aws = os.getenv("DEV_AWS")
|
|
prod_aws = os.getenv("PROD_AWS")
|
|
aws_region = os.getenv("AWS_REGION")
|
|
|
|
components = {
|
|
"neon": ["neon"],
|
|
"compute": [
|
|
"compute-node-v14",
|
|
"compute-node-v15",
|
|
"compute-node-v16",
|
|
"compute-node-v17",
|
|
"vm-compute-node-v14",
|
|
"vm-compute-node-v15",
|
|
"vm-compute-node-v16",
|
|
"vm-compute-node-v17",
|
|
],
|
|
}
|
|
|
|
registries = {
|
|
"dev": [
|
|
"docker.io/neondatabase",
|
|
"ghcr.io/neondatabase",
|
|
f"{dev_aws}.dkr.ecr.{aws_region}.amazonaws.com",
|
|
f"{dev_acr}.azurecr.io/neondatabase",
|
|
],
|
|
"prod": [
|
|
f"{prod_aws}.dkr.ecr.{aws_region}.amazonaws.com",
|
|
f"{prod_acr}.azurecr.io/neondatabase",
|
|
],
|
|
}
|
|
|
|
release_branches = ["release", "release-proxy", "release-compute"]
|
|
|
|
outputs: dict[str, dict[str, list[str]]] = {}
|
|
|
|
target_tags = (
|
|
[target_tag, "latest"]
|
|
if branch == "main"
|
|
else [target_tag, "released"]
|
|
if branch in release_branches
|
|
else [target_tag]
|
|
)
|
|
target_stages = ["dev", "prod"] if branch in release_branches else ["dev"]
|
|
|
|
for component_name, component_images in components.items():
|
|
for stage in target_stages:
|
|
outputs[f"{component_name}-{stage}"] = {
|
|
f"ghcr.io/neondatabase/{component_image}:{source_tag}": [
|
|
f"{registry}/{component_image}:{tag}"
|
|
for registry, tag in itertools.product(registries[stage], target_tags)
|
|
if not (registry == "ghcr.io/neondatabase" and tag == source_tag)
|
|
]
|
|
for component_image in component_images
|
|
}
|
|
|
|
with open(os.getenv("GITHUB_OUTPUT", "/dev/null"), "a") as f:
|
|
for key, value in outputs.items():
|
|
f.write(f"{key}={json.dumps(value)}\n")
|
|
print(f"Image map for {key}:\n{json.dumps(value, indent=2)}\n\n", file=sys.stderr)
|