From 5e1b1b7018ded68900aa0deede548c182ad2a72a Mon Sep 17 00:00:00 2001 From: PeterSchafer <101886095+PeterSchafer@users.noreply.github.com> Date: Mon, 11 Mar 2024 12:47:13 +0100 Subject: [PATCH] chore: Add support for additional deployment channels (#5098) * chore: add new differentiation of deployments * chore: for testing disable branch filters * chore: update noop job * chore: disable uploading artifacts for testing * revert: disable uploading artifacts for testing This reverts commit 872de216e028f599741f2e478afa1fcb410782ef. * chore: temporary move deployment jobs * chore: fix message * chore: test main * chore: update message * revert: temporary changes * chore: use smaller resource for no-op --- .circleci/config.yml | 85 ++++++++++++++++--- release-scripts/determine-release-channel.sh | 3 +- .../enable-stable-release-channels.sh | 6 ++ release-scripts/skip-deployment.sh | 20 +++++ release-scripts/upload-artifacts.sh | 5 ++ 5 files changed, 106 insertions(+), 13 deletions(-) create mode 100755 release-scripts/enable-stable-release-channels.sh create mode 100755 release-scripts/skip-deployment.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index d311d8bf6f..25406c5937 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,6 +36,10 @@ executors: alpine: docker: - image: alpine:3.17 + generic-ubuntu: + docker: + - image: ubuntu:latest + resource_class: small docker-amd64: docker: - image: bastiandoetsch209/cli-build:20240214-145818 @@ -343,6 +347,19 @@ commands: - attach_workspace: at: . + shall-deploy: + parameters: + deployment: + type: string + steps: + - run: + name: Shall deployment be done + command: | + if [ "$(./release-scripts/skip-deployment.sh << parameters.deployment >>)" == true ]; then + echo The current branch does not deploy to \"<< parameters.deployment >>\" + circleci-agent step halt + fi + #################################################################################################### # WORKFLOWS #################################################################################################### @@ -724,12 +741,11 @@ workflows: branches: only: - main + - '/release.*/' - '/.*e2e.*/' - - release-s3: - name: upload preview - deployment: preview - context: team-hammerhead-common-deploy-tokens + - noop: + name: Start Deployments requires: - Validate NPM artifacts (docker-amd64) - Validate NPM artifacts (win-server2019-amd64) @@ -752,27 +768,57 @@ workflows: - e2e fips tests (win-server2022-amd64) filters: branches: - only: main + only: + - main + - '/release.*/' - release-s3: - name: upload latest - deployment: latest + name: upload preview + deployment: preview context: team-hammerhead-common-deploy-tokens requires: - - upload preview + - Start Deployments filters: branches: - only: main + only: + - main + - '/release.*/' + + - release-s3: + name: upload release candidate + deployment: rc + context: team-hammerhead-common-deploy-tokens + requires: + - Start Deployments + filters: + branches: + only: + - main + - '/release.*/' + + - release-s3: + name: upload latest/stable + deployment: stable + context: team-hammerhead-common-deploy-tokens + requires: + - Start Deployments + filters: + branches: + only: + - main + - '/release.*/' - release-github: name: upload github context: team-hammerhead-common-deploy-tokens requires: - - upload latest + - upload latest/stable filters: branches: only: - main + - '/release.*/' + - release-npm: name: upload npm context: team-hammerhead-common-deploy-tokens @@ -782,6 +828,7 @@ workflows: branches: only: - main + - '/release.*/' - trigger-building-snyk-images: name: Trigger building snyk-images @@ -792,6 +839,7 @@ workflows: branches: only: - main + - '/release.*/' #################################################################################################### # JOBS @@ -1176,10 +1224,12 @@ jobs: parameters: deployment: type: string - default: latest + default: stable executor: docker-amd64 steps: - prepare-workspace + - shall-deploy: + deployment: << parameters.deployment >> - aws-cli/install: version: << pipeline.parameters.aws_version >> - run: @@ -1191,6 +1241,8 @@ jobs: executor: docker-amd64 steps: - prepare-workspace + - shall-deploy: + deployment: stable - gh/setup: token: HAMMERHEAD_GITHUB_PAT version: << pipeline.parameters.gh_version >> @@ -1203,6 +1255,8 @@ jobs: executor: docker-amd64 steps: - prepare-workspace + - shall-deploy: + deployment: stable - run: name: Publish to npm command: ./release-scripts/upload-artifacts.sh npm @@ -1212,7 +1266,16 @@ jobs: executor: docker-amd64 steps: - prepare-workspace + - shall-deploy: + deployment: stable - run: name: Trigger build-and-publish workflow at snyk-images command: ./release-scripts/upload-artifacts.sh trigger-snyk-images - failed-release-notification + + noop: + executor: generic-ubuntu + steps: + - run: + name: No operation + command: echo Nothing to be done! diff --git a/release-scripts/determine-release-channel.sh b/release-scripts/determine-release-channel.sh index f787df6736..ec7e88eb07 100755 --- a/release-scripts/determine-release-channel.sh +++ b/release-scripts/determine-release-channel.sh @@ -12,8 +12,7 @@ set -euo pipefail # - dev -# enable support for stable, preview and other release channels -ENABLE_STABLE_CHANNELS=false +ENABLE_STABLE_CHANNELS=$($(dirname "$0")/enable-stable-release-channels.sh) CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" if [ $ENABLE_STABLE_CHANNELS == true ]; then # support for stable, preview and release candidate diff --git a/release-scripts/enable-stable-release-channels.sh b/release-scripts/enable-stable-release-channels.sh new file mode 100755 index 0000000000..546c171f60 --- /dev/null +++ b/release-scripts/enable-stable-release-channels.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail + +# enable support for stable, preview and other release channels +ENABLE_STABLE_CHANNELS=false +echo $ENABLE_STABLE_CHANNELS diff --git a/release-scripts/skip-deployment.sh b/release-scripts/skip-deployment.sh new file mode 100755 index 0000000000..103c59a195 --- /dev/null +++ b/release-scripts/skip-deployment.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -euo pipefail +# Based on the given release channel as an argument, this script checks if the current +# branch is used for this channel. + +TEST_CHANNEL=$1 +ENABLE_STABLE_CHANNELS=$($(dirname "$0")/enable-stable-release-channels.sh) + +# legacy release channel mapping (preview=stable) +if [ "$TEST_CHANNEL" == "preview" ] && [ "$ENABLE_STABLE_CHANNELS" == false ]; then + TEST_CHANNEL=stable +fi + +RELEASE_CHANNEL="$($(dirname "$0")/determine-release-channel.sh)" +if [ "$RELEASE_CHANNEL" == $TEST_CHANNEL ]; then + echo false + exit 0 +fi + +echo true \ No newline at end of file diff --git a/release-scripts/upload-artifacts.sh b/release-scripts/upload-artifacts.sh index 7c8df1d5ee..9e8974fabf 100755 --- a/release-scripts/upload-artifacts.sh +++ b/release-scripts/upload-artifacts.sh @@ -211,5 +211,10 @@ for arg in "${@}"; do # Upload files to S3 bucket else upload_s3 "${target}" + + # stable and latest are the same target + if [ "${target}" == "stable" ]; then + upload_s3 "latest" + fi fi done