mirror of
https://github.com/neondatabase/neon.git
synced 2026-08-18 12:08:19 +00:00
3c78133477
## Problem We had a problem with https://github.com/neondatabase/neon/pull/11413 having e2e tests failing, because an e2e test (https://github.com/neondatabase/cloud/commit/8d271bed47498c83b35ff9ace9f7938e6e0f19f3) depended on an unreleased pageserver fix (https://github.com/neondatabase/neon/commit/0ee5bfa2fc01372737fe0e108ae40b3e6f5801a7). 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)
|