From edc91023bb1f925fcff1d75478d1f5fc64fbae9d Mon Sep 17 00:00:00 2001 From: Marc LeBlanc <7050295+marcleblanc2@users.noreply.github.com> Date: Wed, 30 Sep 2026 12:43:20 -0600 Subject: [PATCH 1/2] release.yaml: share duplicated steps with YAML anchors patch/minor/major create steps were three byte-identical copies apart from a stray echo and the release type in the commit message and PR title. The type is already recorded in the commit body via {{config}}, and the Temporal release workflow already titles these PRs "(internal) release: build vX", so the copies collapse into one anchored list. The public-registry sg ops steps, chart:version, chart:appVersion and helm-docs steps were also repeated between promoteToPublic.create and promoteToPublic.finalize; they are now defined once and aliased. Rendered steps for every operation (sg release steps) are unchanged except for the intended commit message / PR title / step-name edits. 615 -> 354 lines. Amp-Thread-ID: https://ampcode.com/threads/T-01a0f395-3034-73c8-90dc-e665c3d9477f Co-authored-by: Amp --- release.yaml | 323 +++++---------------------------------------------- 1 file changed, 31 insertions(+), 292 deletions(-) diff --git a/release.yaml b/release.yaml index 45107dcb..17b70961 100644 --- a/release.yaml +++ b/release.yaml @@ -23,113 +23,19 @@ requirements: env: "DOCKER_USERNAME" - name: "Docker password" env: "DOCKER_PASSWORD" + +# Steps shared between sections are defined once with a YAML anchor (&name) +# and reused with an alias (*name). The release type (patch/minor/major) is +# recorded in the commit body via {{config}}. internal: create: steps: - patch: - - name: sg ops:sourcegraph - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph/ - - - name: sg ops:dind - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/dind/ - - - name: sg ops:k8s - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/k8s/ - - - name: sg ops:migrator - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-migrator/ - - - name: "chart:version" - cmd: | - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/examples/subchart/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - - name: "chart:appVersion" - cmd: | - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - - name: "helm:docs" - cmd: ./scripts/helm-docs.sh - - - name: "git:branch" - cmd: | - set -eu - branch="internal/release-{{version}}" - echo "Creating branch $branch" - git switch -c $branch - - - name: "git:commit" - cmd: | - git commit -am 'release_patch: {{version}}' -m '{{config}}' - - - name: "git:push" - cmd: | - branch="internal/release-{{version}}" - git push origin ${branch} - - - name: "github:pr" - cmd: | - set -eu - gh pr create \ - --fill \ - --draft \ - --title "(internal) release_patch: build {{version}}" \ - --body "Test plan: automated release PR, CI will perform additional checks" - echo "🚢 Please check the associated CI build to ensure the process completed". - - minor: + patch: &internal_create_steps - name: sg ops:sourcegraph cmd: | set -eu registry=us-docker.pkg.dev/sourcegraph-images/internal - echo "updating sourcegraph images" sg ops update-images \ -t {{inputs.server.tag}} \ -k helm \ @@ -177,7 +83,8 @@ internal: --docker-password $DOCKER_PASSWORD \ charts/sourcegraph-migrator/ - - name: "chart:version" + - &chart_version + name: "chart:version" cmd: | comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/examples/subchart/Chart.yaml @@ -185,14 +92,16 @@ internal: comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - name: "chart:appVersion" + - &chart_app_version + name: "chart:appVersion" cmd: | comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - name: "helm:docs" + - &helm_docs + name: "helm:docs" cmd: ./scripts/helm-docs.sh - name: "git:branch" @@ -204,7 +113,7 @@ internal: - name: "git:commit" cmd: | - git commit -am 'release_minor: {{version}}' -m '{{config}}' + git commit -am 'release: {{version}}' -m '{{config}}' - name: "git:push" cmd: | @@ -217,107 +126,12 @@ internal: gh pr create \ --fill \ --draft \ - --title "(internal) release_minor: build {{version}}" \ + --title "(internal) release: build {{version}}" \ --body "Test plan: automated release PR, CI will perform additional checks" echo "🚢 Please check the associated CI build to ensure the process completed". - major: - - name: sg ops:sourcegraph - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - echo "updating sourcegraph images" - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph/ - - - name: sg ops:dind - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/dind/ - - - name: sg ops:k8s - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/k8s/ - - - name: sg ops:migrator - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-migrator/ - - - name: "chart:version" - cmd: | - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/examples/subchart/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - - name: "chart:appVersion" - cmd: | - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - - name: "helm:docs" - cmd: ./scripts/helm-docs.sh - - - name: "git:branch" - cmd: | - set -eu - branch="internal/release-{{version}}" - echo "Creating branch $branch" - git switch -c $branch - - - name: "git:commit" - cmd: | - git commit -am 'release_major: {{version}}' -m '{{config}}' - - - name: "git:push" - cmd: | - branch="internal/release-{{version}}" - git push origin ${branch} - - - name: "github:pr" - cmd: | - set -eu - gh pr create \ - --fill \ - --draft \ - --title "(internal) release_major: build {{version}}" \ - --body "Test plan: automated release PR, CI will perform additional checks" - echo "🚢 Please check the associated CI build to ensure the process completed". + minor: *internal_create_steps + major: *internal_create_steps finalize: steps: @@ -367,25 +181,6 @@ test: promoteToPublic: create: steps: - # - name: 'validate promotion criteria' - # cmd: | - # echo "validating promotion criteria" - # body=$(wget --content-on-error -O- --header="Content-Type: application/json" "https://releaseregistry.sourcegraph.com/v1/releases/helm/{{version}}") - # exit_code=$? - - # if [ $exit_code != 0 ]; then - # echo "❌ Failed to fetch release on release registry, got:" - # echo "--- raw body ---" - # echo $body - # echo "--- raw body ---" - # exit $exit_code - # fi - - # is_development=$(echo "$body" | jq -r '.is_development') - # if [ "$is_development" = "true" ]; then - # echo "cannot promote a development release" - # exit 1 - # fi - name: "git" cmd: | set -eu @@ -393,7 +188,8 @@ promoteToPublic: echo "Checking out origin/${branch}" git fetch origin "${branch}" git switch "${branch}" - - name: sg ops:sourcegraph + - &public_images_sourcegraph + name: sg ops:sourcegraph cmd: | set -eu registry=index.docker.io/sourcegraph @@ -404,7 +200,8 @@ promoteToPublic: --docker-username $DOCKER_USERNAME \ --docker-password $DOCKER_PASSWORD \ charts/sourcegraph/ - - name: sg ops:dind + - &public_images_dind + name: sg ops:dind cmd: | set -eu registry=index.docker.io/sourcegraph @@ -415,7 +212,8 @@ promoteToPublic: --docker-username $DOCKER_USERNAME \ --docker-password $DOCKER_PASSWORD \ charts/sourcegraph-executor/dind/ - - name: sg ops:k8s + - &public_images_k8s + name: sg ops:k8s cmd: | set -eu registry=index.docker.io/sourcegraph @@ -426,7 +224,8 @@ promoteToPublic: --docker-username $DOCKER_USERNAME \ --docker-password $DOCKER_PASSWORD \ charts/sourcegraph-executor/k8s/ - - name: sg ops:migrator + - &public_images_migrator + name: sg ops:migrator cmd: | set -eu registry=index.docker.io/sourcegraph @@ -437,8 +236,7 @@ promoteToPublic: --docker-username $DOCKER_USERNAME \ --docker-password $DOCKER_PASSWORD \ charts/sourcegraph-migrator/ - - name: "update helm docs" - cmd: ./scripts/helm-docs.sh + - *helm_docs - name: "git:branch" cmd: | set -eu @@ -527,71 +325,13 @@ promoteToPublic: echo "Creating branch origin/${branch}" git switch -c "${branch}" - - name: sg ops:sourcegraph - cmd: | - set -eu - registry=index.docker.io/sourcegraph - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph/ - - - name: sg ops:dind - cmd: | - set -eu - registry=index.docker.io/sourcegraph - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/dind/ - - - name: sg ops:k8s - cmd: | - set -eu - registry=index.docker.io/sourcegraph - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/k8s/ - - - name: sg ops:migrator - cmd: | - set -eu - registry=index.docker.io/sourcegraph - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-migrator/ - - - name: "chart:version" - cmd: | - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/examples/subchart/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - - name: "chart:appVersion" - cmd: | - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - - name: "update helm docs" - cmd: ./scripts/helm-docs.sh + - *public_images_sourcegraph + - *public_images_dind + - *public_images_k8s + - *public_images_migrator + - *chart_version + - *chart_app_version + - *helm_docs - name: "git:commit" cmd: | @@ -612,4 +352,3 @@ promoteToPublic: --title "Update main: build {{version}}" \ --body "Test plan: automated release PR, CI will perform additional checks" echo "🚢 Please check the associated CI build to ensure the process completed". - From 38ae5ee36602a72cfccac72dc4aff90db31ee519 Mon Sep 17 00:00:00 2001 From: Marc LeBlanc <7050295+marcleblanc2@users.noreply.github.com> Date: Wed, 30 Sep 2026 13:43:58 -0600 Subject: [PATCH 2/2] release.yaml: move shared step anchors to a top-level x-shared-steps key Defines every anchor once, up front, so readers see the shared building blocks before the sections that use them. sg release ignores the unknown top-level key. Output of sg release steps is unchanged for every operation. Amp-Thread-ID: https://ampcode.com/threads/T-01a0f395-3034-73c8-90dc-e665c3d9477f Co-authored-by: Amp --- release.yaml | 346 +++++++++++++++++++++++++++------------------------ 1 file changed, 185 insertions(+), 161 deletions(-) diff --git a/release.yaml b/release.yaml index 17b70961..da96f6d7 100644 --- a/release.yaml +++ b/release.yaml @@ -24,114 +24,182 @@ requirements: - name: "Docker password" env: "DOCKER_PASSWORD" -# Steps shared between sections are defined once with a YAML anchor (&name) -# and reused with an alias (*name). The release type (patch/minor/major) is -# recorded in the commit body via {{config}}. +# Steps shared by more than one section below, defined once here as YAML +# anchors (&name) and referenced with aliases (*name). `sg release` ignores +# this top-level key; only the aliases matter. The release type +# (patch/minor/major) is recorded in the commit body via {{config}}. +x-shared-steps: + internal-images-sourcegraph: &internal-images-sourcegraph + name: sg ops:sourcegraph + cmd: | + set -eu + registry=us-docker.pkg.dev/sourcegraph-images/internal + + sg ops update-images \ + -t {{inputs.server.tag}} \ + -k helm \ + --registry "${registry}" \ + --docker-username $DOCKER_USERNAME \ + --docker-password $DOCKER_PASSWORD \ + charts/sourcegraph/ + + internal-images-dind: &internal-images-dind + name: sg ops:dind + cmd: | + set -eu + registry=us-docker.pkg.dev/sourcegraph-images/internal + + sg ops update-images \ + -t {{inputs.server.tag}} \ + -k helm \ + --registry "${registry}" \ + --docker-username $DOCKER_USERNAME \ + --docker-password $DOCKER_PASSWORD \ + charts/sourcegraph-executor/dind/ + + internal-images-k8s: &internal-images-k8s + name: sg ops:k8s + cmd: | + set -eu + registry=us-docker.pkg.dev/sourcegraph-images/internal + + sg ops update-images \ + -t {{inputs.server.tag}} \ + -k helm \ + --registry "${registry}" \ + --docker-username $DOCKER_USERNAME \ + --docker-password $DOCKER_PASSWORD \ + charts/sourcegraph-executor/k8s/ + + internal-images-migrator: &internal-images-migrator + name: sg ops:migrator + cmd: | + set -eu + registry=us-docker.pkg.dev/sourcegraph-images/internal + + sg ops update-images \ + -t {{inputs.server.tag}} \ + -k helm \ + --registry "${registry}" \ + --docker-username $DOCKER_USERNAME \ + --docker-password $DOCKER_PASSWORD \ + charts/sourcegraph-migrator/ + + public-images-sourcegraph: &public-images-sourcegraph + name: sg ops:sourcegraph + cmd: | + set -eu + registry=index.docker.io/sourcegraph + sg ops update-images \ + -t {{inputs.server.tag}} \ + -k helm \ + --registry "${registry}" \ + --docker-username $DOCKER_USERNAME \ + --docker-password $DOCKER_PASSWORD \ + charts/sourcegraph/ + + public-images-dind: &public-images-dind + name: sg ops:dind + cmd: | + set -eu + registry=index.docker.io/sourcegraph + sg ops update-images \ + -t {{inputs.server.tag}} \ + -k helm \ + --registry "${registry}" \ + --docker-username $DOCKER_USERNAME \ + --docker-password $DOCKER_PASSWORD \ + charts/sourcegraph-executor/dind/ + + public-images-k8s: &public-images-k8s + name: sg ops:k8s + cmd: | + set -eu + registry=index.docker.io/sourcegraph + sg ops update-images \ + -t {{inputs.server.tag}} \ + -k helm \ + --registry "${registry}" \ + --docker-username $DOCKER_USERNAME \ + --docker-password $DOCKER_PASSWORD \ + charts/sourcegraph-executor/k8s/ + + public-images-migrator: &public-images-migrator + name: sg ops:migrator + cmd: | + set -eu + registry=index.docker.io/sourcegraph + sg ops update-images \ + -t {{inputs.server.tag}} \ + -k helm \ + --registry "${registry}" \ + --docker-username $DOCKER_USERNAME \ + --docker-password $DOCKER_PASSWORD \ + charts/sourcegraph-migrator/ + + chart-version: &chart-version + name: "chart:version" + cmd: | + comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml + comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/examples/subchart/Chart.yaml + comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml + comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml + comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml + + chart-app-version: &chart-app-version + name: "chart:appVersion" + cmd: | + comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml + comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml + comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml + comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml + + helm-docs: &helm-docs + name: "helm:docs" + cmd: ./scripts/helm-docs.sh + + # Shared by internal.create patch/minor/major. + internal-create: &internal-create + - *internal-images-sourcegraph + - *internal-images-dind + - *internal-images-k8s + - *internal-images-migrator + - *chart-version + - *chart-app-version + - *helm-docs + + - name: "git:branch" + cmd: | + set -eu + branch="internal/release-{{version}}" + echo "Creating branch $branch" + git switch -c $branch + + - name: "git:commit" + cmd: | + git commit -am 'release: {{version}}' -m '{{config}}' + + - name: "git:push" + cmd: | + branch="internal/release-{{version}}" + git push origin ${branch} + + - name: "github:pr" + cmd: | + set -eu + gh pr create \ + --fill \ + --draft \ + --title "(internal) release: build {{version}}" \ + --body "Test plan: automated release PR, CI will perform additional checks" + echo "🚢 Please check the associated CI build to ensure the process completed". + internal: create: steps: - patch: &internal_create_steps - - name: sg ops:sourcegraph - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph/ - - - name: sg ops:dind - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/dind/ - - - name: sg ops:k8s - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/k8s/ - - - name: sg ops:migrator - cmd: | - set -eu - registry=us-docker.pkg.dev/sourcegraph-images/internal - - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-migrator/ - - - &chart_version - name: "chart:version" - cmd: | - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph/examples/subchart/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml - comby -matcher ".generic" -in-place "version: \":[~\d+\.\d+\.\d+]\"" 'version: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - - &chart_app_version - name: "chart:appVersion" - cmd: | - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/dind/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-executor/k8s/Chart.yaml - comby -matcher ".generic" -in-place "appVersion: \":[~\d+\.\d+\.\d+]\"" 'appVersion: "{{inputs.server.tag}}"' -f charts/sourcegraph-migrator/Chart.yaml - - - &helm_docs - name: "helm:docs" - cmd: ./scripts/helm-docs.sh - - - name: "git:branch" - cmd: | - set -eu - branch="internal/release-{{version}}" - echo "Creating branch $branch" - git switch -c $branch - - - name: "git:commit" - cmd: | - git commit -am 'release: {{version}}' -m '{{config}}' - - - name: "git:push" - cmd: | - branch="internal/release-{{version}}" - git push origin ${branch} - - - name: "github:pr" - cmd: | - set -eu - gh pr create \ - --fill \ - --draft \ - --title "(internal) release: build {{version}}" \ - --body "Test plan: automated release PR, CI will perform additional checks" - echo "🚢 Please check the associated CI build to ensure the process completed". - - minor: *internal_create_steps - major: *internal_create_steps + patch: *internal-create + minor: *internal-create + major: *internal-create finalize: steps: @@ -188,55 +256,11 @@ promoteToPublic: echo "Checking out origin/${branch}" git fetch origin "${branch}" git switch "${branch}" - - &public_images_sourcegraph - name: sg ops:sourcegraph - cmd: | - set -eu - registry=index.docker.io/sourcegraph - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph/ - - &public_images_dind - name: sg ops:dind - cmd: | - set -eu - registry=index.docker.io/sourcegraph - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/dind/ - - &public_images_k8s - name: sg ops:k8s - cmd: | - set -eu - registry=index.docker.io/sourcegraph - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-executor/k8s/ - - &public_images_migrator - name: sg ops:migrator - cmd: | - set -eu - registry=index.docker.io/sourcegraph - sg ops update-images \ - -t {{inputs.server.tag}} \ - -k helm \ - --registry "${registry}" \ - --docker-username $DOCKER_USERNAME \ - --docker-password $DOCKER_PASSWORD \ - charts/sourcegraph-migrator/ - - *helm_docs + - *public-images-sourcegraph + - *public-images-dind + - *public-images-k8s + - *public-images-migrator + - *helm-docs - name: "git:branch" cmd: | set -eu @@ -325,13 +349,13 @@ promoteToPublic: echo "Creating branch origin/${branch}" git switch -c "${branch}" - - *public_images_sourcegraph - - *public_images_dind - - *public_images_k8s - - *public_images_migrator - - *chart_version - - *chart_app_version - - *helm_docs + - *public-images-sourcegraph + - *public-images-dind + - *public-images-k8s + - *public-images-migrator + - *chart-version + - *chart-app-version + - *helm-docs - name: "git:commit" cmd: |