diff --git a/.woodpecker.star b/.woodpecker.star index 39e1c91c9f..7fadb097ef 100644 --- a/.woodpecker.star +++ b/.woodpecker.star @@ -388,6 +388,8 @@ config = { "production": { # NOTE: need to be updated if new production releases are determined "tags": ["2.0", "4.0"], + # NOTE: need to be set to true if patch releases are made from stable-X-branches + "skip_rolling": "false", "repo": docker_repo_slug, "build_type": "production", }, @@ -1608,31 +1610,39 @@ def uploadTracingResult(ctx): def dockerReleases(ctx): pipelines = [] - docker_repos = [] + docker_releases = [] build_type = "" + # only make realeases on tag events if ctx.build.event == "tag": tag = ctx.build.ref.replace("refs/tags/v", "").lower() + # iterate over production tags to see if this is a production release is_production = False + skip_rolling = False for prod_tag in config["dockerReleases"]["production"]["tags"]: if tag.startswith(prod_tag): is_production = True + skip_rolling = config["dockerReleases"]["production"]["skip_rolling"] break if is_production: - docker_repos.append(config["dockerReleases"]["production"]["repo"]) - build_type = config["dockerReleases"]["production"]["build_type"] + docker_releases.append("production") + # a new production realease is also a rolling release + # unless skip_rolling is set in the config, i.e. for patch-releases on stable-branch + if not skip_rolling: + docker_releases.append("rolling") else: - docker_repos.append(config["dockerReleases"]["rolling"]["repo"]) - build_type = config["dockerReleases"]["rolling"]["build_type"] + docker_releases.append("rolling") + # on non tag events, do daily build else: - docker_repos.append(config["dockerReleases"]["daily"]["repo"]) - build_type = config["dockerReleases"]["daily"]["build_type"] + docker_releases.append("daily") - for repo in docker_repos: + for releaseConfigName in docker_releases: + repo = config["dockerReleases"][releaseConfigName]["repo"] + build_type = config["dockerReleases"][releaseConfigName]["build_type"] repo_pipelines = [] repo_pipelines.append(dockerRelease(ctx, repo, build_type))