From 32830edc60259a1c87f14190dad6decd6f2f53e1 Mon Sep 17 00:00:00 2001 From: Guilherme Caulada Date: Wed, 19 Jul 2023 13:35:16 -0300 Subject: [PATCH] [v9.4.x] CI: Allow RGM to create msi for multiple editions (#71892) CI: Allow RGM to create msi for multiple editions (#71883) * Allow RGM to create msi for multiple editions * Remove suffix from build-windows-installer step * Invert exit code on verify_release_pipeline (cherry picked from commit 4c80bcf35fa01499cfd6e58a2ad3d9d32f14d0a5) --- .drone.yml | 80 ++++++++++++++++++++++++++++--- scripts/drone/events/release.star | 2 +- scripts/drone/rgm.star | 18 ++++--- scripts/drone/steps/lib.star | 23 ++++++--- 4 files changed, 102 insertions(+), 21 deletions(-) diff --git a/.drone.yml b/.drone.yml index 28afe5c1f87..5aedfe4fafd 100644 --- a/.drone.yml +++ b/.drone.yml @@ -2990,8 +2990,8 @@ steps: - apt-get update && apt-get install -yq gettext - printenv GCP_KEY | base64 -d > /tmp/key.json - gcloud auth activate-service-account --key-file=/tmp/key.json - - ./scripts/list-release-artifacts.sh ${DRONE_TAG} | xargs -n1 gsutil stat | grep - "No URLs matched" + - '! ./scripts/list-release-artifacts.sh ${DRONE_TAG} | xargs -n1 gsutil stat | + grep "No URLs matched"' depends_on: - clone environment: @@ -3186,7 +3186,7 @@ environment: image_pull_secrets: - dockerconfigjson kind: pipeline -name: rgm-tag-prerelease-windows +name: rgm-tag-prerelease-windows-oss platform: arch: amd64 os: windows @@ -3246,7 +3246,73 @@ clone: retries: 3 depends_on: - rgm-tag-prerelease -- rgm-tag-prerelease-windows +environment: + EDITION: enterprise +image_pull_secrets: +- dockerconfigjson +kind: pipeline +name: rgm-tag-prerelease-windows-enterprise +platform: + arch: amd64 + os: windows + version: "1809" +services: [] +steps: +- commands: + - echo $env:DRONE_RUNNER_NAME + image: mcr.microsoft.com/windows:1809 + name: identify-runner +- commands: + - $$ProgressPreference = "SilentlyContinue" + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.40/windows/grabpl.exe + -OutFile grabpl.exe + image: grafana/ci-wix:0.1.1 + name: windows-init +- commands: + - $$gcpKey = $$env:GCP_KEY + - '[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($$gcpKey)) + > gcpkey.json' + - dos2unix gcpkey.json + - gcloud auth activate-service-account --key-file=gcpkey.json + - rm gcpkey.json + - cp C:\App\nssm-2.24.zip . + - .\grabpl.exe windows-installer --target gs://grafana-prerelease-dev/artifacts/downloads/${DRONE_TAG}/enterprise/release/grafana-enterprise-${DRONE_TAG:1}.windows-amd64.zip + --edition enterprise ${DRONE_TAG} + - $$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0] + - gsutil cp $$fname gs://grafana-prerelease-dev/artifacts/downloads/${DRONE_TAG}/enterprise/release/ + - gsutil cp "$$fname.sha256" gs://grafana-prerelease-dev/artifacts/downloads/${DRONE_TAG}/enterprise/release/ + depends_on: + - windows-init + environment: + GCP_KEY: + from_secret: gcp_key + GITHUB_TOKEN: + from_secret: github_token + PRERELEASE_BUCKET: + from_secret: prerelease_bucket + image: grafana/ci-wix:0.1.1 + name: build-windows-installer +trigger: + event: + exclude: + - promote + ref: + exclude: + - refs/tags/*-cloud* + include: + - refs/tags/v* +type: docker +volumes: +- host: + path: //./pipe/docker_engine/ + name: docker +--- +clone: + retries: 3 +depends_on: +- rgm-tag-prerelease +- rgm-tag-prerelease-windows-oss +- rgm-tag-prerelease-windows-enterprise image_pull_secrets: - dockerconfigjson kind: pipeline @@ -3262,8 +3328,8 @@ steps: - apt-get update && apt-get install -yq gettext - printenv GCP_KEY | base64 -d > /tmp/key.json - gcloud auth activate-service-account --key-file=/tmp/key.json - - ./scripts/list-release-artifacts.sh ${DRONE_TAG} | xargs -n1 gsutil stat | grep - "No URLs matched" + - '! ./scripts/list-release-artifacts.sh ${DRONE_TAG} | xargs -n1 gsutil stat | + grep "No URLs matched"' depends_on: - clone environment: @@ -4468,6 +4534,6 @@ kind: secret name: github_token --- kind: signature -hmac: 15243b6abac63ca13532a017ba86125d60a03eb0574346e6bde9b187bf8599f6 +hmac: 5a3cafc268ad51ce4c7051202a6e15d8bbfe7169e3360aefedbe506c820bda0c ... diff --git a/scripts/drone/events/release.star b/scripts/drone/events/release.star index cc49f3a4c9f..7c0adcccd1d 100644 --- a/scripts/drone/events/release.star +++ b/scripts/drone/events/release.star @@ -449,7 +449,7 @@ def verify_release_pipeline( "apt-get update && apt-get install -yq gettext", "printenv GCP_KEY | base64 -d > /tmp/key.json", "gcloud auth activate-service-account --key-file=/tmp/key.json", - "./scripts/list-release-artifacts.sh {} | xargs -n1 gsutil stat | grep \"No URLs matched\"".format(version), + "! ./scripts/list-release-artifacts.sh {} | xargs -n1 gsutil stat | grep \"No URLs matched\"".format(version), ], } return pipeline( diff --git a/scripts/drone/rgm.star b/scripts/drone/rgm.star index dc9a7e20db4..e8ce6092d34 100644 --- a/scripts/drone/rgm.star +++ b/scripts/drone/rgm.star @@ -103,28 +103,34 @@ def rgm_tag(): depends_on = [], ) -def rgm_windows(): +def rgm_windows(edition = "oss"): return pipeline( - name = "rgm-tag-prerelease-windows", + name = "rgm-tag-prerelease-windows-{}".format(edition), trigger = tag_trigger, steps = get_windows_steps( ver_mode = "release", bucket = "grafana-prerelease-dev", + edition = edition, ), depends_on = ["rgm-tag-prerelease"], platform = "windows", - environment = {"EDITION": "oss"}, + environment = {"EDITION": edition}, ) def rgm(): return [ rgm_main(), rgm_tag(), - rgm_windows(), + rgm_windows(edition = "oss"), + rgm_windows(edition = "enterprise"), verify_release_pipeline( - name = "rgm-tag-verify-prerelease-assets", trigger = tag_trigger, - depends_on = ["rgm-tag-prerelease", "rgm-tag-prerelease-windows"], + name = "rgm-tag-verify-prerelease-assets", bucket = "grafana-prerelease-dev", + depends_on = [ + "rgm-tag-prerelease", + "rgm-tag-prerelease-windows-oss", + "rgm-tag-prerelease-windows-enterprise", + ], ), ] diff --git a/scripts/drone/steps/lib.star b/scripts/drone/steps/lib.star index 2e6cfb0e7a7..6ecf3dea344 100644 --- a/scripts/drone/steps/lib.star +++ b/scripts/drone/steps/lib.star @@ -1207,12 +1207,13 @@ def windows_clone_step(): ], } -def get_windows_steps(ver_mode, bucket = "%PRERELEASE_BUCKET%"): +def get_windows_steps(ver_mode, bucket = "%PRERELEASE_BUCKET%", edition = "oss"): """Generate the list of Windows steps. Args: ver_mode: used to differentiate steps for different version modes. bucket: used to override prerelease bucket. + edition: used to override edition for RGM builds. Returns: List of Drone steps. @@ -1261,12 +1262,17 @@ def get_windows_steps(ver_mode, bucket = "%PRERELEASE_BUCKET%"): "cp C:\\App\\nssm-2.24.zip .", ] + sfx = "" + if edition != "oss": + sfx = "-{}".format(edition) + if ver_mode in ("release",): version = "${DRONE_TAG:1}" installer_commands.extend( [ - ".\\grabpl.exe windows-installer --target {} --edition oss {}".format( - "gs://{}/{}/oss/{}/grafana-{}.windows-amd64.zip".format(gcp_bucket, ver_part, ver_mode, version), + ".\\grabpl.exe windows-installer --target {} --edition {} {}".format( + "gs://{}/{}/{}/{}/grafana{}-{}.windows-amd64.zip".format(gcp_bucket, ver_part, edition, ver_mode, sfx, version), + edition, ver_part, ), '$$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0]', @@ -1275,9 +1281,10 @@ def get_windows_steps(ver_mode, bucket = "%PRERELEASE_BUCKET%"): if ver_mode == "main": installer_commands.extend( [ - "gsutil cp $$fname gs://{}/oss/{}/".format(gcp_bucket, dir), - 'gsutil cp "$$fname.sha256" gs://{}/oss/{}/'.format( + "gsutil cp $$fname gs://{}/{}/{}/".format(gcp_bucket, edition, dir), + 'gsutil cp "$$fname.sha256" gs://{}/{}/{}/'.format( gcp_bucket, + edition, dir, ), ], @@ -1285,14 +1292,16 @@ def get_windows_steps(ver_mode, bucket = "%PRERELEASE_BUCKET%"): else: installer_commands.extend( [ - "gsutil cp $$fname gs://{}/{}/oss/{}/".format( + "gsutil cp $$fname gs://{}/{}/{}/{}/".format( gcp_bucket, ver_part, + edition, dir, ), - 'gsutil cp "$$fname.sha256" gs://{}/{}/oss/{}/'.format( + 'gsutil cp "$$fname.sha256" gs://{}/{}/{}/{}/'.format( gcp_bucket, ver_part, + edition, dir, ), ],