Merge branch 'v8.3.x' of github.com:grafana/grafana into v8.3.x
This commit is contained in:
+2
-1
@@ -6,6 +6,7 @@
|
||||
|
||||
load('scripts/drone/pipelines/pr.star', 'pr_pipelines')
|
||||
load('scripts/drone/pipelines/main.star', 'main_pipelines')
|
||||
load('scripts/drone/pipelines/docs.star', 'docs_pipelines')
|
||||
load('scripts/drone/pipelines/release.star', 'release_pipelines', 'publish_image_pipelines', 'publish_artifacts_pipelines', 'publish_npm_pipelines', 'publish_packages_pipeline')
|
||||
load('scripts/drone/version.star', 'version_branch_pipelines')
|
||||
load('scripts/drone/pipelines/cron.star', 'cronjobs')
|
||||
@@ -13,7 +14,7 @@ load('scripts/drone/vault.star', 'secrets')
|
||||
|
||||
def main(ctx):
|
||||
edition = 'oss'
|
||||
return pr_pipelines(edition=edition) + main_pipelines(edition=edition) + release_pipelines() + \
|
||||
return pr_pipelines(edition=edition) + docs_pipelines(edition=edition) + main_pipelines(edition=edition) + release_pipelines() + \
|
||||
publish_image_pipelines('public') + publish_image_pipelines('security') + \
|
||||
publish_artifacts_pipelines('security') + publish_artifacts_pipelines('public') + \
|
||||
publish_npm_pipelines('public') + publish_packages_pipeline() + \
|
||||
|
||||
+225
-149
@@ -11,7 +11,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -92,6 +92,9 @@ steps:
|
||||
trigger:
|
||||
event:
|
||||
- pull_request
|
||||
paths:
|
||||
exclude:
|
||||
- docs/**
|
||||
type: docker
|
||||
volumes:
|
||||
- host:
|
||||
@@ -110,7 +113,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -255,20 +258,6 @@ steps:
|
||||
failure: always
|
||||
image: grafana/docker-puppeteer:1.0.0
|
||||
name: test-a11y-frontend
|
||||
- commands:
|
||||
- ./scripts/ci-reference-docs-lint.sh ci
|
||||
depends_on:
|
||||
- build-frontend
|
||||
image: grafana/build-container:1.4.9
|
||||
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
|
||||
- commands:
|
||||
- ls dist/*.tar.gz*
|
||||
- cp dist/*.tar.gz* packaging/docker/
|
||||
@@ -276,18 +265,24 @@ steps:
|
||||
- package
|
||||
image: grafana/build-container:1.4.9
|
||||
name: copy-packages-for-docker
|
||||
- depends_on:
|
||||
- commands:
|
||||
- ./bin/grabpl build-docker --edition oss -archs amd64
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
image: grafana/drone-grafana-docker:0.3.2
|
||||
environment:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: build-docker-images
|
||||
settings:
|
||||
archs: amd64
|
||||
dry_run: true
|
||||
edition: oss
|
||||
ubuntu: false
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
trigger:
|
||||
event:
|
||||
- pull_request
|
||||
paths:
|
||||
exclude:
|
||||
- docs/**
|
||||
type: docker
|
||||
volumes:
|
||||
- host:
|
||||
@@ -326,7 +321,7 @@ services:
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -373,6 +368,9 @@ steps:
|
||||
trigger:
|
||||
event:
|
||||
- pull_request
|
||||
paths:
|
||||
exclude:
|
||||
- docs/**
|
||||
type: docker
|
||||
volumes:
|
||||
- host:
|
||||
@@ -387,6 +385,68 @@ volumes:
|
||||
---
|
||||
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.4/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:
|
||||
- make gen-go
|
||||
- ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER}
|
||||
- yarn install --immutable
|
||||
image: grafana/build-container:1.4.9
|
||||
name: initialize
|
||||
- commands:
|
||||
- ./bin/grabpl build-frontend --jobs 8 --no-install-deps --edition oss --build-id
|
||||
${DRONE_BUILD_NUMBER} --no-pull-enterprise
|
||||
depends_on:
|
||||
- initialize
|
||||
environment:
|
||||
NODE_OPTIONS: --max_old_space_size=8192
|
||||
image: grafana/build-container:1.4.9
|
||||
name: build-frontend
|
||||
- commands:
|
||||
- ./scripts/ci-reference-docs-lint.sh ci
|
||||
depends_on:
|
||||
- build-frontend
|
||||
image: grafana/build-container:1.4.9
|
||||
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-test
|
||||
node:
|
||||
type: no-parallel
|
||||
@@ -397,7 +457,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -497,7 +557,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -705,30 +765,66 @@ steps:
|
||||
- package
|
||||
image: grafana/build-container:1.4.9
|
||||
name: copy-packages-for-docker
|
||||
- depends_on:
|
||||
- commands:
|
||||
- ./bin/grabpl build-docker --edition oss
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
image: grafana/drone-grafana-docker:0.3.2
|
||||
environment:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: build-docker-images
|
||||
settings:
|
||||
dry_run: false
|
||||
edition: oss
|
||||
password:
|
||||
from_secret: docker_password
|
||||
ubuntu: false
|
||||
username:
|
||||
from_secret: docker_user
|
||||
- depends_on:
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- ./bin/grabpl build-docker --edition oss --ubuntu
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
image: grafana/drone-grafana-docker:0.3.2
|
||||
environment:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: build-docker-images-ubuntu
|
||||
settings:
|
||||
dry_run: false
|
||||
edition: oss
|
||||
password:
|
||||
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
|
||||
ubuntu: true
|
||||
username:
|
||||
from_secret: docker_user
|
||||
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
|
||||
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
|
||||
- commands:
|
||||
- ./scripts/circle-release-canary-packages.sh
|
||||
depends_on:
|
||||
@@ -749,18 +845,18 @@ steps:
|
||||
- end-to-end-tests-smoke-tests-suite
|
||||
- end-to-end-tests-various-suite
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
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 upload-cdn --edition oss --bucket "grafana-static-assets"
|
||||
- ./bin/grabpl upload-cdn --edition oss --src-bucket "grafana-static-assets"
|
||||
depends_on:
|
||||
- grafana-server
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -814,7 +910,7 @@ services:
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -892,7 +988,7 @@ steps:
|
||||
name: identify-runner
|
||||
- commands:
|
||||
- $$ProgressPreference = "SilentlyContinue"
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/windows/grabpl.exe
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/windows/grabpl.exe
|
||||
-OutFile grabpl.exe
|
||||
image: grafana/ci-wix:0.1.1
|
||||
name: initialize
|
||||
@@ -905,10 +1001,11 @@ steps:
|
||||
- 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 --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://%PRERELEASE_BUCKET%/artifacts/downloads/oss/main/
|
||||
- gsutil cp "$$fname.sha256" gs://%PRERELEASE_BUCKET%/artifacts/downloads/oss/main/
|
||||
- gsutil cp $$fname gs://grafana-downloads/oss/main/
|
||||
- gsutil cp "$$fname.sha256" gs://grafana-downloads/oss/main/
|
||||
depends_on:
|
||||
- initialize
|
||||
environment:
|
||||
@@ -946,7 +1043,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -959,7 +1056,6 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: initialize
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- ./bin/grabpl store-packages --edition oss --gcp-key /tmp/gcpkey.json --build-id
|
||||
${DRONE_BUILD_NUMBER}
|
||||
depends_on:
|
||||
@@ -1029,7 +1125,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -1127,8 +1223,6 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: copy-packages-for-docker
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
|
||||
- ./bin/grabpl build-docker --edition oss --shouldSave
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
@@ -1136,13 +1230,11 @@ steps:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: package-docker-images
|
||||
name: build-docker-images
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
|
||||
- ./bin/grabpl build-docker --edition oss --shouldSave --ubuntu
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
@@ -1150,7 +1242,7 @@ steps:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: package-docker-images-ubuntu
|
||||
name: build-docker-images-ubuntu
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
@@ -1212,11 +1304,12 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: build-storybook
|
||||
- commands:
|
||||
- ./bin/grabpl upload-cdn --edition oss --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets"
|
||||
- ./bin/grabpl upload-cdn --edition oss --src-bucket "$${PRERELEASE_BUCKET}" --src-dir
|
||||
artifacts/static-assets
|
||||
depends_on:
|
||||
- grafana-server
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -1230,7 +1323,7 @@ steps:
|
||||
- end-to-end-tests-smoke-tests-suite
|
||||
- end-to-end-tests-various-suite
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -1304,7 +1397,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -1424,7 +1517,7 @@ services:
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -1508,7 +1601,7 @@ steps:
|
||||
name: identify-runner
|
||||
- commands:
|
||||
- $$ProgressPreference = "SilentlyContinue"
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/windows/grabpl.exe
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/windows/grabpl.exe
|
||||
-OutFile grabpl.exe
|
||||
image: grafana/ci-wix:0.1.1
|
||||
name: initialize
|
||||
@@ -1567,7 +1660,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -1699,8 +1792,6 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: copy-packages-for-docker
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
|
||||
- ./bin/grabpl build-docker --edition enterprise --shouldSave
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
@@ -1708,13 +1799,11 @@ steps:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: package-docker-images
|
||||
name: build-docker-images
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
|
||||
- ./bin/grabpl build-docker --edition enterprise --shouldSave --ubuntu
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
@@ -1722,7 +1811,7 @@ steps:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: package-docker-images-ubuntu
|
||||
name: build-docker-images-ubuntu
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
@@ -1776,11 +1865,12 @@ steps:
|
||||
image: cypress/included:8.4.1
|
||||
name: end-to-end-tests-various-suite
|
||||
- commands:
|
||||
- ./bin/grabpl upload-cdn --edition enterprise --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets"
|
||||
- ./bin/grabpl upload-cdn --edition enterprise --src-bucket "$${PRERELEASE_BUCKET}"
|
||||
--src-dir artifacts/static-assets
|
||||
depends_on:
|
||||
- package
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -1791,7 +1881,7 @@ steps:
|
||||
depends_on:
|
||||
- package
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -1819,11 +1909,12 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: package-enterprise2
|
||||
- commands:
|
||||
- ./bin/grabpl upload-cdn --edition enterprise2 --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets"
|
||||
- ./bin/grabpl upload-cdn --edition enterprise2 --src-bucket "$${PRERELEASE_BUCKET}"
|
||||
--src-dir artifacts/static-assets
|
||||
depends_on:
|
||||
- package-enterprise2
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -1834,7 +1925,7 @@ steps:
|
||||
depends_on:
|
||||
- package-enterprise2
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -1877,7 +1968,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2049,7 +2140,7 @@ services:
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2177,7 +2268,7 @@ steps:
|
||||
name: identify-runner
|
||||
- commands:
|
||||
- $$ProgressPreference = "SilentlyContinue"
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/windows/grabpl.exe
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/windows/grabpl.exe
|
||||
-OutFile grabpl.exe
|
||||
- git clone "https://$$env:GITHUB_TOKEN@github.com/grafana/grafana-enterprise.git"
|
||||
- cd grafana-enterprise
|
||||
@@ -2252,7 +2343,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2274,8 +2365,8 @@ steps:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- ./bin/grabpl artifacts docker publish --version-tag ${TAG} --dockerhub-repo grafana
|
||||
--base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7
|
||||
- ./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:
|
||||
@@ -2291,8 +2382,8 @@ steps:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- ./bin/grabpl artifacts docker publish --version-tag ${TAG} --dockerhub-repo grafana-oss
|
||||
--base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7
|
||||
- ./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:
|
||||
@@ -2330,7 +2421,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2352,8 +2443,8 @@ steps:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- ./bin/grabpl artifacts docker publish --version-tag ${TAG} --dockerhub-repo grafana-enterprise
|
||||
--base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7
|
||||
- ./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:
|
||||
@@ -2391,7 +2482,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2413,8 +2504,8 @@ steps:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- ./bin/grabpl artifacts docker publish --security --version-tag ${TAG} --dockerhub-repo
|
||||
grafana --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7
|
||||
- ./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:
|
||||
@@ -2430,8 +2521,9 @@ steps:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- ./bin/grabpl artifacts docker publish --security --version-tag ${TAG} --dockerhub-repo
|
||||
grafana-oss --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7
|
||||
- ./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:
|
||||
@@ -2469,7 +2561,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2491,9 +2583,9 @@ steps:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- ./bin/grabpl artifacts docker publish --security --version-tag ${TAG} --dockerhub-repo
|
||||
grafana-enterprise --base alpine --base ubuntu --arch amd64 --arch arm64 --arch
|
||||
armv7
|
||||
- ./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:
|
||||
@@ -2531,7 +2623,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2567,7 +2659,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2614,7 +2706,7 @@ steps:
|
||||
name: initialize
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2662,12 +2754,11 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- ./bin/grabpl store-packages --edition oss --packages-bucket grafana-downloads
|
||||
--gcp-key /tmp/gcpkey.json ${DRONE_TAG}
|
||||
depends_on:
|
||||
@@ -2686,7 +2777,6 @@ steps:
|
||||
image: grafana/grafana-ci-deploy:1.3.1
|
||||
name: store-packages-oss
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- ./bin/grabpl store-packages --edition enterprise --packages-bucket grafana-downloads
|
||||
--gcp-key /tmp/gcpkey.json ${DRONE_TAG}
|
||||
depends_on:
|
||||
@@ -2727,7 +2817,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -2822,8 +2912,6 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: copy-packages-for-docker
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
|
||||
- ./bin/grabpl build-docker --edition oss --shouldSave
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
@@ -2831,13 +2919,11 @@ steps:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: package-docker-images
|
||||
name: build-docker-images
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
|
||||
- ./bin/grabpl build-docker --edition oss --shouldSave --ubuntu
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
@@ -2845,7 +2931,7 @@ steps:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: package-docker-images-ubuntu
|
||||
name: build-docker-images-ubuntu
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
@@ -2907,11 +2993,11 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: build-storybook
|
||||
- commands:
|
||||
- ./bin/grabpl upload-cdn --edition oss --bucket "grafana-static-assets"
|
||||
- ./bin/grabpl upload-cdn --edition oss --src-bucket "grafana-static-assets"
|
||||
depends_on:
|
||||
- grafana-server
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -2925,7 +3011,7 @@ steps:
|
||||
- end-to-end-tests-smoke-tests-suite
|
||||
- end-to-end-tests-various-suite
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -2958,7 +3044,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -3071,7 +3157,7 @@ services:
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -3148,7 +3234,7 @@ steps:
|
||||
name: identify-runner
|
||||
- commands:
|
||||
- $$ProgressPreference = "SilentlyContinue"
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/windows/grabpl.exe
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/windows/grabpl.exe
|
||||
-OutFile grabpl.exe
|
||||
image: grafana/ci-wix:0.1.1
|
||||
name: initialize
|
||||
@@ -3196,7 +3282,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -3217,7 +3303,7 @@ steps:
|
||||
- mv bin/grabpl /tmp/
|
||||
- rmdir bin
|
||||
- mv grafana-enterprise /tmp/
|
||||
- /tmp/grabpl init-enterprise --github-token $${GITHUB_TOKEN} /tmp/grafana-enterprise
|
||||
- /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/
|
||||
@@ -3226,9 +3312,7 @@ steps:
|
||||
- yarn install --immutable
|
||||
depends_on:
|
||||
- clone-enterprise
|
||||
environment:
|
||||
GITHUB_TOKEN:
|
||||
from_secret: github_token
|
||||
environment: {}
|
||||
image: grafana/build-container:1.4.9
|
||||
name: initialize
|
||||
- commands:
|
||||
@@ -3322,8 +3406,6 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: copy-packages-for-docker
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
|
||||
- ./bin/grabpl build-docker --edition enterprise --shouldSave
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
@@ -3331,13 +3413,11 @@ steps:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: package-docker-images
|
||||
name: build-docker-images
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
- commands:
|
||||
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
|
||||
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
|
||||
- ./bin/grabpl build-docker --edition enterprise --shouldSave --ubuntu
|
||||
depends_on:
|
||||
- copy-packages-for-docker
|
||||
@@ -3345,7 +3425,7 @@ steps:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
image: google/cloud-sdk
|
||||
name: package-docker-images-ubuntu
|
||||
name: build-docker-images-ubuntu
|
||||
volumes:
|
||||
- name: docker
|
||||
path: /var/run/docker.sock
|
||||
@@ -3408,11 +3488,11 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: build-storybook
|
||||
- commands:
|
||||
- ./bin/grabpl upload-cdn --edition enterprise --bucket "grafana-static-assets"
|
||||
- ./bin/grabpl upload-cdn --edition enterprise --src-bucket "grafana-static-assets"
|
||||
depends_on:
|
||||
- package
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -3423,7 +3503,7 @@ steps:
|
||||
depends_on:
|
||||
- package
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -3451,11 +3531,11 @@ steps:
|
||||
image: grafana/build-container:1.4.9
|
||||
name: package-enterprise2
|
||||
- commands:
|
||||
- ./bin/grabpl upload-cdn --edition enterprise2 --bucket "grafana-static-assets"
|
||||
- ./bin/grabpl upload-cdn --edition enterprise2 --src-bucket "grafana-static-assets"
|
||||
depends_on:
|
||||
- package-enterprise2
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -3466,7 +3546,7 @@ steps:
|
||||
depends_on:
|
||||
- package-enterprise2
|
||||
environment:
|
||||
GCP_GRAFANA_UPLOAD_KEY:
|
||||
GCP_KEY:
|
||||
from_secret: gcp_key
|
||||
PRERELEASE_BUCKET:
|
||||
from_secret: prerelease_bucket
|
||||
@@ -3503,7 +3583,7 @@ services: []
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -3524,7 +3604,7 @@ steps:
|
||||
- mv bin/grabpl /tmp/
|
||||
- rmdir bin
|
||||
- mv grafana-enterprise /tmp/
|
||||
- /tmp/grabpl init-enterprise --github-token $${GITHUB_TOKEN} /tmp/grafana-enterprise
|
||||
- /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/
|
||||
@@ -3533,9 +3613,7 @@ steps:
|
||||
- yarn install --immutable
|
||||
depends_on:
|
||||
- clone-enterprise
|
||||
environment:
|
||||
GITHUB_TOKEN:
|
||||
from_secret: github_token
|
||||
environment: {}
|
||||
image: grafana/build-container:1.4.9
|
||||
name: initialize
|
||||
- commands:
|
||||
@@ -3667,7 +3745,7 @@ services:
|
||||
steps:
|
||||
- commands:
|
||||
- mkdir -p bin
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/grabpl
|
||||
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/grabpl
|
||||
- chmod +x bin/grabpl
|
||||
image: byrnedo/alpine-curl:0.1.8
|
||||
name: grabpl
|
||||
@@ -3688,7 +3766,7 @@ steps:
|
||||
- mv bin/grabpl /tmp/
|
||||
- rmdir bin
|
||||
- mv grafana-enterprise /tmp/
|
||||
- /tmp/grabpl init-enterprise --github-token $${GITHUB_TOKEN} /tmp/grafana-enterprise
|
||||
- /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/
|
||||
@@ -3697,9 +3775,7 @@ steps:
|
||||
- yarn install --immutable
|
||||
depends_on:
|
||||
- clone-enterprise
|
||||
environment:
|
||||
GITHUB_TOKEN:
|
||||
from_secret: github_token
|
||||
environment: {}
|
||||
image: grafana/build-container:1.4.9
|
||||
name: initialize
|
||||
- commands:
|
||||
@@ -3787,7 +3863,7 @@ steps:
|
||||
name: identify-runner
|
||||
- commands:
|
||||
- $$ProgressPreference = "SilentlyContinue"
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.8.7/windows/grabpl.exe
|
||||
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.4/windows/grabpl.exe
|
||||
-OutFile grabpl.exe
|
||||
- git clone "https://$$env:GITHUB_TOKEN@github.com/grafana/grafana-enterprise.git"
|
||||
- cd grafana-enterprise
|
||||
@@ -3899,6 +3975,6 @@ kind: secret
|
||||
name: prerelease_bucket
|
||||
---
|
||||
kind: signature
|
||||
hmac: 1c39a83bdf091e43a83d39be224283c10d9e5a47cde268a1c3c6fd1478531cb4
|
||||
hmac: a39cc6926bbf02f091f7867ea09f2f818d83451aa1125955f6993a5bc1bf7c10
|
||||
|
||||
...
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
name: publish_docs
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- v8.3.x
|
||||
paths:
|
||||
- 'docs/sources/**'
|
||||
- 'packages/grafana-*/**'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- run: git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.GH_BOT_ACCESS_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync
|
||||
- name: generate-packages-docs
|
||||
uses: actions/setup-node@v2.4.1
|
||||
id: generate-docs
|
||||
with:
|
||||
node-version: '14'
|
||||
- name: Get yarn cache directory path
|
||||
id: yarn-cache-dir-path
|
||||
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||
- uses: actions/cache@v2.1.6
|
||||
with:
|
||||
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||
key: yarn-${{ hashFiles('**/yarn.lock') }}
|
||||
restore-keys: |
|
||||
yarn-
|
||||
- run: yarn install --immutable
|
||||
- run: ./scripts/ci-reference-docs-build.sh
|
||||
- name: publish-to-git
|
||||
uses: ./.github/actions/website-sync
|
||||
id: publish
|
||||
with:
|
||||
repository: grafana/website
|
||||
branch: master
|
||||
host: github.com
|
||||
github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}'
|
||||
source_folder: docs/sources
|
||||
target_folder: content/docs/grafana/latest
|
||||
allow_no_changes: 'true'
|
||||
- shell: bash
|
||||
run: |
|
||||
test -n "${{ steps.publish.outputs.commit_hash }}"
|
||||
test -n "${{ steps.publish.outputs.working_directory }}"
|
||||
+1
-1
@@ -20,7 +20,7 @@ COPY emails emails
|
||||
ENV NODE_ENV production
|
||||
RUN yarn build
|
||||
|
||||
FROM golang:1.17.6-alpine3.15 as go-builder
|
||||
FROM golang:1.17.7-alpine3.15 as go-builder
|
||||
|
||||
RUN apk add --no-cache gcc g++ make
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ COPY emails emails
|
||||
ENV NODE_ENV production
|
||||
RUN yarn build
|
||||
|
||||
FROM golang:1.17.6 AS go-builder
|
||||
FROM golang:1.17.7 AS go-builder
|
||||
|
||||
WORKDIR /src/grafana
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ The markers layer allows you to display data points as different marker shapes s
|
||||
|
||||

|
||||
|
||||
- **Marker Color** configures the color of the marker. The default `Fixed size` keeps all points a single color. There is an alternate option to have multiple colors depending on the data point values and the threshold set at the `Thresholds` section.
|
||||
- **Marker Color** configures the color of the marker. The default `Single color` keeps all points a single color. There is an alternate option to have multiple colors depending on the data point values and the threshold set at the `Thresholds` section.
|
||||
- **Marker Size** configures the size of the marker. Default is `Fixed size`, making all marker size the same regardless of the data points. However, there is also an option to scale the circles to the corresponding data points. `Min` and `Max` marker size has to be set such that the Marker layer can scale within this range.
|
||||
- **Marker Shape** allows you to choose the shape, icon, or graphic to aid in providing additional visual context to your data. Choose from assets that are included with Grafana such as simple shapes or the Unicon library. You can also specify a URL containing an image asset. The image must be a scalable vector graphic (SVG).
|
||||
- **Fill opacity** configures the transparency of each marker.
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"stable": "8.3.5",
|
||||
"stable": "8.3.6",
|
||||
"testing": "8.4.0-beta1"
|
||||
}
|
||||
|
||||
@@ -422,7 +422,7 @@ func (hs *HTTPServer) addMiddlewaresAndStaticRoutes() {
|
||||
}
|
||||
|
||||
m.Use(middleware.Recovery(hs.Cfg))
|
||||
m.UseMiddleware(middleware.CSRF(hs.Cfg.LoginCookieName))
|
||||
m.UseMiddleware(middleware.CSRF(hs.Cfg.LoginCookieName, hs.log))
|
||||
|
||||
hs.mapStatic(m, hs.Cfg.StaticRootPath, "build", "public/build")
|
||||
hs.mapStatic(m, hs.Cfg.StaticRootPath, "", "public")
|
||||
|
||||
+15
-4
@@ -4,10 +4,12 @@ import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
)
|
||||
|
||||
func CSRF(loginCookieName string) func(http.Handler) http.Handler {
|
||||
func CSRF(loginCookieName string, logger log.Logger) func(http.Handler) http.Handler {
|
||||
// As per RFC 7231/4.2.2 these methods are idempotent:
|
||||
// (GET is excluded because it may have side effects in some APIs)
|
||||
safeMethods := []string{"HEAD", "OPTIONS", "TRACE"}
|
||||
@@ -27,12 +29,21 @@ func CSRF(loginCookieName string) func(http.Handler) http.Handler {
|
||||
}
|
||||
}
|
||||
// Otherwise - verify that Origin matches the server origin
|
||||
host := strings.Split(r.Host, ":")[0]
|
||||
netAddr, err := util.SplitHostPortDefault(r.Host, "", "0") // we ignore the port
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
origin, err := url.Parse(r.Header.Get("Origin"))
|
||||
if err != nil || (origin.String() != "" && origin.Hostname() != host) {
|
||||
if err != nil {
|
||||
logger.Error("error parsing Origin header", "err", err)
|
||||
}
|
||||
if err != nil || netAddr.Host == "" || (origin.String() != "" && origin.Hostname() != netAddr.Host) {
|
||||
http.Error(w, "origin not allowed", http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
|
||||
next.ServeHTTP(w, r)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestMiddlewareCSRF(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
cookieName string
|
||||
method string
|
||||
origin string
|
||||
host string
|
||||
code int
|
||||
}{
|
||||
{
|
||||
name: "mismatched origin and host is forbidden",
|
||||
cookieName: "foo",
|
||||
method: "GET",
|
||||
origin: "http://notLocalhost",
|
||||
host: "localhost",
|
||||
code: http.StatusForbidden,
|
||||
},
|
||||
{
|
||||
name: "mismatched origin and host is NOT forbidden with a 'Safe Method'",
|
||||
cookieName: "foo",
|
||||
method: "TRACE",
|
||||
origin: "http://notLocalhost",
|
||||
host: "localhost",
|
||||
code: http.StatusOK,
|
||||
},
|
||||
{
|
||||
name: "mismatched origin and host is NOT forbidden without a cookie",
|
||||
cookieName: "",
|
||||
method: "GET",
|
||||
origin: "http://notLocalhost",
|
||||
host: "localhost",
|
||||
code: http.StatusOK,
|
||||
},
|
||||
{
|
||||
name: "malformed host is a bad request",
|
||||
cookieName: "foo",
|
||||
method: "GET",
|
||||
host: "localhost:80:80",
|
||||
code: http.StatusBadRequest,
|
||||
},
|
||||
{
|
||||
name: "host works without port",
|
||||
cookieName: "foo",
|
||||
method: "GET",
|
||||
host: "localhost",
|
||||
origin: "http://localhost",
|
||||
code: http.StatusOK,
|
||||
},
|
||||
{
|
||||
name: "port does not have to match",
|
||||
cookieName: "foo",
|
||||
method: "GET",
|
||||
host: "localhost:80",
|
||||
origin: "http://localhost:3000",
|
||||
code: http.StatusOK,
|
||||
},
|
||||
{
|
||||
name: "IPv6 host works with port",
|
||||
cookieName: "foo",
|
||||
method: "GET",
|
||||
host: "[::1]:3000",
|
||||
origin: "http://[::1]:3000",
|
||||
code: http.StatusOK,
|
||||
},
|
||||
{
|
||||
name: "IPv6 host (with longer address) works with port",
|
||||
cookieName: "foo",
|
||||
method: "GET",
|
||||
host: "[2001:db8::1]:3000",
|
||||
origin: "http://[2001:db8::1]:3000",
|
||||
code: http.StatusOK,
|
||||
},
|
||||
{
|
||||
name: "IPv6 host (with longer address) works without port",
|
||||
cookieName: "foo",
|
||||
method: "GET",
|
||||
host: "[2001:db8::1]",
|
||||
origin: "http://[2001:db8::1]",
|
||||
code: http.StatusOK,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
rr := csrfScenario(t, tt.cookieName, tt.method, tt.origin, tt.host)
|
||||
require.Equal(t, tt.code, rr.Code)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func csrfScenario(t *testing.T, cookieName, method, origin, host string) *httptest.ResponseRecorder {
|
||||
req, err := http.NewRequest(method, "/", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
req.AddCookie(&http.Cookie{
|
||||
Name: cookieName,
|
||||
})
|
||||
|
||||
// Note: Not sure where host header populates req.Host, or how that works.
|
||||
req.Host = host
|
||||
req.Header.Set("HOST", host)
|
||||
|
||||
req.Header.Set("ORIGIN", origin)
|
||||
|
||||
testHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
})
|
||||
|
||||
rr := httptest.NewRecorder()
|
||||
handler := CSRF(cookieName, log.New("test"))(testHandler)
|
||||
handler.ServeHTTP(rr, req)
|
||||
return rr
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package alerting
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/grafana/grafana/pkg/bus"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
@@ -74,6 +75,7 @@ func (s *AlertNotificationService) UpdateAlertNotification(ctx context.Context,
|
||||
|
||||
model := models.AlertNotification{
|
||||
Id: cmd.Id,
|
||||
OrgId: cmd.OrgId,
|
||||
Name: cmd.Name,
|
||||
Type: cmd.Type,
|
||||
Settings: cmd.Settings,
|
||||
@@ -134,7 +136,11 @@ func (s *AlertNotificationService) createNotifier(ctx context.Context, model *mo
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if query.Result != nil && query.Result.SecureSettings != nil {
|
||||
if query.Result == nil {
|
||||
return nil, fmt.Errorf("unable to find the alert notification")
|
||||
}
|
||||
|
||||
if query.Result.SecureSettings != nil {
|
||||
var err error
|
||||
secureSettingsMap, err = s.EncryptionService.DecryptJsonData(ctx, query.Result.SecureSettings, setting.SecretKey)
|
||||
if err != nil {
|
||||
|
||||
@@ -93,11 +93,11 @@ func (cr *configReader) parseDatasourceConfig(path string, file os.FileInfo) (*c
|
||||
func (cr *configReader) validateDefaultUniqueness(ctx context.Context, datasources []*configs) error {
|
||||
defaultCount := map[int64]int{}
|
||||
for i := range datasources {
|
||||
if datasources[i].Datasources == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, ds := range datasources[i].Datasources {
|
||||
if ds == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if ds.OrgID == 0 {
|
||||
ds.OrgID = 1
|
||||
}
|
||||
@@ -115,6 +115,10 @@ func (cr *configReader) validateDefaultUniqueness(ctx context.Context, datasourc
|
||||
}
|
||||
|
||||
for _, ds := range datasources[i].DeleteDatasources {
|
||||
if ds == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if ds.OrgID == 0 {
|
||||
ds.OrgID = 1
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ var (
|
||||
|
||||
twoDatasourcesConfig = "testdata/two-datasources"
|
||||
twoDatasourcesConfigPurgeOthers = "testdata/insert-two-delete-two"
|
||||
deleteOneDatasource = "testdata/delete-one"
|
||||
doubleDatasourcesConfig = "testdata/double-default"
|
||||
allProperties = "testdata/all-properties"
|
||||
versionZero = "testdata/version-0"
|
||||
@@ -129,6 +130,27 @@ func TestDatasourceAsConfig(t *testing.T) {
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("Remove one datasource", func(t *testing.T) {
|
||||
setup()
|
||||
t.Run("Remove one datasource", func(t *testing.T) {
|
||||
fakeRepo.loadAll = []*models.DataSource{}
|
||||
|
||||
t.Run("should have removed old datasource", func(t *testing.T) {
|
||||
dc := newDatasourceProvisioner(logger)
|
||||
err := dc.applyChanges(context.Background(), deleteOneDatasource)
|
||||
if err != nil {
|
||||
t.Fatalf("applyChanges return an error %v", err)
|
||||
}
|
||||
|
||||
require.Equal(t, 1, len(fakeRepo.deleted))
|
||||
// should have set OrgID to 1
|
||||
require.Equal(t, fakeRepo.deleted[0].OrgID, int64(1))
|
||||
require.Equal(t, 0, len(fakeRepo.inserted))
|
||||
require.Equal(t, len(fakeRepo.updated), 0)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("Two configured datasource and purge others ", func(t *testing.T) {
|
||||
setup()
|
||||
t.Run("two other datasources in database", func(t *testing.T) {
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
datasources: []
|
||||
delete_datasources:
|
||||
- name: old-data-source
|
||||
@@ -262,6 +262,8 @@ func transExecErr(s string) (string, error) {
|
||||
// Keep last state is translated to error as we now emit a
|
||||
// DatasourceError alert when the state is error
|
||||
return "Error", nil
|
||||
case "ok":
|
||||
return "OK", nil
|
||||
}
|
||||
return "", fmt.Errorf("unrecognized Execution Error setting %v", s)
|
||||
}
|
||||
|
||||
@@ -31,16 +31,23 @@ describe('Alertmanager utils', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('should parse escaped values correctly', () => {
|
||||
expect(parseMatcher('foo=~"bar\\"baz\\""')).toEqual<Matcher>({
|
||||
// Alertmanager has some strict requirements for label values;
|
||||
// we should not automatically encode or decode any values sent
|
||||
// and instead let AM return any errors like (matcher value contains unescaped double quote: bar"baz")
|
||||
// and allow the user to update the values to the correct format
|
||||
//
|
||||
// see https://github.com/prometheus/alertmanager/blob/4030e3670b359b8814aa8340ea1144f32b1f5ab3/pkg/labels/parse.go#L55-L99
|
||||
// and https://github.com/prometheus/alertmanager/blob/4030e3670b359b8814aa8340ea1144f32b1f5ab3/pkg/labels/parse.go#L101-L178
|
||||
it('should not parse escaped values', () => {
|
||||
expect(parseMatcher('foo="^[a-z0-9-]{1}[a-z0-9-]{0,30}$"')).toEqual<Matcher>({
|
||||
name: 'foo',
|
||||
value: 'bar"baz"',
|
||||
isRegex: true,
|
||||
value: '"^[a-z0-9-]{1}[a-z0-9-]{0,30}$"',
|
||||
isRegex: false,
|
||||
isEqual: true,
|
||||
});
|
||||
expect(parseMatcher('foo=~bar\\"baz\\"')).toEqual<Matcher>({
|
||||
name: 'foo',
|
||||
value: 'bar"baz"',
|
||||
value: 'bar\\"baz\\"',
|
||||
isRegex: true,
|
||||
isEqual: true,
|
||||
});
|
||||
|
||||
@@ -92,14 +92,6 @@ const matcherOperators = [
|
||||
MatcherOperator.equal,
|
||||
];
|
||||
|
||||
function unescapeMatcherValue(value: string) {
|
||||
let trimmed = value.trim().replace(/\\"/g, '"');
|
||||
if (trimmed.startsWith('"') && trimmed.endsWith('"') && !trimmed.endsWith('\\"')) {
|
||||
trimmed = trimmed.substr(1, trimmed.length - 2);
|
||||
}
|
||||
return trimmed.replace(/\\"/g, '"');
|
||||
}
|
||||
|
||||
export function parseMatcher(matcher: string): Matcher {
|
||||
const trimmed = matcher.trim();
|
||||
if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
|
||||
@@ -115,7 +107,7 @@ export function parseMatcher(matcher: string): Matcher {
|
||||
}
|
||||
const [operator, idx] = operatorsFound[0];
|
||||
const name = trimmed.substr(0, idx).trim();
|
||||
const value = unescapeMatcherValue(trimmed.substr(idx + operator.length).trim());
|
||||
const value = trimmed.substr(idx + operator.length).trim();
|
||||
if (!name) {
|
||||
throw new Error(`Invalid matcher: ${trimmed}`);
|
||||
}
|
||||
|
||||
@@ -88,6 +88,31 @@ describe('mapPromMetricsToServiceMap', () => {
|
||||
{ name: 'secondaryStat', values: new ArrayVector([1000, 2000]) },
|
||||
]);
|
||||
});
|
||||
|
||||
it('handles invalid failed count', () => {
|
||||
// If node.failed > node.total, the stat circle will render in the wrong position
|
||||
// Fixed this by limiting the failed value to the total value
|
||||
const range = {
|
||||
from: dateTime('2000-01-01T00:00:00'),
|
||||
to: dateTime('2000-01-01T00:01:00'),
|
||||
};
|
||||
const { nodes } = mapPromMetricsToServiceMap(
|
||||
[{ data: [totalsPromMetric, secondsPromMetric, invalidFailedPromMetric] }],
|
||||
{
|
||||
...range,
|
||||
raw: range,
|
||||
}
|
||||
);
|
||||
|
||||
expect(nodes.fields).toMatchObject([
|
||||
{ name: 'id', values: new ArrayVector(['db', 'app', 'lb']) },
|
||||
{ name: 'title', values: new ArrayVector(['db', 'app', 'lb']) },
|
||||
{ name: 'mainStat', values: new ArrayVector([1000, 2000, NaN]) },
|
||||
{ name: 'secondaryStat', values: new ArrayVector([0.17, 0.33, NaN]) },
|
||||
{ name: 'arc__success', values: new ArrayVector([0, 0, 1]) },
|
||||
{ name: 'arc__failed', values: new ArrayVector([1, 1, 0]) },
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
const singleSpanResponse = new MutableDataFrame({
|
||||
@@ -152,3 +177,16 @@ const failedPromMetric = new MutableDataFrame({
|
||||
{ name: 'Value #traces_service_graph_request_failed_total', values: [2, 15] },
|
||||
],
|
||||
});
|
||||
|
||||
const invalidFailedPromMetric = new MutableDataFrame({
|
||||
refId: 'traces_service_graph_request_failed_total',
|
||||
fields: [
|
||||
{ name: 'Time', values: [1628169788000, 1628169788000] },
|
||||
{ name: 'client', values: ['app', 'lb'] },
|
||||
{ name: 'instance', values: ['127.0.0.1:12345', '127.0.0.1:12345'] },
|
||||
{ name: 'job', values: ['local_scrape', 'local_scrape'] },
|
||||
{ name: 'server', values: ['db', 'app'] },
|
||||
{ name: 'tempo_config', values: ['default', 'default'] },
|
||||
{ name: 'Value #traces_service_graph_request_failed_total', values: [20, 40] },
|
||||
],
|
||||
});
|
||||
|
||||
@@ -303,8 +303,8 @@ function convertToDataFrames(
|
||||
// any requests itself.
|
||||
[Fields.mainStat]: node.total ? (node.seconds! / node.total) * 1000 : Number.NaN, // Average response time
|
||||
[Fields.secondaryStat]: node.total ? Math.round((node.total / (rangeMs / 1000)) * 100) / 100 : Number.NaN, // Request per second (to 2 decimals)
|
||||
[Fields.arc + 'success']: node.total ? (node.total - (node.failed || 0)) / node.total : 1,
|
||||
[Fields.arc + 'failed']: node.total ? (node.failed || 0) / node.total : 0,
|
||||
[Fields.arc + 'success']: node.total ? (node.total - Math.min(node.failed || 0, node.total)) / node.total : 1,
|
||||
[Fields.arc + 'failed']: node.total ? Math.min(node.failed || 0, node.total) / node.total : 0,
|
||||
});
|
||||
}
|
||||
for (const edgeId of Object.keys(edgesMap)) {
|
||||
|
||||
@@ -91,7 +91,7 @@ export function getConfig(opts: BarsOptions, theme: GrafanaTheme2) {
|
||||
// this expands the distr: 2 scale so that the indicies of each data[0] land at the proper justified positions
|
||||
const xRange: Scale.Range = (u, min, max) => {
|
||||
min = 0;
|
||||
max = u.data[0].length - 1;
|
||||
max = Math.max(1, u.data[0].length - 1);
|
||||
|
||||
let pctOffset = 0;
|
||||
|
||||
@@ -101,13 +101,17 @@ export function getConfig(opts: BarsOptions, theme: GrafanaTheme2) {
|
||||
});
|
||||
|
||||
// expand scale range by equal amounts on both ends
|
||||
let rn = max - min; // TODO: clamp to 1?
|
||||
let rn = max - min;
|
||||
|
||||
let upScale = 1 / (1 - pctOffset * 2);
|
||||
let offset = (upScale * rn - rn) / 2;
|
||||
if (pctOffset === 0.5) {
|
||||
min -= rn;
|
||||
} else {
|
||||
let upScale = 1 / (1 - pctOffset * 2);
|
||||
let offset = (upScale * rn - rn) / 2;
|
||||
|
||||
min -= offset;
|
||||
max += offset;
|
||||
min -= offset;
|
||||
max += offset;
|
||||
}
|
||||
|
||||
return [min, max];
|
||||
};
|
||||
|
||||
@@ -15,7 +15,15 @@ import {
|
||||
getFieldSeriesColor,
|
||||
GrafanaTheme2,
|
||||
} from '@grafana/data';
|
||||
import { Themeable2, UPlotConfigBuilder, UPlotChart, VizLayout, PlotLegend } from '@grafana/ui';
|
||||
import {
|
||||
Themeable2,
|
||||
UPlotConfigBuilder,
|
||||
UPlotChart,
|
||||
VizLayout,
|
||||
PlotLegend,
|
||||
measureText,
|
||||
UPLOT_AXIS_FONT_SIZE,
|
||||
} from '@grafana/ui';
|
||||
|
||||
import {
|
||||
histogramBucketSizes,
|
||||
@@ -119,7 +127,20 @@ const prepConfig = (frame: DataFrame, theme: GrafanaTheme2) => {
|
||||
placement: AxisPlacement.Bottom,
|
||||
incrs: histogramBucketSizes,
|
||||
splits: xSplits,
|
||||
values: (u: uPlot, vals: any[]) => vals.map(xAxisFormatter),
|
||||
values: (u: uPlot, splits: any[]) => {
|
||||
const tickLabels = splits.map(xAxisFormatter);
|
||||
|
||||
const maxWidth = tickLabels.reduce(
|
||||
(curMax, label) => Math.max(measureText(label, UPLOT_AXIS_FONT_SIZE).width, curMax),
|
||||
0
|
||||
);
|
||||
|
||||
const labelSpacing = 10;
|
||||
const maxCount = u.bbox.width / ((maxWidth + labelSpacing) * devicePixelRatio);
|
||||
const keepMod = Math.ceil(tickLabels.length / maxCount);
|
||||
|
||||
return tickLabels.map((label, i) => (i % keepMod === 0 ? label : null));
|
||||
},
|
||||
//incrs: () => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((mult) => mult * bucketSize),
|
||||
//splits: config.xSplits,
|
||||
//values: config.xValues,
|
||||
|
||||
@@ -110,7 +110,7 @@ RUN rm dockerize-linux-amd64-v${DOCKERIZE_VERSION}.tar.gz
|
||||
# Use old Debian (this has support into 2022) in order to ensure binary compatibility with older glibc's.
|
||||
FROM debian:stretch-20210208
|
||||
|
||||
ENV GOVERSION=1.17.6 \
|
||||
ENV GOVERSION=1.17.7 \
|
||||
PATH=/usr/local/go/bin:$PATH \
|
||||
GOPATH=/go \
|
||||
NODEVERSION=16.13.0-1nodesource1 \
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
load(
|
||||
'scripts/drone/steps/lib.star',
|
||||
'initialize_step',
|
||||
'download_grabpl_step',
|
||||
'lint_frontend_step',
|
||||
'codespell_step',
|
||||
'shellcheck_step',
|
||||
'build_frontend_step',
|
||||
'test_frontend_step',
|
||||
'build_storybook_step',
|
||||
'build_frontend_docs_step',
|
||||
'build_docs_website_step',
|
||||
)
|
||||
|
||||
load(
|
||||
'scripts/drone/services/services.star',
|
||||
'integration_test_services',
|
||||
'ldap_service',
|
||||
)
|
||||
|
||||
load(
|
||||
'scripts/drone/utils/utils.star',
|
||||
'pipeline',
|
||||
)
|
||||
|
||||
ver_mode = 'pr'
|
||||
|
||||
def docs_pipelines(edition):
|
||||
steps = [download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode)
|
||||
steps.extend([
|
||||
build_frontend_step(edition=edition, ver_mode=ver_mode),
|
||||
])
|
||||
|
||||
# Insert remaining steps
|
||||
steps.extend([
|
||||
build_frontend_docs_step(edition=edition),
|
||||
build_docs_website_step(),
|
||||
])
|
||||
|
||||
trigger = {
|
||||
'event': [
|
||||
'pull_request',
|
||||
],
|
||||
'paths': {
|
||||
'include': [
|
||||
'docs/**',
|
||||
'packages/**',
|
||||
],
|
||||
},
|
||||
}
|
||||
return [
|
||||
pipeline(
|
||||
name='pr-docs', edition=edition, trigger=trigger, services=[], steps=steps,
|
||||
),
|
||||
]
|
||||
@@ -20,6 +20,7 @@ load(
|
||||
'build_frontend_docs_step',
|
||||
'copy_packages_for_docker_step',
|
||||
'build_docker_images_step',
|
||||
'publish_images_step',
|
||||
'postgres_integration_tests_step',
|
||||
'mysql_integration_tests_step',
|
||||
'redis_integration_tests_step',
|
||||
@@ -107,8 +108,10 @@ def get_steps(edition, is_downstream=False):
|
||||
frontend_metrics_step(edition=edition),
|
||||
build_frontend_docs_step(edition=edition),
|
||||
copy_packages_for_docker_step(),
|
||||
build_docker_images_step(edition=edition, ver_mode=ver_mode, publish=publish),
|
||||
build_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=publish),
|
||||
build_docker_images_step(edition=edition, ver_mode=ver_mode, publish=False),
|
||||
build_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=False),
|
||||
publish_images_step(edition=edition, ver_mode=ver_mode, mode='', docker_repo='grafana', ubuntu=False),
|
||||
publish_images_step(edition=edition, ver_mode=ver_mode, mode='', docker_repo='grafana-oss', ubuntu=True)
|
||||
])
|
||||
|
||||
if include_enterprise2:
|
||||
|
||||
@@ -17,8 +17,6 @@ load(
|
||||
'grafana_server_step',
|
||||
'e2e_tests_step',
|
||||
'build_storybook_step',
|
||||
'build_frontend_docs_step',
|
||||
'build_docs_website_step',
|
||||
'copy_packages_for_docker_step',
|
||||
'build_docker_images_step',
|
||||
'postgres_integration_tests_step',
|
||||
@@ -96,8 +94,6 @@ def pr_pipelines(edition):
|
||||
e2e_tests_step('various-suite', edition=edition),
|
||||
build_storybook_step(edition=edition, ver_mode=ver_mode),
|
||||
test_a11y_frontend_step(ver_mode=ver_mode, edition=edition),
|
||||
build_frontend_docs_step(edition=edition),
|
||||
build_docs_website_step(),
|
||||
copy_packages_for_docker_step(),
|
||||
build_docker_images_step(edition=edition, ver_mode=ver_mode, archs=['amd64',]),
|
||||
])
|
||||
@@ -112,7 +108,14 @@ def pr_pipelines(edition):
|
||||
])
|
||||
|
||||
trigger = {
|
||||
'event': ['pull_request',],
|
||||
'event': [
|
||||
'pull_request',
|
||||
],
|
||||
'paths': {
|
||||
'exclude': [
|
||||
'docs/**',
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
return [
|
||||
|
||||
@@ -21,7 +21,7 @@ load(
|
||||
'e2e_tests_step',
|
||||
'build_storybook_step',
|
||||
'copy_packages_for_docker_step',
|
||||
'package_docker_images_step',
|
||||
'build_docker_images_step',
|
||||
'postgres_integration_tests_step',
|
||||
'mysql_integration_tests_step',
|
||||
'redis_integration_tests_step',
|
||||
@@ -34,7 +34,8 @@ load(
|
||||
'store_packages_step',
|
||||
'upload_cdn_step',
|
||||
'validate_scuemata_step',
|
||||
'ensure_cuetsified_step'
|
||||
'ensure_cuetsified_step',
|
||||
'publish_images_step'
|
||||
)
|
||||
|
||||
load(
|
||||
@@ -113,27 +114,6 @@ def release_npm_packages_step():
|
||||
],
|
||||
}
|
||||
|
||||
def publish_images_step(edition, mode, docker_repo):
|
||||
if mode == 'security':
|
||||
mode = '--{} '.format(mode)
|
||||
else:
|
||||
mode = ''
|
||||
return {
|
||||
'name': 'publish-images-{}'.format(docker_repo),
|
||||
'image': 'google/cloud-sdk',
|
||||
'environment': {
|
||||
'GCP_KEY': from_secret('gcp_key'),
|
||||
'DOCKER_USER': from_secret('docker_username'),
|
||||
'DOCKER_PASSWORD': from_secret('docker_password'),
|
||||
},
|
||||
'commands': ['./bin/grabpl artifacts docker publish {}--version-tag ${{TAG}} --dockerhub-repo {} --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7'.format(mode, docker_repo)],
|
||||
'depends_on': ['fetch-images-{}'.format(edition)],
|
||||
'volumes': [{
|
||||
'name': 'docker',
|
||||
'path': '/var/run/docker.sock'
|
||||
}],
|
||||
}
|
||||
|
||||
def fetch_images_step(edition):
|
||||
return {
|
||||
'name': 'fetch-images-{}'.format(edition),
|
||||
@@ -155,10 +135,10 @@ def publish_image_steps(version, mode, docker_repo, additional_docker_repo=""):
|
||||
steps = [
|
||||
download_grabpl_step(),
|
||||
fetch_images_step(version),
|
||||
publish_images_step(version, mode, docker_repo),
|
||||
publish_images_step(version, 'release', mode, docker_repo),
|
||||
]
|
||||
if additional_docker_repo != "":
|
||||
steps.extend([publish_images_step(version, mode, additional_docker_repo)])
|
||||
steps.extend([publish_images_step(version, 'release', mode, additional_docker_repo)])
|
||||
|
||||
return steps
|
||||
|
||||
@@ -220,8 +200,8 @@ def get_steps(edition, ver_mode):
|
||||
build_steps.extend([
|
||||
package_step(edition=edition, ver_mode=ver_mode, include_enterprise2=include_enterprise2),
|
||||
copy_packages_for_docker_step(),
|
||||
package_docker_images_step(edition=edition, ver_mode=ver_mode, publish=should_publish),
|
||||
package_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=should_publish),
|
||||
build_docker_images_step(edition=edition, ver_mode=ver_mode, publish=True),
|
||||
build_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=True),
|
||||
grafana_server_step(edition=edition),
|
||||
])
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
load('scripts/drone/vault.star', 'from_secret', 'github_token', 'pull_secret', 'drone_token', 'prerelease_bucket')
|
||||
|
||||
grabpl_version = 'v2.8.7'
|
||||
grabpl_version = 'v2.9.4'
|
||||
build_image = 'grafana/build-container:1.4.9'
|
||||
publish_image = 'grafana/grafana-ci-deploy:1.3.1'
|
||||
grafana_docker_image = 'grafana/drone-grafana-docker:0.3.2'
|
||||
deploy_docker_image = 'us.gcr.io/kubernetes-dev/drone/plugins/deploy-image'
|
||||
alpine_image = 'alpine:3.15'
|
||||
curl_image = 'byrnedo/alpine-curl:0.1.8'
|
||||
@@ -64,12 +63,20 @@ def initialize_step(edition, platform, ver_mode, is_downstream=False, install_de
|
||||
if ver_mode == 'release':
|
||||
committish = '${DRONE_TAG}'
|
||||
source_commit = ' ${DRONE_TAG}'
|
||||
environment = {
|
||||
'GITHUB_TOKEN': from_secret(github_token),
|
||||
}
|
||||
token = "--github-token $${GITHUB_TOKEN}"
|
||||
elif ver_mode == 'release-branch':
|
||||
committish = '${DRONE_BRANCH}'
|
||||
environment = {}
|
||||
token = ""
|
||||
else:
|
||||
environment = {}
|
||||
if is_downstream:
|
||||
source_commit = ' $${SOURCE_COMMIT}'
|
||||
committish = '${DRONE_COMMIT}'
|
||||
token = ""
|
||||
steps = [
|
||||
identify_runner,
|
||||
clone_enterprise(committish),
|
||||
@@ -79,14 +86,12 @@ def initialize_step(edition, platform, ver_mode, is_downstream=False, install_de
|
||||
'depends_on': [
|
||||
'clone-enterprise',
|
||||
],
|
||||
'environment': {
|
||||
'GITHUB_TOKEN': from_secret(github_token),
|
||||
},
|
||||
'environment': environment,
|
||||
'commands': [
|
||||
'mv bin/grabpl /tmp/',
|
||||
'rmdir bin',
|
||||
'mv grafana-enterprise /tmp/',
|
||||
'/tmp/grabpl init-enterprise --github-token $${{GITHUB_TOKEN}} /tmp/grafana-enterprise{}'.format(source_commit),
|
||||
'/tmp/grabpl init-enterprise {} /tmp/grafana-enterprise{}'.format(token, source_commit),
|
||||
'mv /tmp/grafana-enterprise/deployment_tools_config.json deployment_tools_config.json',
|
||||
'mkdir bin',
|
||||
'mv /tmp/grabpl bin/'
|
||||
@@ -278,8 +283,10 @@ def store_storybook_step(edition, ver_mode):
|
||||
|
||||
|
||||
def upload_cdn_step(edition, ver_mode):
|
||||
src_dir = ''
|
||||
if ver_mode == "release":
|
||||
bucket = "$${PRERELEASE_BUCKET}/artifacts/static-assets"
|
||||
bucket = "$${PRERELEASE_BUCKET}"
|
||||
src_dir = " --src-dir artifacts/static-assets"
|
||||
else:
|
||||
bucket = "grafana-static-assets"
|
||||
|
||||
@@ -298,11 +305,11 @@ def upload_cdn_step(edition, ver_mode):
|
||||
'image': publish_image,
|
||||
'depends_on': deps,
|
||||
'environment': {
|
||||
'GCP_GRAFANA_UPLOAD_KEY': from_secret('gcp_key'),
|
||||
'GCP_KEY': from_secret('gcp_key'),
|
||||
'PRERELEASE_BUCKET': from_secret(prerelease_bucket)
|
||||
},
|
||||
'commands': [
|
||||
'./bin/grabpl upload-cdn --edition {} --bucket "{}"'.format(edition, bucket),
|
||||
'./bin/grabpl upload-cdn --edition {} --src-bucket "{}"{}'.format(edition, bucket, src_dir),
|
||||
],
|
||||
}
|
||||
|
||||
@@ -688,8 +695,11 @@ def copy_packages_for_docker_step():
|
||||
}
|
||||
|
||||
|
||||
def package_docker_images_step(edition, ver_mode, archs=None, ubuntu=False, publish=False):
|
||||
cmd = './bin/grabpl build-docker --edition {} --shouldSave'.format(edition)
|
||||
def build_docker_images_step(edition, ver_mode, archs=None, ubuntu=False, publish=False):
|
||||
cmd = './bin/grabpl build-docker --edition {}'.format(edition)
|
||||
if publish:
|
||||
cmd += ' --shouldSave'
|
||||
|
||||
ubuntu_sfx = ''
|
||||
if ubuntu:
|
||||
ubuntu_sfx = '-ubuntu'
|
||||
@@ -699,12 +709,10 @@ def package_docker_images_step(edition, ver_mode, archs=None, ubuntu=False, publ
|
||||
cmd += ' -archs {}'.format(','.join(archs))
|
||||
|
||||
return {
|
||||
'name': 'package-docker-images' + ubuntu_sfx,
|
||||
'name': 'build-docker-images' + ubuntu_sfx,
|
||||
'image': 'google/cloud-sdk',
|
||||
'depends_on': ['copy-packages-for-docker'],
|
||||
'commands': [
|
||||
'printenv GCP_KEY | base64 -d > /tmp/gcpkey.json',
|
||||
'gcloud auth activate-service-account --key-file=/tmp/gcpkey.json',
|
||||
cmd
|
||||
],
|
||||
'volumes': [{
|
||||
@@ -716,27 +724,34 @@ def package_docker_images_step(edition, ver_mode, archs=None, ubuntu=False, publ
|
||||
},
|
||||
}
|
||||
|
||||
def build_docker_images_step(edition, ver_mode, archs=None, ubuntu=False, publish=False):
|
||||
ubuntu_sfx = ''
|
||||
if ubuntu:
|
||||
ubuntu_sfx = '-ubuntu'
|
||||
def publish_images_step(edition, ver_mode, mode, docker_repo, ubuntu=False):
|
||||
if mode == 'security':
|
||||
mode = '--{} '.format(mode)
|
||||
else:
|
||||
mode = ''
|
||||
|
||||
settings = {
|
||||
'dry_run': not publish,
|
||||
'edition': edition,
|
||||
'ubuntu': ubuntu,
|
||||
}
|
||||
cmd = './bin/grabpl artifacts docker publish {}--dockerhub-repo {} --base alpine --base ubuntu --arch amd64 --arch arm64 --arch armv7'.format(mode, docker_repo)
|
||||
|
||||
if ver_mode == 'release':
|
||||
deps = ['fetch-images-{}'.format(edition)]
|
||||
cmd += ' --version-tag ${TAG}'
|
||||
else:
|
||||
deps = ['build-docker-images', 'build-docker-images-ubuntu']
|
||||
|
||||
if publish:
|
||||
settings['username'] = from_secret('docker_user')
|
||||
settings['password'] = from_secret('docker_password')
|
||||
if archs:
|
||||
settings['archs'] = ','.join(archs)
|
||||
return {
|
||||
'name': 'build-docker-images' + ubuntu_sfx,
|
||||
'image': grafana_docker_image,
|
||||
'depends_on': ['copy-packages-for-docker'],
|
||||
'settings': settings,
|
||||
'name': 'publish-images-{}'.format(docker_repo),
|
||||
'image': 'google/cloud-sdk',
|
||||
'environment': {
|
||||
'GCP_KEY': from_secret('gcp_key'),
|
||||
'DOCKER_USER': from_secret('docker_username'),
|
||||
'DOCKER_PASSWORD': from_secret('docker_password'),
|
||||
},
|
||||
'commands': [cmd],
|
||||
'depends_on': deps,
|
||||
'volumes': [{
|
||||
'name': 'docker',
|
||||
'path': '/var/run/docker.sock'
|
||||
}],
|
||||
}
|
||||
|
||||
|
||||
@@ -861,8 +876,6 @@ def upload_packages_step(edition, ver_mode, is_downstream=False):
|
||||
if ver_mode == 'main' and edition in ('enterprise', 'enterprise2') and not is_downstream:
|
||||
return None
|
||||
|
||||
packages_bucket = ' --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads' + enterprise2_suffix(edition)
|
||||
|
||||
if ver_mode == 'release':
|
||||
packages_bucket = '$${{PRERELEASE_BUCKET}}/artifacts/downloads{}'.format(enterprise2_suffix(edition))
|
||||
cmd = './bin/grabpl upload-packages --edition {} --packages-bucket {}'.format(edition, packages_bucket)
|
||||
@@ -884,7 +897,7 @@ def upload_packages_step(edition, ver_mode, is_downstream=False):
|
||||
'image': publish_image,
|
||||
'depends_on': deps,
|
||||
'environment': {
|
||||
'GCP_GRAFANA_UPLOAD_KEY': from_secret('gcp_key'),
|
||||
'GCP_KEY': from_secret('gcp_key'),
|
||||
'PRERELEASE_BUCKET': from_secret('prerelease_bucket'),
|
||||
},
|
||||
'commands': [cmd, ],
|
||||
@@ -921,7 +934,6 @@ def store_packages_step(edition, ver_mode, is_downstream=False):
|
||||
'GPG_KEY_PASSWORD': from_secret('gpg_key_password'),
|
||||
},
|
||||
'commands': [
|
||||
'printenv GCP_KEY | base64 -d > /tmp/gcpkey.json',
|
||||
cmd,
|
||||
],
|
||||
}
|
||||
@@ -960,6 +972,8 @@ def get_windows_steps(edition, ver_mode, is_downstream=False):
|
||||
dir = 'release'
|
||||
else:
|
||||
dir = 'main'
|
||||
bucket = 'grafana-downloads'
|
||||
bucket_part = ' --packages-bucket {}'.format(bucket)
|
||||
if not is_downstream:
|
||||
build_no = 'DRONE_BUILD_NUMBER'
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user