Drone: Add E2E Enterprise tests

pull/94972/head
Agnès Toulet 9 months ago
parent cbe1e7d63f
commit 74c48ed903
  1. 152
      .drone.yml
  2. 2
      scripts/drone/events/pr.star
  3. 40
      scripts/drone/pipelines/build.star
  4. 28
      scripts/drone/steps/lib.star
  5. 1
      scripts/drone/utils/images.star

@ -632,7 +632,7 @@ steps:
- apk add --update tar bash
- mkdir grafana
- tar --strip-components=1 -xvf ./dist/*amd64.tar.gz -C grafana
- cp -r devenv scripts tools grafana && cd grafana && ./scripts/grafana-server/start-server
- 'cp -r devenv scripts tools grafana && cd grafana && ./scripts/grafana-server/start-server '
depends_on:
- rgm-package
detach: true
@ -913,6 +913,150 @@ volumes:
clone:
retries: 3
depends_on: []
environment:
EDITION: enterprise
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: pr-build-e2e-enterprise
node:
type: no-parallel
platform:
arch: amd64
os: linux
services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
image: alpine:3.20.3
name: identify-runner
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.56/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
depends_on: []
environment:
CGO_ENABLED: 0
image: golang:1.23.1-alpine
name: compile-build-cmd
- commands:
- '# It is required that code generated from Thema/CUE be committed and in sync
with its inputs.'
- '# The following command will fail if running code generators produces any diff
in output.'
- apk add --update make
- CODEGEN_VERIFY=1 make gen-cue
depends_on: []
image: golang:1.23.1-alpine
name: verify-gen-cue
- commands:
- '# It is required that generated jsonnet is committed and in sync with its inputs.'
- '# The following command will fail if running code generators produces any diff
in output.'
- apk add --update make
- CODEGEN_VERIFY=1 make gen-jsonnet
depends_on: []
image: golang:1.23.1-alpine
name: verify-gen-jsonnet
- commands:
- apk add --update make
- make gen-go
depends_on:
- verify-gen-cue
image: golang:1.23.1-alpine
name: wire-install
- commands:
- yarn install --immutable || yarn install --immutable
depends_on: []
image: node:20.9.0-alpine
name: yarn-install
- commands:
- apk add --update jq bash
- yarn packages:build
- yarn packages:pack
- ./scripts/validate-npm-packages.sh
depends_on:
- yarn-install
environment:
NODE_OPTIONS: --max_old_space_size=8192
image: node:20.9.0-alpine
name: build-frontend-packages
- commands:
- /src/grafana-build artifacts -a targz:grafana:enterprise:linux/amd64 -a targz:grafana:enterprise:linux/arm64
-a targz:grafana:enterprise:linux/arm/v7 --go-version=1.23.1 --yarn-cache=$$YARN_CACHE_FOLDER
--build-id=$$DRONE_BUILD_NUMBER --grafana-dir=$$PWD > packages.txt
depends_on:
- yarn-install
environment:
_EXPERIMENTAL_DAGGER_CLOUD_TOKEN:
from_secret: dagger_token
image: grafana/grafana-build:main
name: rgm-package
pull: always
volumes:
- name: docker
path: /var/run/docker.sock
- commands:
- yarn e2e:plugin:build
depends_on:
- yarn-install
environment:
NODE_OPTIONS: --max_old_space_size=8192
image: node:20.9.0-alpine
name: build-test-plugins
- commands:
- apk add --update tar bash
- mkdir grafana
- tar --strip-components=1 -xvf ./dist/*amd64.tar.gz -C grafana
- cp -r devenv scripts tools grafana && cd grafana && ./scripts/grafana-server/start-server
e2e/extensions/enterprise/license.jwt
depends_on:
- rgm-package
detach: true
environment:
GF_APP_MODE: development
GF_RENDERING_CALLBACK_URL: http://grafana-server:3001/
GF_RENDERING_SERVER_URL: http://grafana-image-renderer:8081/render
GF_SERVER_HTTP_PORT: "3001"
GF_SERVER_ROUTER_LOGGING: "1"
GF_SMTP_ENABLED: "true"
GF_SMTP_HOST: end-to-end-tests-enterprise-smtp:7777
image: alpine:3.20.3
name: grafana-server
- detach: true
image: grafana/grafana-image-renderer:latest
name: grafana-image-renderer
- commands:
- ./bin/build e2e-tests --port 3001 --suite enterprise-smtp
depends_on:
- grafana-server
- build-test-plugins
environment:
HOST: grafana-server
image: cypress/included:13.10.0
name: end-to-end-tests-enterprise-smtp
trigger:
event:
- pull_request
paths:
exclude:
- '*.md'
- docs/**
- latest.json
type: docker
volumes:
- host:
path: /var/run/docker.sock
name: docker
---
clone:
retries: 3
depends_on: []
environment:
EDITION: oss
image_pull_secrets:
@ -2049,7 +2193,7 @@ steps:
- apk add --update tar bash
- mkdir grafana
- tar --strip-components=1 -xvf ./dist/*amd64.tar.gz -C grafana
- cp -r devenv scripts tools grafana && cd grafana && ./scripts/grafana-server/start-server
- 'cp -r devenv scripts tools grafana && cd grafana && ./scripts/grafana-server/start-server '
depends_on:
- rgm-package
detach: true
@ -5723,6 +5867,7 @@ steps:
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM jwilder/dockerize:0.6.1
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM koalaman/shellcheck:stable
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM rockylinux:9
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/grafana-image-renderer:latest
depends_on:
- authenticate-gcr
image: aquasec/trivy:0.21.0
@ -5760,6 +5905,7 @@ steps:
- trivy --exit-code 1 --severity HIGH,CRITICAL jwilder/dockerize:0.6.1
- trivy --exit-code 1 --severity HIGH,CRITICAL koalaman/shellcheck:stable
- trivy --exit-code 1 --severity HIGH,CRITICAL rockylinux:9
- trivy --exit-code 1 --severity HIGH,CRITICAL grafana/grafana-image-renderer:latest
depends_on:
- authenticate-gcr
environment:
@ -5991,6 +6137,6 @@ kind: secret
name: gcr_credentials
---
kind: signature
hmac: 41df5b1fdbd1b3c9aa915919ae5be16d2a188cbaf6b243c14fd66f94db0db8d8
hmac: 045b97dd1d57a83cbecda9dbd366b638cc47debc340f30f68db5fcf9cd6f431b
...

@ -10,6 +10,7 @@ load(
load(
"scripts/drone/pipelines/build.star",
"build_e2e",
"build_e2e_enterprise",
)
load(
"scripts/drone/pipelines/docs.star",
@ -139,6 +140,7 @@ def pr_pipelines():
ver_mode,
),
build_e2e(trigger, ver_mode),
build_e2e_enterprise(trigger),
integration_tests(
get_pr_trigger(
include_paths = [

@ -11,7 +11,9 @@ load(
"e2e_tests_artifacts",
"e2e_tests_step",
"enterprise_downstream_step",
"enterprise_setup_step",
"frontend_metrics_step",
"grafana_image_renderer_step",
"grafana_server_step",
"identify_runner_step",
"playwright_e2e_report_post_link",
@ -179,3 +181,41 @@ def build_e2e(trigger, ver_mode):
steps = init_steps + build_steps,
trigger = trigger,
)
def build_e2e_enterprise(trigger):
"""Perform e2e Enterprise building and testing.
Args:
trigger: controls which events can trigger the pipeline execution.
Returns:
Drone pipeline.
"""
environment = {"EDITION": "enterprise"}
init_steps = [
identify_runner_step(),
download_grabpl_step(),
compile_build_cmd(),
verify_gen_cue_step(),
verify_gen_jsonnet_step(),
wire_install_step(),
yarn_install_step(),
]
build_steps = [
build_frontend_package_step(),
rgm_artifacts_step(artifacts = ["targz:grafana:enterprise:linux/amd64", "targz:grafana:enterprise:linux/arm64", "targz:grafana:enterprise:linux/arm/v7"], file = "packages.txt"),
build_test_plugins_step(),
grafana_server_step("e2e/extensions/enterprise/license.jwt",True),
grafana_image_renderer_step(),
e2e_tests_step("enterprise-smtp"),
]
return pipeline(
name = "pr-build-e2e-enterprise",
environment = environment,
services = [],
steps = init_steps + build_steps,
trigger = trigger,
)

@ -755,7 +755,7 @@ def codespell_step():
],
}
def grafana_server_step():
def grafana_server_step(license_path="", image_rendering_setup=False):
"""Runs the grafana-server binary as a service.
Returns:
@ -767,6 +767,16 @@ def grafana_server_step():
"GF_APP_MODE": "development",
}
if image_rendering_setup:
environment.update(
{
"GF_SMTP_ENABLED": "true",
"GF_SMTP_HOST": "end-to-end-tests-enterprise-smtp:7777",
"GF_RENDERING_SERVER_URL": "http://grafana-image-renderer:8081/render",
"GF_RENDERING_CALLBACK_URL": "http://grafana-server:3001/",
},
)
return {
"name": "grafana-server",
"image": images["alpine"],
@ -779,10 +789,24 @@ def grafana_server_step():
"apk add --update tar bash",
"mkdir grafana",
"tar --strip-components=1 -xvf ./dist/*amd64.tar.gz -C grafana",
"cp -r devenv scripts tools grafana && cd grafana && ./scripts/grafana-server/start-server",
"cp -r devenv scripts tools grafana && cd grafana && " +
"./scripts/grafana-server/start-server {}".format(license_path),
],
}
def grafana_image_renderer_step():
"""Runs the grafana-image-renderer HTTP server as a service.
Returns:
Drone step.
"""
return {
"name": "grafana-image-renderer",
"image": images["grafana_image_renderer"],
"detach": True,
}
def e2e_tests_step(suite, port = 3001, tries = None):
cmd = "./bin/build e2e-tests --port {} --suite {}".format(port, suite)
if tries:

@ -36,4 +36,5 @@ images = {
"dockerize": "jwilder/dockerize:0.6.1",
"shellcheck": "koalaman/shellcheck:stable",
"rocky": "rockylinux:9",
"grafana_image_renderer": "grafana/grafana-image-renderer:latest",
}

Loading…
Cancel
Save