--- depends_on: [] kind: pipeline name: pr-test node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - make gen-go image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl verify-drone depends_on: - grabpl image: byrnedo/alpine-curl:0.1.8 name: lint-drone - commands: - |- echo -e "unknwon referer errorstring eror iam wan" > words_to_ignore.txt - codespell -I words_to_ignore.txt docs/ - rm words_to_ignore.txt image: grafana/build-container:1.5.4 name: codespell - commands: - ./bin/grabpl shellcheck depends_on: - grabpl image: grafana/build-container:1.5.4 name: shellcheck - commands: - ./bin/grabpl lint-backend --edition oss depends_on: - wire-install environment: CGO_ENABLED: "1" image: grafana/build-container:1.5.4 name: lint-backend - commands: - yarn run prettier:check - yarn run lint - yarn run i18n:compile - yarn run typecheck depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: lint-frontend - commands: - ./bin/grabpl test-backend --edition oss depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend - commands: - ./bin/grabpl integration-tests --edition oss depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-integration - commands: - yarn run ci:test-frontend depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: test-frontend trigger: event: - pull_request paths: exclude: - docs/** type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: pr-build-e2e node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - make gen-go image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl build-backend --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} --variants linux-amd64,linux-amd64-musl,darwin-amd64,windows-amd64,armv6 depends_on: - gen-version - wire-install image: grafana/build-container:1.5.4 name: build-backend - commands: - ./bin/grabpl build-frontend --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend - commands: - ./bin/grabpl build-frontend-packages --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend-packages - commands: - ./bin/grabpl build-plugins --jobs 8 --edition oss depends_on: - gen-version - yarn-install environment: null image: grafana/build-container:1.5.4 name: build-plugins - commands: - ./bin/linux-amd64/grafana-cli cue validate-schema --grafana-root . depends_on: - build-backend image: grafana/build-container:1.5.4 name: validate-scuemata - commands: - '# It is required that the generated Typescript be in sync with the input CUE files.' - '# To enforce this, the following command will attempt to generate Typescript from all' - '# appropriate .cue files, then compare with the corresponding (*.gen.ts) file the generated' - '# code would have been written to. It exits 1 if any diffs are found.' - ./bin/linux-amd64/grafana-cli cue gen-ts --grafana-root . --diff depends_on: - validate-scuemata image: grafana/build-container:1.5.4 name: ensure-cuetsified - commands: - . scripts/build/gpg-test-vars.sh && ./bin/grabpl package --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} --variants linux-amd64,linux-amd64-musl,darwin-amd64,windows-amd64,armv6 depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages environment: null image: grafana/build-container:1.5.4 name: package - commands: - ./scripts/grafana-server/start-server depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages detach: true environment: ARCH: linux-amd64 PORT: 3001 image: grafana/build-container:1.5.4 name: grafana-server - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite dashboards-suite depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-dashboards-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite smoke-tests-suite depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-smoke-tests-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite panels-suite depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-panels-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite various-suite depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-various-suite - commands: - apt-get update - apt-get install -yq zip - ls -lah ./e2e - find ./e2e -type f -name "*.mp4" - printenv GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY > /tmp/gcpkey_upload_artifacts.json - gcloud auth activate-service-account --key-file=/tmp/gcpkey_upload_artifacts.json - find ./e2e -type f -name "*spec.ts.mp4" | zip e2e/videos.zip -@ - gsutil cp e2e/videos.zip gs://$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - export E2E_ARTIFACTS_VIDEO_ZIP=https://storage.googleapis.com/$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - 'echo "E2E Test artifacts uploaded to: $${E2E_ARTIFACTS_VIDEO_ZIP}"' - 'curl -X POST https://api.github.com/repos/${DRONE_REPO}/statuses/${DRONE_COMMIT_SHA} -H "Authorization: token $${GITHUB_TOKEN}" -d "{\"state\":\"success\",\"target_url\":\"$${E2E_ARTIFACTS_VIDEO_ZIP}\", \"description\": \"Click on the details to download e2e recording videos\", \"context\": \"e2e_artifacts\"}"' depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: E2E_TEST_ARTIFACTS_BUCKET: releng-pipeline-artifacts-dev GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY: from_secret: gcp_upload_artifacts_key GITHUB_TOKEN: from_secret: github_token image: google/cloud-sdk:367.0.0 name: e2e-tests-artifacts-upload when: status: - success - failure - commands: - yarn storybook:build - ./bin/grabpl verify-storybook depends_on: - build-frontend - build-frontend-packages environment: NODE_OPTIONS: --max_old_space_size=4096 image: grafana/build-container:1.5.4 name: build-storybook - commands: - yarn wait-on http://$HOST:$PORT - pa11y-ci --config .pa11yci-pr.conf.js depends_on: - grafana-server environment: GRAFANA_MISC_STATS_API_KEY: from_secret: grafana_misc_stats_api_key HOST: grafana-server PORT: 3001 failure: always image: grafana/docker-puppeteer:1.0.0 name: test-a11y-frontend - commands: - ls dist/*.tar.gz* - cp dist/*.tar.gz* packaging/docker/ depends_on: - package image: grafana/build-container:1.5.4 name: copy-packages-for-docker - commands: - ./bin/grabpl build-docker --edition oss -archs amd64 depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images volumes: - name: docker path: /var/run/docker.sock trigger: event: - pull_request paths: exclude: - docs/** type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: pr-integration-tests node: type: no-parallel platform: arch: amd64 os: linux services: - environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_DB: grafanatest POSTGRES_PASSWORD: grafanatest POSTGRES_USER: grafanatest image: postgres:12.3-alpine name: postgres volumes: - name: postgres path: /var/lib/postgresql/data/pgdata - environment: MYSQL_DATABASE: grafana_tests MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: rootpass MYSQL_USER: grafana image: mysql:5.6.48 name: mysql volumes: - name: mysql path: /var/lib/mysql steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - apt-get update - apt-get install -yq postgresql-client - dockerize -wait tcp://postgres:5432 -timeout 120s - psql -p 5432 -h postgres -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql - go clean -testcache - ./bin/grabpl integration-tests --database postgres depends_on: - grabpl environment: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres image: grafana/build-container:1.5.4 name: postgres-integration-tests - commands: - apt-get update - apt-get install -yq default-mysql-client - dockerize -wait tcp://mysql:3306 -timeout 120s - cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h mysql -P 3306 -u root -prootpass - go clean -testcache - ./bin/grabpl integration-tests --database mysql depends_on: - grabpl environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql image: grafana/build-container:1.5.4 name: mysql-integration-tests trigger: event: - pull_request paths: exclude: - docs/** type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- depends_on: [] kind: pipeline name: pr-docs node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - |- echo -e "unknwon referer errorstring eror iam wan" > words_to_ignore.txt - codespell -I words_to_ignore.txt docs/ - rm words_to_ignore.txt image: grafana/build-container:1.5.4 name: codespell - commands: - yarn run prettier:checkDocs depends_on: - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: lint-docs - commands: - ./bin/grabpl build-frontend-packages --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend-packages - commands: - ./scripts/ci-reference-docs-lint.sh ci depends_on: - build-frontend-packages image: grafana/build-container:1.5.4 name: build-frontend-docs - commands: - mkdir -p /hugo/content/docs/grafana - cp -r docs/sources/* /hugo/content/docs/grafana/latest/ - cd /hugo && make prod depends_on: - build-frontend-docs image: grafana/docs-base:latest name: build-docs-website trigger: event: - pull_request paths: include: - docs/** - packages/** type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: main-docs node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - |- echo -e "unknwon referer errorstring eror iam wan" > words_to_ignore.txt - codespell -I words_to_ignore.txt docs/ - rm words_to_ignore.txt image: grafana/build-container:1.5.4 name: codespell - commands: - yarn run prettier:checkDocs depends_on: - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: lint-docs - commands: - ./bin/grabpl build-frontend-packages --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend-packages - commands: - ./scripts/ci-reference-docs-lint.sh ci depends_on: - build-frontend-packages image: grafana/build-container:1.5.4 name: build-frontend-docs - commands: - mkdir -p /hugo/content/docs/grafana - cp -r docs/sources/* /hugo/content/docs/grafana/latest/ - cd /hugo && make prod depends_on: - build-frontend-docs image: grafana/docs-base:latest name: build-docs-website trigger: branch: main event: - push type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: main-test node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - make gen-go image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl verify-drone depends_on: - grabpl image: byrnedo/alpine-curl:0.1.8 name: lint-drone - commands: - |- echo -e "unknwon referer errorstring eror iam wan" > words_to_ignore.txt - codespell -I words_to_ignore.txt docs/ - rm words_to_ignore.txt image: grafana/build-container:1.5.4 name: codespell - commands: - ./bin/grabpl shellcheck depends_on: - grabpl image: grafana/build-container:1.5.4 name: shellcheck - commands: - ./bin/grabpl lint-backend --edition oss depends_on: - wire-install environment: CGO_ENABLED: "1" image: grafana/build-container:1.5.4 name: lint-backend - commands: - yarn run prettier:check - yarn run lint - yarn run i18n:compile - yarn run typecheck depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: lint-frontend - commands: - ./bin/grabpl test-backend --edition oss depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend - commands: - ./bin/grabpl integration-tests --edition oss depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-integration - commands: - yarn run ci:test-frontend depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: test-frontend trigger: branch: main event: - push type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: main-build-e2e-publish node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - make gen-go image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - git clone "https://$${GITHUB_TOKEN}@github.com/grafana/grafana-enterprise.git" --depth=1 - cd grafana-enterprise - git fetch origin "refs/tags/*:refs/tags/*" - git tag -d $${TEST_TAG} && git push --delete origin $${TEST_TAG} && git tag $${TEST_TAG} && git push origin $${TEST_TAG} - cd - - git fetch origin "refs/tags/*:refs/tags/*" - git remote add downstream https://$${GITHUB_TOKEN}@github.com/grafana/$${DOWNSTREAM_REPO}.git - git tag -d $${TEST_TAG} && git push --delete downstream --quiet $${TEST_TAG} && git tag $${TEST_TAG} && git push downstream $${TEST_TAG} --quiet environment: DOWNSTREAM_REPO: from_secret: downstream GITHUB_TOKEN: from_secret: github_token TEST_TAG: v0.0.0-test failure: ignore image: grafana/build-container:1.5.4 name: trigger-test-release when: paths: include: - .drone.yml repo: - grafana/grafana - image: grafana/drone-downstream name: trigger-enterprise-downstream settings: params: - SOURCE_BUILD_NUMBER=${DRONE_COMMIT} - SOURCE_COMMIT=${DRONE_COMMIT} repositories: - grafana/grafana-enterprise@main server: https://drone.grafana.net token: from_secret: drone_token - commands: - ./bin/grabpl build-backend --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - wire-install image: grafana/build-container:1.5.4 name: build-backend - commands: - ./bin/grabpl build-frontend --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend - commands: - ./bin/grabpl build-frontend-packages --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend-packages - commands: - ./bin/grabpl build-plugins --jobs 8 --edition oss --sign --signing-admin depends_on: - gen-version - yarn-install environment: GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: build-plugins - commands: - ./bin/linux-amd64/grafana-cli cue validate-schema --grafana-root . depends_on: - build-backend image: grafana/build-container:1.5.4 name: validate-scuemata - commands: - '# It is required that the generated Typescript be in sync with the input CUE files.' - '# To enforce this, the following command will attempt to generate Typescript from all' - '# appropriate .cue files, then compare with the corresponding (*.gen.ts) file the generated' - '# code would have been written to. It exits 1 if any diffs are found.' - ./bin/linux-amd64/grafana-cli cue gen-ts --grafana-root . --diff depends_on: - validate-scuemata image: grafana/build-container:1.5.4 name: ensure-cuetsified - commands: - ./bin/grabpl package --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} --sign depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages environment: GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: package - commands: - ./scripts/grafana-server/start-server depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages detach: true environment: ARCH: linux-amd64 PORT: 3001 image: grafana/build-container:1.5.4 name: grafana-server - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite dashboards-suite depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-dashboards-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite smoke-tests-suite depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-smoke-tests-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite panels-suite depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-panels-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite various-suite depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-various-suite - commands: - apt-get update - apt-get install -yq zip - ls -lah ./e2e - find ./e2e -type f -name "*.mp4" - printenv GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY > /tmp/gcpkey_upload_artifacts.json - gcloud auth activate-service-account --key-file=/tmp/gcpkey_upload_artifacts.json - find ./e2e -type f -name "*spec.ts.mp4" | zip e2e/videos.zip -@ - gsutil cp e2e/videos.zip gs://$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - export E2E_ARTIFACTS_VIDEO_ZIP=https://storage.googleapis.com/$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - 'echo "E2E Test artifacts uploaded to: $${E2E_ARTIFACTS_VIDEO_ZIP}"' - 'curl -X POST https://api.github.com/repos/${DRONE_REPO}/statuses/${DRONE_COMMIT_SHA} -H "Authorization: token $${GITHUB_TOKEN}" -d "{\"state\":\"success\",\"target_url\":\"$${E2E_ARTIFACTS_VIDEO_ZIP}\", \"description\": \"Click on the details to download e2e recording videos\", \"context\": \"e2e_artifacts\"}"' depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: E2E_TEST_ARTIFACTS_BUCKET: releng-pipeline-artifacts-dev GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY: from_secret: gcp_upload_artifacts_key GITHUB_TOKEN: from_secret: github_token image: google/cloud-sdk:367.0.0 name: e2e-tests-artifacts-upload when: status: - success - failure - commands: - yarn storybook:build - ./bin/grabpl verify-storybook depends_on: - build-frontend - build-frontend-packages environment: NODE_OPTIONS: --max_old_space_size=4096 image: grafana/build-container:1.5.4 name: build-storybook - commands: - ./bin/grabpl store-storybook --deployment canary --src-bucket grafana-storybook depends_on: - build-storybook - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: store-storybook when: repo: - grafana/grafana - commands: - yarn wait-on http://$HOST:$PORT - pa11y-ci --config .pa11yci.conf.js --json > pa11y-ci-results.json depends_on: - grafana-server environment: GRAFANA_MISC_STATS_API_KEY: from_secret: grafana_misc_stats_api_key HOST: grafana-server PORT: 3001 failure: ignore image: grafana/docker-puppeteer:1.0.0 name: test-a11y-frontend - commands: - ./scripts/ci-frontend-metrics.sh | ./bin/grabpl publish-metrics $${GRAFANA_MISC_STATS_API_KEY} depends_on: - test-a11y-frontend environment: GRAFANA_MISC_STATS_API_KEY: from_secret: grafana_misc_stats_api_key failure: ignore image: grafana/build-container:1.5.4 name: publish-frontend-metrics when: repo: - grafana/grafana - commands: - ls dist/*.tar.gz* - cp dist/*.tar.gz* packaging/docker/ depends_on: - package image: grafana/build-container:1.5.4 name: copy-packages-for-docker - commands: - ./bin/grabpl build-docker --edition oss depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl build-docker --edition oss --ubuntu depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images-ubuntu volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl artifacts docker publish --dockerhub-repo grafana --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 depends_on: - build-docker-images - build-docker-images-ubuntu environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: publish-images-grafana volumes: - name: docker path: /var/run/docker.sock when: repo: - grafana/grafana - commands: - ./bin/grabpl artifacts docker publish --dockerhub-repo grafana-oss --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 depends_on: - build-docker-images - build-docker-images-ubuntu environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: publish-images-grafana-oss volumes: - name: docker path: /var/run/docker.sock when: repo: - grafana/grafana - commands: - ./scripts/circle-release-canary-packages.sh depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: NPM_TOKEN: from_secret: npm_token image: grafana/build-container:1.5.4 name: release-canary-npm-packages when: repo: - grafana/grafana - commands: - ./bin/grabpl upload-packages --edition oss --packages-bucket grafana-downloads depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages when: repo: - grafana/grafana - commands: - ./bin/grabpl upload-cdn --edition oss --src-bucket "grafana-static-assets" depends_on: - grafana-server environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets when: repo: - grafana/grafana trigger: branch: main event: - push type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- depends_on: [] kind: pipeline name: main-integration-tests node: type: no-parallel platform: arch: amd64 os: linux services: - environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_DB: grafanatest POSTGRES_PASSWORD: grafanatest POSTGRES_USER: grafanatest image: postgres:12.3-alpine name: postgres volumes: - name: postgres path: /var/lib/postgresql/data/pgdata - environment: MYSQL_DATABASE: grafana_tests MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: rootpass MYSQL_USER: grafana image: mysql:5.6.48 name: mysql volumes: - name: mysql path: /var/lib/mysql steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - apt-get update - apt-get install -yq postgresql-client - dockerize -wait tcp://postgres:5432 -timeout 120s - psql -p 5432 -h postgres -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql - go clean -testcache - ./bin/grabpl integration-tests --database postgres depends_on: - grabpl environment: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres image: grafana/build-container:1.5.4 name: postgres-integration-tests - commands: - apt-get update - apt-get install -yq default-mysql-client - dockerize -wait tcp://mysql:3306 -timeout 120s - cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h mysql -P 3306 -u root -prootpass - go clean -testcache - ./bin/grabpl integration-tests --database mysql depends_on: - grabpl environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql image: grafana/build-container:1.5.4 name: mysql-integration-tests trigger: branch: main event: - push type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- depends_on: - main-test - main-build-e2e-publish - main-integration-tests kind: pipeline name: main-windows 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/v2.9.41/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 gen-version --build-id $$env:DRONE_BUILD_NUMBER - .\grabpl.exe windows-installer --edition oss --packages-bucket grafana-downloads --build-id $$env:DRONE_BUILD_NUMBER - $$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0] - gsutil cp $$fname gs://grafana-downloads/oss/main/ - gsutil cp "$$fname.sha256" gs://grafana-downloads/oss/main/ 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: branch: main event: - push repo: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: notify-drone-changes platform: arch: amd64 os: linux steps: - image: plugins/slack name: slack settings: channel: slack-webhooks-test template: "`.drone.yml` and `starlark` files have been changed on the OSS repo, by: {{build.author}}. \nBranch: \nCommit hash: " webhook: from_secret: drone-changes-webhook trigger: branch: main event: - push paths: exclude: - exclude include: - .drone.yml repo: - grafana/grafana type: docker --- depends_on: - main-test - main-build-e2e-publish - main-integration-tests - main-windows kind: pipeline name: main-publish node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - ./bin/grabpl store-packages --edition oss --gcp-key /tmp/gcpkey.json --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl environment: GCP_KEY: from_secret: gcp_key GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_COM_API_KEY: from_secret: grafana_api_key image: grafana/grafana-ci-deploy:1.3.1 name: store-packages-oss trigger: branch: main event: - push repo: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: - main-test - main-build-e2e-publish - main-integration-tests - main-windows - main-publish kind: pipeline name: main-notify platform: arch: amd64 os: linux steps: - image: plugins/slack name: slack settings: channel: grafana-ci-notifications template: |- Build {{build.number}} failed for commit: : {{build.link}} Branch: Author: {{build.author}} webhook: from_secret: slack_webhook trigger: branch: main event: - push status: - failure type: docker --- depends_on: [] kind: pipeline name: oss-build-e2e-publish-release node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl gen-version ${DRONE_TAG} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - make gen-go image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl build-backend --jobs 8 --edition oss ${DRONE_TAG} depends_on: - gen-version - wire-install image: grafana/build-container:1.5.4 name: build-backend - commands: - ./bin/grabpl build-frontend --jobs 8 --edition oss ${DRONE_TAG} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend - commands: - ./bin/grabpl build-frontend-packages --jobs 8 --edition oss ${DRONE_TAG} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend-packages - commands: - ./bin/grabpl build-plugins --jobs 8 --edition oss --sign --signing-admin depends_on: - gen-version - yarn-install environment: GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: build-plugins - commands: - ./bin/linux-amd64/grafana-cli cue validate-schema --grafana-root . depends_on: - build-backend image: grafana/build-container:1.5.4 name: validate-scuemata - commands: - '# It is required that the generated Typescript be in sync with the input CUE files.' - '# To enforce this, the following command will attempt to generate Typescript from all' - '# appropriate .cue files, then compare with the corresponding (*.gen.ts) file the generated' - '# code would have been written to. It exits 1 if any diffs are found.' - ./bin/linux-amd64/grafana-cli cue gen-ts --grafana-root . --diff depends_on: - validate-scuemata image: grafana/build-container:1.5.4 name: ensure-cuetsified - commands: - ./bin/grabpl package --jobs 8 --edition oss --sign ${DRONE_TAG} depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages environment: GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: package - commands: - ls dist/*.tar.gz* - cp dist/*.tar.gz* packaging/docker/ depends_on: - package image: grafana/build-container:1.5.4 name: copy-packages-for-docker - commands: - ./bin/grabpl build-docker --edition oss --shouldSave depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl build-docker --edition oss --shouldSave --ubuntu depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images-ubuntu volumes: - name: docker path: /var/run/docker.sock - commands: - ./scripts/grafana-server/start-server depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages detach: true environment: ARCH: linux-amd64 PORT: 3001 image: grafana/build-container:1.5.4 name: grafana-server - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite dashboards-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-dashboards-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite smoke-tests-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-smoke-tests-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite panels-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-panels-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite various-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-various-suite - commands: - apt-get update - apt-get install -yq zip - ls -lah ./e2e - find ./e2e -type f -name "*.mp4" - printenv GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY > /tmp/gcpkey_upload_artifacts.json - gcloud auth activate-service-account --key-file=/tmp/gcpkey_upload_artifacts.json - find ./e2e -type f -name "*spec.ts.mp4" | zip e2e/videos.zip -@ - gsutil cp e2e/videos.zip gs://$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - export E2E_ARTIFACTS_VIDEO_ZIP=https://storage.googleapis.com/$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - 'echo "E2E Test artifacts uploaded to: $${E2E_ARTIFACTS_VIDEO_ZIP}"' - 'curl -X POST https://api.github.com/repos/${DRONE_REPO}/statuses/${DRONE_COMMIT_SHA} -H "Authorization: token $${GITHUB_TOKEN}" -d "{\"state\":\"success\",\"target_url\":\"$${E2E_ARTIFACTS_VIDEO_ZIP}\", \"description\": \"Click on the details to download e2e recording videos\", \"context\": \"e2e_artifacts\"}"' depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: E2E_TEST_ARTIFACTS_BUCKET: releng-pipeline-artifacts-dev GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY: from_secret: gcp_upload_artifacts_key GITHUB_TOKEN: from_secret: github_token image: google/cloud-sdk:367.0.0 name: e2e-tests-artifacts-upload when: status: - success - failure - commands: - yarn storybook:build - ./bin/grabpl verify-storybook depends_on: - build-frontend - build-frontend-packages environment: NODE_OPTIONS: --max_old_space_size=4096 image: grafana/build-container:1.5.4 name: build-storybook - commands: - ./bin/grabpl upload-cdn --edition oss --src-bucket "$${PRERELEASE_BUCKET}" --src-dir artifacts/static-assets depends_on: - grafana-server environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets - commands: - ./bin/grabpl upload-packages --edition oss --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages - commands: - ./bin/grabpl store-storybook --deployment latest --src-bucket grafana-prerelease --src-dir artifacts/storybook - ./bin/grabpl store-storybook --deployment ${DRONE_TAG} --src-bucket grafana-prerelease --src-dir artifacts/storybook depends_on: - build-storybook - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: store-storybook - commands: - ./bin/grabpl artifacts npm store --tag ${DRONE_TAG} depends_on: - build-frontend-packages environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: store-npm-packages trigger: event: exclude: - promote ref: - refs/tags/v* repo: exclude: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- depends_on: [] kind: pipeline name: oss-test-release node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl gen-version ${DRONE_TAG} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - make gen-go image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl shellcheck depends_on: - grabpl image: grafana/build-container:1.5.4 name: shellcheck - commands: - |- echo -e "unknwon referer errorstring eror iam wan" > words_to_ignore.txt - codespell -I words_to_ignore.txt docs/ - rm words_to_ignore.txt image: grafana/build-container:1.5.4 name: codespell - commands: - ./bin/grabpl lint-backend --edition oss depends_on: - wire-install environment: CGO_ENABLED: "1" image: grafana/build-container:1.5.4 name: lint-backend - commands: - yarn run prettier:check - yarn run lint - yarn run i18n:compile - yarn run typecheck depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: lint-frontend - commands: - ./bin/grabpl test-backend --edition oss depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend - commands: - ./bin/grabpl integration-tests --edition oss depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-integration - commands: - yarn run ci:test-frontend depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: test-frontend trigger: event: exclude: - promote ref: - refs/tags/v* repo: exclude: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: oss-integration-tests-release node: type: no-parallel platform: arch: amd64 os: linux services: - environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_DB: grafanatest POSTGRES_PASSWORD: grafanatest POSTGRES_USER: grafanatest image: postgres:12.3-alpine name: postgres volumes: - name: postgres path: /var/lib/postgresql/data/pgdata - environment: MYSQL_DATABASE: grafana_tests MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: rootpass MYSQL_USER: grafana image: mysql:5.6.48 name: mysql volumes: - name: mysql path: /var/lib/mysql steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - apt-get update - apt-get install -yq postgresql-client - dockerize -wait tcp://postgres:5432 -timeout 120s - psql -p 5432 -h postgres -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql - go clean -testcache - ./bin/grabpl integration-tests --database postgres depends_on: - grabpl environment: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres image: grafana/build-container:1.5.4 name: postgres-integration-tests - commands: - apt-get update - apt-get install -yq default-mysql-client - dockerize -wait tcp://mysql:3306 -timeout 120s - cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h mysql -P 3306 -u root -prootpass - go clean -testcache - ./bin/grabpl integration-tests --database mysql depends_on: - grabpl environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql image: grafana/build-container:1.5.4 name: mysql-integration-tests trigger: event: exclude: - promote ref: - refs/tags/v* repo: exclude: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- depends_on: - oss-build-e2e-publish-release - oss-test-release - oss-integration-tests-release kind: pipeline name: oss-windows-release 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/v2.9.41/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 gen-version ${DRONE_TAG} - .\grabpl.exe windows-installer --edition oss ${DRONE_TAG} - $$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0] - gsutil cp $$fname gs://%PRERELEASE_BUCKET%/artifacts/downloads/${DRONE_TAG}/oss/release/ - gsutil cp "$$fname.sha256" gs://%PRERELEASE_BUCKET%/artifacts/downloads/${DRONE_TAG}/oss/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: - refs/tags/v* repo: exclude: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker --- clone: disable: true depends_on: [] image_pull_secrets: - dockerconfigjson kind: pipeline name: enterprise-build-e2e-publish-release node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - git clone "https://$${GITHUB_TOKEN}@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise - git checkout ${DRONE_TAG} environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: clone-enterprise - commands: - mv bin/grabpl /tmp/ - rmdir bin - mv grafana-enterprise /tmp/ - /tmp/grabpl init-enterprise --github-token $${GITHUB_TOKEN} /tmp/grafana-enterprise ${DRONE_TAG} - mv /tmp/grafana-enterprise/deployment_tools_config.json deployment_tools_config.json - mkdir bin - mv /tmp/grabpl bin/ depends_on: - clone-enterprise environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: init-enterprise - commands: - make gen-go depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl gen-version ${DRONE_TAG} depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: gen-version - commands: - ./bin/grabpl build-backend --jobs 8 --edition enterprise ${DRONE_TAG} depends_on: - gen-version - wire-install image: grafana/build-container:1.5.4 name: build-backend - commands: - ./bin/grabpl build-frontend --jobs 8 --edition enterprise ${DRONE_TAG} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend - commands: - ./bin/grabpl build-frontend-packages --jobs 8 --edition enterprise ${DRONE_TAG} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend-packages - commands: - ./bin/grabpl build-plugins --jobs 8 --edition enterprise --sign --signing-admin depends_on: - gen-version - yarn-install environment: GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: build-plugins - commands: - ./bin/linux-amd64/grafana-cli cue validate-schema --grafana-root . depends_on: - build-backend image: grafana/build-container:1.5.4 name: validate-scuemata - commands: - '# It is required that the generated Typescript be in sync with the input CUE files.' - '# To enforce this, the following command will attempt to generate Typescript from all' - '# appropriate .cue files, then compare with the corresponding (*.gen.ts) file the generated' - '# code would have been written to. It exits 1 if any diffs are found.' - ./bin/linux-amd64/grafana-cli cue gen-ts --grafana-root . --diff depends_on: - validate-scuemata image: grafana/build-container:1.5.4 name: ensure-cuetsified - commands: - ./bin/grabpl build-backend --jobs 8 --edition enterprise2 ${DRONE_TAG} depends_on: - gen-version - wire-install image: grafana/build-container:1.5.4 name: build-backend-enterprise2 - commands: - ./bin/grabpl package --jobs 8 --edition enterprise --sign ${DRONE_TAG} depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages - build-backend-enterprise2 environment: GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: package - commands: - ls dist/*.tar.gz* - cp dist/*.tar.gz* packaging/docker/ depends_on: - package image: grafana/build-container:1.5.4 name: copy-packages-for-docker - commands: - ./bin/grabpl build-docker --edition enterprise --shouldSave depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl build-docker --edition enterprise --shouldSave --ubuntu depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images-ubuntu volumes: - name: docker path: /var/run/docker.sock - commands: - ./scripts/grafana-server/start-server depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages detach: true environment: ARCH: linux-amd64 PORT: 3001 RUNDIR: scripts/grafana-server/tmp-grafana-enterprise image: grafana/build-container:1.5.4 name: grafana-server - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite dashboards-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-dashboards-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite smoke-tests-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-smoke-tests-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite panels-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-panels-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite various-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-various-suite - commands: - apt-get update - apt-get install -yq zip - ls -lah ./e2e - find ./e2e -type f -name "*.mp4" - printenv GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY > /tmp/gcpkey_upload_artifacts.json - gcloud auth activate-service-account --key-file=/tmp/gcpkey_upload_artifacts.json - find ./e2e -type f -name "*spec.ts.mp4" | zip e2e/videos.zip -@ - gsutil cp e2e/videos.zip gs://$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - export E2E_ARTIFACTS_VIDEO_ZIP=https://storage.googleapis.com/$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - 'echo "E2E Test artifacts uploaded to: $${E2E_ARTIFACTS_VIDEO_ZIP}"' - 'curl -X POST https://api.github.com/repos/${DRONE_REPO}/statuses/${DRONE_COMMIT_SHA} -H "Authorization: token $${GITHUB_TOKEN}" -d "{\"state\":\"success\",\"target_url\":\"$${E2E_ARTIFACTS_VIDEO_ZIP}\", \"description\": \"Click on the details to download e2e recording videos\", \"context\": \"e2e_artifacts\"}"' depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: E2E_TEST_ARTIFACTS_BUCKET: releng-pipeline-artifacts-dev GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY: from_secret: gcp_upload_artifacts_key GITHUB_TOKEN: from_secret: github_token image: google/cloud-sdk:367.0.0 name: e2e-tests-artifacts-upload when: status: - success - failure - commands: - ./bin/grabpl upload-cdn --edition enterprise --src-bucket "$${PRERELEASE_BUCKET}" --src-dir artifacts/static-assets depends_on: - package environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets - commands: - ./bin/grabpl upload-packages --edition enterprise --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads depends_on: - package environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages - commands: - ./bin/grabpl artifacts npm store --tag ${DRONE_TAG} depends_on: - build-frontend-packages environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: store-npm-packages - commands: - ./bin/grabpl package --jobs 8 --edition enterprise2 --sign ${DRONE_TAG} depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages - build-backend-enterprise2 environment: GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: package-enterprise2 - commands: - ./bin/grabpl upload-cdn --edition enterprise2 --src-bucket "$${PRERELEASE_BUCKET}" --src-dir artifacts/static-assets depends_on: - package-enterprise2 environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets-enterprise2 - commands: - ./bin/grabpl upload-packages --edition enterprise2 --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads-enterprise2 depends_on: - package-enterprise2 environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages-enterprise2 trigger: event: exclude: - promote ref: - refs/tags/v* repo: exclude: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- clone: disable: true depends_on: [] image_pull_secrets: - dockerconfigjson kind: pipeline name: enterprise-test-release node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - git clone "https://$${GITHUB_TOKEN}@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise - git checkout ${DRONE_TAG} environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: clone-enterprise - commands: - mv bin/grabpl /tmp/ - rmdir bin - mv grafana-enterprise /tmp/ - /tmp/grabpl init-enterprise --github-token $${GITHUB_TOKEN} /tmp/grafana-enterprise ${DRONE_TAG} - mv /tmp/grafana-enterprise/deployment_tools_config.json deployment_tools_config.json - mkdir bin - mv /tmp/grabpl bin/ depends_on: - clone-enterprise environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: init-enterprise - commands: - make gen-go depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl gen-version ${DRONE_TAG} depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: gen-version - commands: - |- echo -e "unknwon referer errorstring eror iam wan" > words_to_ignore.txt - codespell -I words_to_ignore.txt docs/ - rm words_to_ignore.txt image: grafana/build-container:1.5.4 name: codespell - commands: - ./bin/grabpl lint-backend --edition enterprise depends_on: - wire-install environment: CGO_ENABLED: "1" image: grafana/build-container:1.5.4 name: lint-backend - commands: - yarn run prettier:check - yarn run lint - yarn run i18n:compile - yarn run typecheck depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: lint-frontend - commands: - ./bin/grabpl test-backend --edition enterprise depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend - commands: - ./bin/grabpl integration-tests --edition enterprise depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-integration - commands: - yarn run ci:test-frontend depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: test-frontend - commands: - ./bin/grabpl lint-backend --edition enterprise2 depends_on: - wire-install environment: CGO_ENABLED: "1" image: grafana/build-container:1.5.4 name: lint-backend-enterprise2 - commands: - ./bin/grabpl test-backend --edition enterprise2 depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-enterprise2 - commands: - ./bin/grabpl integration-tests --edition enterprise2 depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-integration-enterprise2 trigger: event: exclude: - promote ref: - refs/tags/v* repo: exclude: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker --- clone: disable: true depends_on: [] image_pull_secrets: - dockerconfigjson kind: pipeline name: enterprise-integration-tests-release node: type: no-parallel platform: arch: amd64 os: linux services: - environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_DB: grafanatest POSTGRES_PASSWORD: grafanatest POSTGRES_USER: grafanatest image: postgres:12.3-alpine name: postgres volumes: - name: postgres path: /var/lib/postgresql/data/pgdata - environment: MYSQL_DATABASE: grafana_tests MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: rootpass MYSQL_USER: grafana image: mysql:5.6.48 name: mysql volumes: - name: mysql path: /var/lib/mysql - environment: {} image: redis:6.2.1-alpine name: redis - environment: {} image: memcached:1.6.9-alpine name: memcached steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - git clone "https://$${GITHUB_TOKEN}@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise - git checkout ${DRONE_TAG} environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: clone-enterprise - commands: - mv bin/grabpl /tmp/ - rmdir bin - mv grafana-enterprise /tmp/ - /tmp/grabpl init-enterprise --github-token $${GITHUB_TOKEN} /tmp/grafana-enterprise ${DRONE_TAG} - mv /tmp/grafana-enterprise/deployment_tools_config.json deployment_tools_config.json - mkdir bin - mv /tmp/grabpl bin/ depends_on: - clone-enterprise environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: init-enterprise - commands: - apt-get update - apt-get install -yq postgresql-client - dockerize -wait tcp://postgres:5432 -timeout 120s - psql -p 5432 -h postgres -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql - go clean -testcache - ./bin/grabpl integration-tests --database postgres depends_on: - init-enterprise environment: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres image: grafana/build-container:1.5.4 name: postgres-integration-tests - commands: - apt-get update - apt-get install -yq default-mysql-client - dockerize -wait tcp://mysql:3306 -timeout 120s - cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h mysql -P 3306 -u root -prootpass - go clean -testcache - ./bin/grabpl integration-tests --database mysql depends_on: - init-enterprise environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql image: grafana/build-container:1.5.4 name: mysql-integration-tests - commands: - dockerize -wait tcp://redis:6379/0 -timeout 120s - ./bin/grabpl integration-tests depends_on: - init-enterprise environment: REDIS_URL: redis://redis:6379/0 image: grafana/build-container:1.5.4 name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s - ./bin/grabpl integration-tests depends_on: - init-enterprise environment: MEMCACHED_HOSTS: memcached:11211 image: grafana/build-container:1.5.4 name: memcached-integration-tests trigger: event: exclude: - promote ref: - refs/tags/v* repo: exclude: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- clone: disable: true depends_on: - enterprise-build-e2e-publish-release - enterprise-test-release - enterprise-integration-tests-release image_pull_secrets: - dockerconfigjson kind: pipeline name: enterprise-windows-release 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/v2.9.41/windows/grabpl.exe -OutFile grabpl.exe - git clone "https://$$env:GITHUB_TOKEN@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise - git checkout ${DRONE_TAG} environment: GITHUB_TOKEN: from_secret: github_token image: grafana/ci-wix:0.1.1 name: clone - commands: - cp -r grafana-enterprise C:\App\grafana-enterprise - rm -r -force grafana-enterprise - cp grabpl.exe C:\App\grabpl.exe - rm -force grabpl.exe - C:\App\grabpl.exe init-enterprise --github-token $$env:GITHUB_TOKEN C:\App\grafana-enterprise - cp C:\App\grabpl.exe grabpl.exe depends_on: - clone environment: GITHUB_TOKEN: from_secret: github_token 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 gen-version ${DRONE_TAG} - .\grabpl.exe windows-installer --edition enterprise ${DRONE_TAG} - $$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0] - gsutil cp $$fname gs://%PRERELEASE_BUCKET%/artifacts/downloads/${DRONE_TAG}/enterprise/release/ - gsutil cp "$$fname.sha256" gs://%PRERELEASE_BUCKET%/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: - refs/tags/v* repo: exclude: - grafana/grafana type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: publish-docker-oss-public node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl artifacts docker fetch --version-tag ${TAG} --edition oss --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 depends_on: - grabpl environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: fetch-images-oss volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl artifacts docker publish --dockerhub-repo grafana --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 --version-tag ${TAG} depends_on: - fetch-images-oss environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: publish-images-grafana volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl artifacts docker publish --dockerhub-repo grafana-oss --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 --version-tag ${TAG} depends_on: - fetch-images-oss environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: publish-images-grafana-oss volumes: - name: docker path: /var/run/docker.sock trigger: event: - promote target: - public type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: publish-docker-enterprise-public node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl artifacts docker fetch --version-tag ${TAG} --edition enterprise --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 depends_on: - grabpl environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: fetch-images-enterprise volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl artifacts docker publish --dockerhub-repo grafana-enterprise --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 --version-tag ${TAG} depends_on: - fetch-images-enterprise environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: publish-images-grafana-enterprise volumes: - name: docker path: /var/run/docker.sock trigger: event: - promote target: - public type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: publish-docker-oss-security node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl artifacts docker fetch --version-tag ${TAG} --edition oss --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 depends_on: - grabpl environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: fetch-images-oss volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl artifacts docker publish --security --dockerhub-repo grafana --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 --version-tag ${TAG} depends_on: - fetch-images-oss environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: publish-images-grafana volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl artifacts docker publish --security --dockerhub-repo grafana-oss --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 --version-tag ${TAG} depends_on: - fetch-images-oss environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: publish-images-grafana-oss volumes: - name: docker path: /var/run/docker.sock trigger: event: - promote target: - security type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: publish-docker-enterprise-security node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl artifacts docker fetch --version-tag ${TAG} --edition enterprise --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 depends_on: - grabpl environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: fetch-images-enterprise volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl artifacts docker publish --security --dockerhub-repo grafana-enterprise --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7 --version-tag ${TAG} depends_on: - fetch-images-enterprise environment: DOCKER_PASSWORD: from_secret: docker_password DOCKER_USER: from_secret: docker_username GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: publish-images-grafana-enterprise volumes: - name: docker path: /var/run/docker.sock trigger: event: - promote target: - security type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: publish-artifacts-security node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl artifacts publish --security --tag ${TAG} --src-bucket $${PRERELEASE_BUCKET} depends_on: - grabpl environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: publish-artifacts trigger: event: - promote target: - security type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: publish-artifacts-public node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl artifacts publish --tag ${TAG} --src-bucket $${PRERELEASE_BUCKET} depends_on: - grabpl environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: publish-artifacts trigger: event: - promote target: - public type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: publish-npm-packages-public node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl artifacts npm retrieve --tag v${TAG} depends_on: - grabpl environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: retrieve-npm-packages - commands: - ./bin/grabpl artifacts npm release --tag v${TAG} depends_on: - retrieve-npm-packages environment: NPM_TOKEN: from_secret: npm_token image: grafana/build-container:1.5.4 name: release-npm-packages trigger: event: - promote target: - public type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: - publish-artifacts-public - publish-docker-oss-public - publish-docker-enterprise-public kind: pipeline name: publish-packages node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl store-packages --edition oss --packages-bucket grafana-downloads --gcp-key /tmp/gcpkey.json ${DRONE_TAG} depends_on: - grabpl environment: GCP_KEY: from_secret: gcp_key GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_COM_API_KEY: from_secret: grafana_api_key image: grafana/grafana-ci-deploy:1.3.1 name: store-packages-oss - commands: - ./bin/grabpl store-packages --edition enterprise --packages-bucket grafana-downloads --gcp-key /tmp/gcpkey.json ${DRONE_TAG} depends_on: - grabpl environment: GCP_KEY: from_secret: gcp_key GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_COM_API_KEY: from_secret: grafana_api_key image: grafana/grafana-ci-deploy:1.3.1 name: store-packages-enterprise trigger: event: - promote target: - public type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: oss-build-e2e-publish-release-branch node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - make gen-go image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl build-backend --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - wire-install image: grafana/build-container:1.5.4 name: build-backend - commands: - ./bin/grabpl build-frontend --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend - commands: - ./bin/grabpl build-frontend-packages --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend-packages - commands: - ./bin/grabpl build-plugins --jobs 8 --edition oss --sign --signing-admin depends_on: - gen-version - yarn-install environment: GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: build-plugins - commands: - ./bin/linux-amd64/grafana-cli cue validate-schema --grafana-root . depends_on: - build-backend image: grafana/build-container:1.5.4 name: validate-scuemata - commands: - '# It is required that the generated Typescript be in sync with the input CUE files.' - '# To enforce this, the following command will attempt to generate Typescript from all' - '# appropriate .cue files, then compare with the corresponding (*.gen.ts) file the generated' - '# code would have been written to. It exits 1 if any diffs are found.' - ./bin/linux-amd64/grafana-cli cue gen-ts --grafana-root . --diff depends_on: - validate-scuemata image: grafana/build-container:1.5.4 name: ensure-cuetsified - commands: - ./bin/grabpl package --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER} --sign depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages environment: GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: package - commands: - ls dist/*.tar.gz* - cp dist/*.tar.gz* packaging/docker/ depends_on: - package image: grafana/build-container:1.5.4 name: copy-packages-for-docker - commands: - ./bin/grabpl build-docker --edition oss --shouldSave depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl build-docker --edition oss --shouldSave --ubuntu depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images-ubuntu volumes: - name: docker path: /var/run/docker.sock - commands: - ./scripts/grafana-server/start-server depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages detach: true environment: ARCH: linux-amd64 PORT: 3001 image: grafana/build-container:1.5.4 name: grafana-server - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite dashboards-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-dashboards-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite smoke-tests-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-smoke-tests-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite panels-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-panels-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite various-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-various-suite - commands: - apt-get update - apt-get install -yq zip - ls -lah ./e2e - find ./e2e -type f -name "*.mp4" - printenv GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY > /tmp/gcpkey_upload_artifacts.json - gcloud auth activate-service-account --key-file=/tmp/gcpkey_upload_artifacts.json - find ./e2e -type f -name "*spec.ts.mp4" | zip e2e/videos.zip -@ - gsutil cp e2e/videos.zip gs://$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - export E2E_ARTIFACTS_VIDEO_ZIP=https://storage.googleapis.com/$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - 'echo "E2E Test artifacts uploaded to: $${E2E_ARTIFACTS_VIDEO_ZIP}"' - 'curl -X POST https://api.github.com/repos/${DRONE_REPO}/statuses/${DRONE_COMMIT_SHA} -H "Authorization: token $${GITHUB_TOKEN}" -d "{\"state\":\"success\",\"target_url\":\"$${E2E_ARTIFACTS_VIDEO_ZIP}\", \"description\": \"Click on the details to download e2e recording videos\", \"context\": \"e2e_artifacts\"}"' depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: E2E_TEST_ARTIFACTS_BUCKET: releng-pipeline-artifacts-dev GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY: from_secret: gcp_upload_artifacts_key GITHUB_TOKEN: from_secret: github_token image: google/cloud-sdk:367.0.0 name: e2e-tests-artifacts-upload when: status: - success - failure - commands: - yarn storybook:build - ./bin/grabpl verify-storybook depends_on: - build-frontend - build-frontend-packages environment: NODE_OPTIONS: --max_old_space_size=4096 image: grafana/build-container:1.5.4 name: build-storybook - commands: - ./bin/grabpl upload-cdn --edition oss --src-bucket "grafana-static-assets" depends_on: - grafana-server environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets when: repo: - grafana/grafana - commands: - ./bin/grabpl upload-packages --edition oss --packages-bucket grafana-downloads depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages when: repo: - grafana/grafana trigger: ref: - refs/heads/v[0-9]* type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- depends_on: [] kind: pipeline name: oss-test-release-branch node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - grabpl image: grafana/build-container:1.5.4 name: gen-version - commands: - make gen-go image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - grabpl image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl shellcheck depends_on: - grabpl image: grafana/build-container:1.5.4 name: shellcheck - commands: - |- echo -e "unknwon referer errorstring eror iam wan" > words_to_ignore.txt - codespell -I words_to_ignore.txt docs/ - rm words_to_ignore.txt image: grafana/build-container:1.5.4 name: codespell - commands: - ./bin/grabpl lint-backend --edition oss depends_on: - wire-install environment: CGO_ENABLED: "1" image: grafana/build-container:1.5.4 name: lint-backend - commands: - yarn run prettier:check - yarn run lint - yarn run i18n:compile - yarn run typecheck depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: lint-frontend - commands: - ./bin/grabpl test-backend --edition oss depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend - commands: - ./bin/grabpl integration-tests --edition oss depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-integration - commands: - yarn run ci:test-frontend depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: test-frontend trigger: ref: - refs/heads/v[0-9]* type: docker volumes: - host: path: /var/run/docker.sock name: docker --- depends_on: [] kind: pipeline name: oss-integration-tests-release-branch node: type: no-parallel platform: arch: amd64 os: linux services: - environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_DB: grafanatest POSTGRES_PASSWORD: grafanatest POSTGRES_USER: grafanatest image: postgres:12.3-alpine name: postgres volumes: - name: postgres path: /var/lib/postgresql/data/pgdata - environment: MYSQL_DATABASE: grafana_tests MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: rootpass MYSQL_USER: grafana image: mysql:5.6.48 name: mysql volumes: - name: mysql path: /var/lib/mysql steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - apt-get update - apt-get install -yq postgresql-client - dockerize -wait tcp://postgres:5432 -timeout 120s - psql -p 5432 -h postgres -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql - go clean -testcache - ./bin/grabpl integration-tests --database postgres depends_on: - grabpl environment: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres image: grafana/build-container:1.5.4 name: postgres-integration-tests - commands: - apt-get update - apt-get install -yq default-mysql-client - dockerize -wait tcp://mysql:3306 -timeout 120s - cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h mysql -P 3306 -u root -prootpass - go clean -testcache - ./bin/grabpl integration-tests --database mysql depends_on: - grabpl environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql image: grafana/build-container:1.5.4 name: mysql-integration-tests trigger: ref: - refs/heads/v[0-9]* type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- depends_on: - oss-build-e2e-publish-release-branch - oss-test-release-branch - oss-integration-tests-release-branch kind: pipeline name: oss-windows-release-branch 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/v2.9.41/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 . 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: ref: - refs/heads/v[0-9]* type: docker volumes: - host: path: /var/run/docker.sock name: docker --- clone: disable: true depends_on: [] image_pull_secrets: - dockerconfigjson kind: pipeline name: enterprise-build-e2e-publish-release-branch node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - git clone "https://$${GITHUB_TOKEN}@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise - git checkout ${DRONE_BRANCH} environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: clone-enterprise - commands: - mv bin/grabpl /tmp/ - rmdir bin - mv grafana-enterprise /tmp/ - /tmp/grabpl init-enterprise /tmp/grafana-enterprise - mv /tmp/grafana-enterprise/deployment_tools_config.json deployment_tools_config.json - mkdir bin - mv /tmp/grabpl bin/ depends_on: - clone-enterprise environment: {} image: grafana/build-container:1.5.4 name: init-enterprise - commands: - make gen-go depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: gen-version - commands: - ./bin/grabpl build-backend --jobs 8 --edition enterprise --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - wire-install image: grafana/build-container:1.5.4 name: build-backend - commands: - ./bin/grabpl build-frontend --jobs 8 --edition enterprise --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend - commands: - ./bin/grabpl build-frontend-packages --jobs 8 --edition enterprise --build-id ${DRONE_BUILD_NUMBER} depends_on: - gen-version - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 image: grafana/build-container:1.5.4 name: build-frontend-packages - commands: - ./bin/grabpl build-plugins --jobs 8 --edition enterprise --sign --signing-admin depends_on: - gen-version - yarn-install environment: GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: build-plugins - commands: - ./bin/linux-amd64/grafana-cli cue validate-schema --grafana-root . depends_on: - build-backend image: grafana/build-container:1.5.4 name: validate-scuemata - commands: - '# It is required that the generated Typescript be in sync with the input CUE files.' - '# To enforce this, the following command will attempt to generate Typescript from all' - '# appropriate .cue files, then compare with the corresponding (*.gen.ts) file the generated' - '# code would have been written to. It exits 1 if any diffs are found.' - ./bin/linux-amd64/grafana-cli cue gen-ts --grafana-root . --diff depends_on: - validate-scuemata image: grafana/build-container:1.5.4 name: ensure-cuetsified - commands: - ./bin/grabpl build-backend --jobs 8 --edition enterprise2 --build-id ${DRONE_BUILD_NUMBER} --variants linux-amd64 depends_on: - gen-version - wire-install image: grafana/build-container:1.5.4 name: build-backend-enterprise2 - commands: - ./bin/grabpl package --jobs 8 --edition enterprise --build-id ${DRONE_BUILD_NUMBER} --sign depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages - build-backend-enterprise2 environment: GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: package - commands: - ls dist/*.tar.gz* - cp dist/*.tar.gz* packaging/docker/ depends_on: - package image: grafana/build-container:1.5.4 name: copy-packages-for-docker - commands: - ./bin/grabpl build-docker --edition enterprise --shouldSave depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images volumes: - name: docker path: /var/run/docker.sock - commands: - ./bin/grabpl build-docker --edition enterprise --shouldSave --ubuntu depends_on: - copy-packages-for-docker environment: GCP_KEY: from_secret: gcp_key image: google/cloud-sdk name: build-docker-images-ubuntu volumes: - name: docker path: /var/run/docker.sock - commands: - ./scripts/grafana-server/start-server depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages detach: true environment: ARCH: linux-amd64 PORT: 3001 RUNDIR: scripts/grafana-server/tmp-grafana-enterprise image: grafana/build-container:1.5.4 name: grafana-server - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite dashboards-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-dashboards-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite smoke-tests-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-smoke-tests-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite panels-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-panels-suite - commands: - apt-get install -y netcat - ./bin/grabpl e2e-tests --port 3001 --suite various-suite --tries 3 depends_on: - grafana-server environment: HOST: grafana-server image: cypress/included:9.5.1-node16.14.0-slim-chrome99-ff97 name: end-to-end-tests-various-suite - commands: - apt-get update - apt-get install -yq zip - ls -lah ./e2e - find ./e2e -type f -name "*.mp4" - printenv GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY > /tmp/gcpkey_upload_artifacts.json - gcloud auth activate-service-account --key-file=/tmp/gcpkey_upload_artifacts.json - find ./e2e -type f -name "*spec.ts.mp4" | zip e2e/videos.zip -@ - gsutil cp e2e/videos.zip gs://$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - export E2E_ARTIFACTS_VIDEO_ZIP=https://storage.googleapis.com/$${E2E_TEST_ARTIFACTS_BUCKET}/${DRONE_BUILD_NUMBER}/artifacts/videos/videos.zip - 'echo "E2E Test artifacts uploaded to: $${E2E_ARTIFACTS_VIDEO_ZIP}"' - 'curl -X POST https://api.github.com/repos/${DRONE_REPO}/statuses/${DRONE_COMMIT_SHA} -H "Authorization: token $${GITHUB_TOKEN}" -d "{\"state\":\"success\",\"target_url\":\"$${E2E_ARTIFACTS_VIDEO_ZIP}\", \"description\": \"Click on the details to download e2e recording videos\", \"context\": \"e2e_artifacts\"}"' depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite - end-to-end-tests-smoke-tests-suite - end-to-end-tests-various-suite environment: E2E_TEST_ARTIFACTS_BUCKET: releng-pipeline-artifacts-dev GCP_GRAFANA_UPLOAD_ARTIFACTS_KEY: from_secret: gcp_upload_artifacts_key GITHUB_TOKEN: from_secret: github_token image: google/cloud-sdk:367.0.0 name: e2e-tests-artifacts-upload when: status: - success - failure - commands: - yarn storybook:build - ./bin/grabpl verify-storybook depends_on: - build-frontend - build-frontend-packages environment: NODE_OPTIONS: --max_old_space_size=4096 image: grafana/build-container:1.5.4 name: build-storybook - commands: - ./bin/grabpl upload-cdn --edition enterprise --src-bucket "grafana-static-assets" depends_on: - package environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets when: repo: - grafana/grafana - commands: - ./bin/grabpl upload-packages --edition enterprise --packages-bucket grafana-downloads depends_on: - package environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages when: repo: - grafana/grafana - commands: - ./bin/grabpl package --jobs 8 --edition enterprise2 --build-id ${DRONE_BUILD_NUMBER} --variants linux-amd64 --sign depends_on: - build-plugins - build-backend - build-frontend - build-frontend-packages - build-backend-enterprise2 environment: GPG_KEY_PASSWORD: from_secret: gpg_key_password GPG_PRIV_KEY: from_secret: gpg_priv_key GPG_PUB_KEY: from_secret: gpg_pub_key GRAFANA_API_KEY: from_secret: grafana_api_key image: grafana/build-container:1.5.4 name: package-enterprise2 - commands: - ./bin/grabpl upload-cdn --edition enterprise2 --src-bucket "grafana-static-assets" depends_on: - package-enterprise2 environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets-enterprise2 - commands: - ./bin/grabpl upload-packages --edition enterprise2 --packages-bucket grafana-downloads-enterprise2 depends_on: - package-enterprise2 environment: GCP_KEY: from_secret: gcp_key PRERELEASE_BUCKET: from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages-enterprise2 trigger: ref: - refs/heads/v[0-9]* type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- clone: disable: true depends_on: [] image_pull_secrets: - dockerconfigjson kind: pipeline name: enterprise-test-release-branch node: type: no-parallel platform: arch: amd64 os: linux services: [] steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - git clone "https://$${GITHUB_TOKEN}@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise - git checkout ${DRONE_BRANCH} environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: clone-enterprise - commands: - mv bin/grabpl /tmp/ - rmdir bin - mv grafana-enterprise /tmp/ - /tmp/grabpl init-enterprise /tmp/grafana-enterprise - mv /tmp/grafana-enterprise/deployment_tools_config.json deployment_tools_config.json - mkdir bin - mv /tmp/grabpl bin/ depends_on: - clone-enterprise environment: {} image: grafana/build-container:1.5.4 name: init-enterprise - commands: - make gen-go depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: wire-install - commands: - yarn install --immutable depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: yarn-install - commands: - ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER} depends_on: - init-enterprise image: grafana/build-container:1.5.4 name: gen-version - commands: - |- echo -e "unknwon referer errorstring eror iam wan" > words_to_ignore.txt - codespell -I words_to_ignore.txt docs/ - rm words_to_ignore.txt image: grafana/build-container:1.5.4 name: codespell - commands: - ./bin/grabpl lint-backend --edition enterprise depends_on: - wire-install environment: CGO_ENABLED: "1" image: grafana/build-container:1.5.4 name: lint-backend - commands: - yarn run prettier:check - yarn run lint - yarn run i18n:compile - yarn run typecheck depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: lint-frontend - commands: - ./bin/grabpl test-backend --edition enterprise depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend - commands: - ./bin/grabpl integration-tests --edition enterprise depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-integration - commands: - yarn run ci:test-frontend depends_on: - yarn-install environment: TEST_MAX_WORKERS: 50% image: grafana/build-container:1.5.4 name: test-frontend - commands: - ./bin/grabpl lint-backend --edition enterprise2 depends_on: - wire-install environment: CGO_ENABLED: "1" image: grafana/build-container:1.5.4 name: lint-backend-enterprise2 - commands: - ./bin/grabpl test-backend --edition enterprise2 depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-enterprise2 - commands: - ./bin/grabpl integration-tests --edition enterprise2 depends_on: - wire-install image: grafana/build-container:1.5.4 name: test-backend-integration-enterprise2 trigger: ref: - refs/heads/v[0-9]* type: docker volumes: - host: path: /var/run/docker.sock name: docker --- clone: disable: true depends_on: [] image_pull_secrets: - dockerconfigjson kind: pipeline name: enterprise-integration-tests-release-branch node: type: no-parallel platform: arch: amd64 os: linux services: - environment: PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_DB: grafanatest POSTGRES_PASSWORD: grafanatest POSTGRES_USER: grafanatest image: postgres:12.3-alpine name: postgres volumes: - name: postgres path: /var/lib/postgresql/data/pgdata - environment: MYSQL_DATABASE: grafana_tests MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: rootpass MYSQL_USER: grafana image: mysql:5.6.48 name: mysql volumes: - name: mysql path: /var/lib/mysql - environment: {} image: redis:6.2.1-alpine name: redis - environment: {} image: memcached:1.6.9-alpine name: memcached steps: - commands: - mkdir -p bin - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.41/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl - commands: - echo $DRONE_RUNNER_NAME image: alpine:3.15 name: identify-runner - commands: - git clone "https://$${GITHUB_TOKEN}@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise - git checkout ${DRONE_BRANCH} environment: GITHUB_TOKEN: from_secret: github_token image: grafana/build-container:1.5.4 name: clone-enterprise - commands: - mv bin/grabpl /tmp/ - rmdir bin - mv grafana-enterprise /tmp/ - /tmp/grabpl init-enterprise /tmp/grafana-enterprise - mv /tmp/grafana-enterprise/deployment_tools_config.json deployment_tools_config.json - mkdir bin - mv /tmp/grabpl bin/ depends_on: - clone-enterprise environment: {} image: grafana/build-container:1.5.4 name: init-enterprise - commands: - apt-get update - apt-get install -yq postgresql-client - dockerize -wait tcp://postgres:5432 -timeout 120s - psql -p 5432 -h postgres -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql - go clean -testcache - ./bin/grabpl integration-tests --database postgres depends_on: - init-enterprise environment: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres image: grafana/build-container:1.5.4 name: postgres-integration-tests - commands: - apt-get update - apt-get install -yq default-mysql-client - dockerize -wait tcp://mysql:3306 -timeout 120s - cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h mysql -P 3306 -u root -prootpass - go clean -testcache - ./bin/grabpl integration-tests --database mysql depends_on: - init-enterprise environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql image: grafana/build-container:1.5.4 name: mysql-integration-tests - commands: - dockerize -wait tcp://redis:6379/0 -timeout 120s - ./bin/grabpl integration-tests depends_on: - init-enterprise environment: REDIS_URL: redis://redis:6379/0 image: grafana/build-container:1.5.4 name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s - ./bin/grabpl integration-tests depends_on: - init-enterprise environment: MEMCACHED_HOSTS: memcached:11211 image: grafana/build-container:1.5.4 name: memcached-integration-tests trigger: ref: - refs/heads/v[0-9]* type: docker volumes: - host: path: /var/run/docker.sock name: docker - name: postgres temp: medium: memory - name: mysql temp: medium: memory --- clone: disable: true depends_on: - enterprise-build-e2e-publish-release-branch - enterprise-test-release-branch - enterprise-integration-tests-release-branch image_pull_secrets: - dockerconfigjson kind: pipeline name: enterprise-windows-release-branch 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/v2.9.41/windows/grabpl.exe -OutFile grabpl.exe - git clone "https://$$env:GITHUB_TOKEN@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise - git checkout $$env:DRONE_BRANCH environment: GITHUB_TOKEN: from_secret: github_token image: grafana/ci-wix:0.1.1 name: clone - commands: - cp -r grafana-enterprise C:\App\grafana-enterprise - rm -r -force grafana-enterprise - cp grabpl.exe C:\App\grabpl.exe - rm -force grabpl.exe - C:\App\grabpl.exe init-enterprise --github-token $$env:GITHUB_TOKEN C:\App\grafana-enterprise - cp C:\App\grabpl.exe grabpl.exe depends_on: - clone environment: GITHUB_TOKEN: from_secret: github_token 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 . 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: ref: - refs/heads/v[0-9]* type: docker volumes: - host: path: /var/run/docker.sock name: docker --- kind: pipeline name: scan-grafana/grafana:latest-image platform: arch: amd64 os: linux steps: - commands: - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/grafana:latest image: aquasec/trivy:0.21.0 name: scan-unkown-low-medium-vulnerabilities - commands: - trivy --exit-code 1 --severity HIGH,CRITICAL grafana/grafana:latest image: aquasec/trivy:0.21.0 name: scan-high-critical-vulnerabilities - image: plugins/slack name: slack-notify-failure settings: channel: grafana-backend-ops template: 'Nightly docker image scan job for grafana/grafana:latest failed: {{build.link}}' webhook: from_secret: slack_webhook_backend when: status: failure trigger: cron: nightly event: cron type: docker --- kind: pipeline name: scan-grafana/grafana:main-image platform: arch: amd64 os: linux steps: - commands: - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/grafana:main image: aquasec/trivy:0.21.0 name: scan-unkown-low-medium-vulnerabilities - commands: - trivy --exit-code 1 --severity HIGH,CRITICAL grafana/grafana:main image: aquasec/trivy:0.21.0 name: scan-high-critical-vulnerabilities - image: plugins/slack name: slack-notify-failure settings: channel: grafana-backend-ops template: 'Nightly docker image scan job for grafana/grafana:main failed: {{build.link}}' webhook: from_secret: slack_webhook_backend when: status: failure trigger: cron: nightly event: cron type: docker --- kind: pipeline name: scan-grafana/grafana:latest-ubuntu-image platform: arch: amd64 os: linux steps: - commands: - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/grafana:latest-ubuntu image: aquasec/trivy:0.21.0 name: scan-unkown-low-medium-vulnerabilities - commands: - trivy --exit-code 1 --severity HIGH,CRITICAL grafana/grafana:latest-ubuntu image: aquasec/trivy:0.21.0 name: scan-high-critical-vulnerabilities - image: plugins/slack name: slack-notify-failure settings: channel: grafana-backend-ops template: 'Nightly docker image scan job for grafana/grafana:latest-ubuntu failed: {{build.link}}' webhook: from_secret: slack_webhook_backend when: status: failure trigger: cron: nightly event: cron type: docker --- kind: pipeline name: scan-grafana/grafana:main-ubuntu-image platform: arch: amd64 os: linux steps: - commands: - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/grafana:main-ubuntu image: aquasec/trivy:0.21.0 name: scan-unkown-low-medium-vulnerabilities - commands: - trivy --exit-code 1 --severity HIGH,CRITICAL grafana/grafana:main-ubuntu image: aquasec/trivy:0.21.0 name: scan-high-critical-vulnerabilities - image: plugins/slack name: slack-notify-failure settings: channel: grafana-backend-ops template: 'Nightly docker image scan job for grafana/grafana:main-ubuntu failed: {{build.link}}' webhook: from_secret: slack_webhook_backend when: status: failure trigger: cron: nightly event: cron type: docker --- get: name: .dockerconfigjson path: secret/data/common/gcr kind: secret name: dockerconfigjson --- get: name: pat path: infra/data/ci/github/grafanabot kind: secret name: github_token --- get: name: machine-user-token path: infra/data/ci/drone kind: secret name: drone_token --- get: name: bucket path: infra/data/ci/grafana/prerelease kind: secret name: prerelease_bucket --- get: name: credentials.json path: infra/data/ci/grafana/releng/artifacts-uploader-service-account kind: secret name: gcp_upload_artifacts_key --- kind: signature hmac: 48f6a3ade75e5993b4a49d8f1a5b7d184a63767a108b16c5f71eca6c986da9c7 ...