diff --git a/.drone.yml b/.drone.yml index 279b0530d10..4e73d87b957 100644 --- a/.drone.yml +++ b/.drone.yml @@ -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.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -96,6 +96,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: [] kind: pipeline @@ -109,7 +112,7 @@ services: [] steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -305,6 +308,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: [] kind: pipeline @@ -331,7 +337,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -382,6 +388,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: [] kind: pipeline @@ -408,7 +417,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -674,7 +683,7 @@ steps: - commands: - printenv GCP_KEY | base64 -d > /tmp/gcpkey.json - gcloud auth activate-service-account --key-file=/tmp/gcpkey.json - - gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://grafana-storybook/canary + - gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://$${PRERELEASE_BUCKET}/artifacts/storybook/canary depends_on: - build-storybook - end-to-end-tests-dashboards-suite @@ -684,6 +693,8 @@ steps: environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: publish-storybook - commands: @@ -759,7 +770,7 @@ steps: image: grafana/build-container:1.4.8 name: release-canary-npm-packages - commands: - - ./bin/grabpl upload-packages --edition oss --packages-bucket grafana-downloads + - ./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 @@ -768,15 +779,19 @@ steps: environment: GCP_GRAFANA_UPLOAD_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 --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets trigger: @@ -787,6 +802,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - build-main @@ -804,7 +822,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/windows/grabpl.exe -OutFile grabpl.exe image: grafana/ci-wix:0.1.1 name: initialize @@ -818,13 +836,15 @@ steps: - cp C:\App\nssm-2.24.zip . - .\grabpl.exe windows-installer --edition oss --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/ + - gsutil cp $$fname gs://%PRERELEASE_BUCKET%/artifacts/downloads/oss/main/ + - gsutil cp "$$fname.sha256" gs://%PRERELEASE_BUCKET%/artifacts/downloads/oss/main/ depends_on: - initialize environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/ci-wix:0.1.1 name: build-windows-installer trigger: @@ -835,6 +855,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: [] kind: pipeline @@ -878,7 +901,7 @@ services: [] steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -917,6 +940,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - build-main @@ -971,7 +997,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -1218,30 +1244,34 @@ steps: - package image: grafana/build-container:1.4.8 name: copy-packages-for-docker -- depends_on: +- 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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images - settings: - dry_run: false - edition: oss - password: - from_secret: docker_password - ubuntu: false - username: - from_secret: docker_user -- depends_on: + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images-ubuntu - settings: - dry_run: false - edition: oss - password: - from_secret: docker_password - ubuntu: true - username: - from_secret: docker_user + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-docker-images-ubuntu + volumes: + - name: docker + path: /var/run/docker.sock - commands: - yarn storybook:build - ./bin/grabpl verify-storybook @@ -1252,16 +1282,18 @@ steps: image: grafana/build-container:1.4.8 name: build-storybook - commands: - - ./bin/grabpl upload-cdn --edition oss --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition oss --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server environment: GCP_GRAFANA_UPLOAD_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 grafana-downloads + - ./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 @@ -1270,13 +1302,15 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages - commands: - printenv GCP_KEY | base64 -d > /tmp/gcpkey.json - gcloud auth activate-service-account --key-file=/tmp/gcpkey.json - - gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://grafana-storybook/latest - - gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://grafana-storybook/${DRONE_TAG} + - gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://$${PRERELEASE_BUCKET}/artifacts/storybook/latest + - gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://$${PRERELEASE_BUCKET}/artifacts/storybook/${DRONE_TAG} depends_on: - build-storybook - end-to-end-tests-dashboards-suite @@ -1286,19 +1320,27 @@ steps: environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: publish-storybook - commands: - - ./scripts/build/release-packages.sh ${DRONE_TAG} + - ./scripts/build/build-npm-packages.sh ${DRONE_TAG} depends_on: - publish-storybook - environment: - GITHUB_PACKAGE_TOKEN: - from_secret: github_package_token - NPM_TOKEN: - from_secret: npm_token image: grafana/build-container:1.4.8 - name: release-npm-packages + name: build-npm-packages +- commands: + - ./scripts/build/store-npm-packages.sh ${DRONE_TAG} + depends_on: + - build-npm-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: ref: - refs/tags/v* @@ -1306,6 +1348,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - oss-build-release @@ -1323,7 +1368,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/windows/grabpl.exe -OutFile grabpl.exe image: grafana/ci-wix:0.1.1 name: initialize @@ -1337,13 +1382,15 @@ steps: - cp C:\App\nssm-2.24.zip . - .\grabpl.exe windows-installer --edition oss ${DRONE_TAG} - $$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0] - - gsutil cp $$fname gs://grafana-downloads/oss/release/ - - gsutil cp "$$fname.sha256" gs://grafana-downloads/oss/release/ + - gsutil cp $$fname gs://%PRERELEASE_BUCKET%/artifacts/downloads/oss/release/ + - gsutil cp "$$fname.sha256" gs://%PRERELEASE_BUCKET%/artifacts/downloads/oss/release/ depends_on: - initialize environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/ci-wix:0.1.1 name: build-windows-installer trigger: @@ -1353,6 +1400,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- clone: disable: true @@ -1389,7 +1439,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -1689,30 +1739,34 @@ steps: - package image: grafana/build-container:1.4.8 name: copy-packages-for-docker -- depends_on: +- 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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images - settings: - dry_run: false - edition: enterprise - password: - from_secret: docker_password - ubuntu: false - username: - from_secret: docker_user -- depends_on: + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images-ubuntu - settings: - dry_run: false - edition: enterprise - password: - from_secret: docker_password - ubuntu: true - username: - from_secret: docker_user + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-docker-images-ubuntu + volumes: + - name: docker + path: /var/run/docker.sock - commands: - dockerize -wait tcp://redis:6379/0 -timeout 120s - ./bin/grabpl integration-tests @@ -1732,16 +1786,18 @@ steps: image: grafana/build-container:1.4.8 name: memcached-integration-tests - commands: - - ./bin/grabpl upload-cdn --edition enterprise --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition enterprise --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server environment: GCP_GRAFANA_UPLOAD_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 grafana-downloads + - ./bin/grabpl upload-packages --edition enterprise --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite @@ -1752,6 +1808,8 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages - commands: @@ -1832,16 +1890,18 @@ steps: - name: cypress_cache path: /root/.cache/Cypress - commands: - - ./bin/grabpl upload-cdn --edition enterprise2 --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition enterprise2 --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server-enterprise2 environment: GCP_GRAFANA_UPLOAD_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 + - ./bin/grabpl upload-packages --edition enterprise2 --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads-enterprise2 depends_on: - end-to-end-tests-dashboards-suite-enterprise2 - end-to-end-tests-panels-suite-enterprise2 @@ -1852,6 +1912,8 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages-enterprise2 trigger: @@ -1861,6 +1923,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- clone: disable: true @@ -1882,7 +1947,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/windows/grabpl.exe -OutFile grabpl.exe - git clone "https://$$env:GITHUB_TOKEN@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise @@ -1913,13 +1978,15 @@ steps: - cp C:\App\nssm-2.24.zip . - .\grabpl.exe windows-installer --edition enterprise ${DRONE_TAG} - $$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0] - - gsutil cp $$fname gs://grafana-downloads/enterprise/release/ - - gsutil cp "$$fname.sha256" gs://grafana-downloads/enterprise/release/ + - gsutil cp $$fname gs://%PRERELEASE_BUCKET%/artifacts/downloads/enterprise/release/ + - gsutil cp "$$fname.sha256" gs://%PRERELEASE_BUCKET%/artifacts/downloads/enterprise/release/ depends_on: - initialize environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/ci-wix:0.1.1 name: build-windows-installer trigger: @@ -1929,6 +1996,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - oss-build-release @@ -1936,81 +2006,6 @@ depends_on: - enterprise-build-release - enterprise-windows-release kind: pipeline -name: 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.7.2/grabpl - - chmod +x bin/grabpl - image: byrnedo/alpine-curl:0.1.8 - name: grabpl -- commands: - - echo $DRONE_RUNNER_NAME - image: alpine:3.14.3 - name: identify-runner -- commands: - - make gen-go - - ./bin/grabpl verify-version ${DRONE_TAG} - image: grafana/build-container:1.4.8 - name: initialize -- commands: - - printenv GCP_KEY | base64 -d > /tmp/gcpkey.json - - ./bin/grabpl publish-packages --edition oss --gcp-key /tmp/gcpkey.json ${DRONE_TAG} - depends_on: - - initialize - 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: publish-packages-oss -- commands: - - printenv GCP_KEY | base64 -d > /tmp/gcpkey.json - - ./bin/grabpl publish-packages --edition enterprise --gcp-key /tmp/gcpkey.json - ${DRONE_TAG} - depends_on: - - initialize - 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: publish-packages-enterprise -trigger: - ref: - - refs/tags/v* -type: docker -volumes: -- name: cypress_cache - temp: {} ---- -depends_on: -- oss-build-release -- oss-windows-release -- enterprise-build-release -- enterprise-windows-release -- publish-release -kind: pipeline name: notify-release platform: arch: amd64 @@ -2058,7 +2053,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -2305,22 +2300,34 @@ steps: - package image: grafana/build-container:1.4.8 name: copy-packages-for-docker -- depends_on: +- 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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images - settings: - dry_run: true - edition: oss - ubuntu: false -- depends_on: + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images-ubuntu - settings: - dry_run: true - edition: oss - ubuntu: true + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-docker-images-ubuntu + volumes: + - name: docker + path: /var/run/docker.sock - commands: - yarn storybook:build - ./bin/grabpl verify-storybook @@ -2331,12 +2338,14 @@ steps: image: grafana/build-container:1.4.8 name: build-storybook - commands: - - ./bin/grabpl upload-cdn --edition oss --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition oss --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets - commands: @@ -2349,6 +2358,8 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages - commands: @@ -2362,18 +2373,10 @@ steps: environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: publish-storybook -- commands: [] - depends_on: - - publish-storybook - environment: - GITHUB_PACKAGE_TOKEN: - from_secret: github_package_token - NPM_TOKEN: - from_secret: npm_token - image: grafana/build-container:1.4.8 - name: release-npm-packages trigger: event: - custom @@ -2381,6 +2384,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - oss-build-test-release @@ -2398,7 +2404,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/windows/grabpl.exe -OutFile grabpl.exe image: grafana/ci-wix:0.1.1 name: initialize @@ -2420,6 +2426,8 @@ steps: environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/ci-wix:0.1.1 name: build-windows-installer trigger: @@ -2429,6 +2437,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- clone: disable: true @@ -2465,7 +2476,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -2765,22 +2776,34 @@ steps: - package image: grafana/build-container:1.4.8 name: copy-packages-for-docker -- depends_on: +- 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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images - settings: - dry_run: true - edition: enterprise - ubuntu: false -- depends_on: + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images-ubuntu - settings: - dry_run: true - edition: enterprise - ubuntu: true + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-docker-images-ubuntu + volumes: + - name: docker + path: /var/run/docker.sock - commands: - dockerize -wait tcp://redis:6379/0 -timeout 120s - ./bin/grabpl integration-tests @@ -2800,12 +2823,14 @@ steps: image: grafana/build-container:1.4.8 name: memcached-integration-tests - commands: - - ./bin/grabpl upload-cdn --edition enterprise --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition enterprise --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-cdn-assets - commands: @@ -2820,6 +2845,8 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages - commands: @@ -2900,12 +2927,14 @@ steps: - name: cypress_cache path: /root/.cache/Cypress - commands: - - ./bin/grabpl upload-cdn --edition enterprise2 --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition enterprise2 --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server-enterprise2 environment: GCP_GRAFANA_UPLOAD_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: @@ -2920,6 +2949,8 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages-enterprise2 trigger: @@ -2929,6 +2960,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- clone: disable: true @@ -2950,7 +2984,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/windows/grabpl.exe -OutFile grabpl.exe - git clone "https://$$env:GITHUB_TOKEN@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise @@ -2989,6 +3023,8 @@ steps: environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/ci-wix:0.1.1 name: build-windows-installer trigger: @@ -2998,6 +3034,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - oss-build-test-release @@ -3015,7 +3054,7 @@ services: [] steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -3077,6 +3116,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - oss-build-test-release @@ -3132,7 +3174,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -3376,22 +3418,34 @@ steps: - package image: grafana/build-container:1.4.8 name: copy-packages-for-docker -- depends_on: +- 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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images - settings: - dry_run: true - edition: oss - ubuntu: false -- depends_on: + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images-ubuntu - settings: - dry_run: true - edition: oss - ubuntu: true + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-docker-images-ubuntu + volumes: + - name: docker + path: /var/run/docker.sock - commands: - yarn storybook:build - ./bin/grabpl verify-storybook @@ -3402,16 +3456,18 @@ steps: image: grafana/build-container:1.4.8 name: build-storybook - commands: - - ./bin/grabpl upload-cdn --edition oss --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition oss --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server environment: GCP_GRAFANA_UPLOAD_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 grafana-downloads + - ./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 @@ -3420,6 +3476,8 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages trigger: @@ -3429,6 +3487,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - oss-build-release-branch @@ -3446,7 +3507,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/windows/grabpl.exe -OutFile grabpl.exe image: grafana/ci-wix:0.1.1 name: initialize @@ -3463,6 +3524,8 @@ steps: environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/ci-wix:0.1.1 name: build-windows-installer trigger: @@ -3472,6 +3535,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- clone: disable: true @@ -3508,7 +3574,7 @@ services: steps: - commands: - mkdir -p bin - - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/grabpl + - curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/grabpl - chmod +x bin/grabpl image: byrnedo/alpine-curl:0.1.8 name: grabpl @@ -3803,22 +3869,34 @@ steps: - package image: grafana/build-container:1.4.8 name: copy-packages-for-docker -- depends_on: +- 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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images - settings: - dry_run: true - edition: enterprise - ubuntu: false -- depends_on: + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-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 - image: grafana/drone-grafana-docker:0.3.2 - name: build-docker-images-ubuntu - settings: - dry_run: true - edition: enterprise - ubuntu: true + environment: + GCP_KEY: + from_secret: gcp_key + image: google/cloud-sdk + name: package-docker-images-ubuntu + volumes: + - name: docker + path: /var/run/docker.sock - commands: - yarn storybook:build - ./bin/grabpl verify-storybook @@ -3847,16 +3925,18 @@ steps: image: grafana/build-container:1.4.8 name: memcached-integration-tests - commands: - - ./bin/grabpl upload-cdn --edition enterprise --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition enterprise --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server environment: GCP_GRAFANA_UPLOAD_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 grafana-downloads + - ./bin/grabpl upload-packages --edition enterprise --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads depends_on: - end-to-end-tests-dashboards-suite - end-to-end-tests-panels-suite @@ -3867,6 +3947,8 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages - commands: @@ -3947,16 +4029,18 @@ steps: - name: cypress_cache path: /root/.cache/Cypress - commands: - - ./bin/grabpl upload-cdn --edition enterprise2 --bucket "grafana-static-assets" + - ./bin/grabpl upload-cdn --edition enterprise2 --bucket "$${PRERELEASE_BUCKET}/artifacts/static-assets" depends_on: - end-to-end-tests-server-enterprise2 environment: GCP_GRAFANA_UPLOAD_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 + - ./bin/grabpl upload-packages --edition enterprise2 --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads-enterprise2 depends_on: - end-to-end-tests-dashboards-suite-enterprise2 - end-to-end-tests-panels-suite-enterprise2 @@ -3967,6 +4051,8 @@ steps: environment: GCP_GRAFANA_UPLOAD_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/grafana-ci-deploy:1.3.1 name: upload-packages-enterprise2 trigger: @@ -3976,6 +4062,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- clone: disable: true @@ -3997,7 +4086,7 @@ steps: name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.2/windows/grabpl.exe + - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.7.4/windows/grabpl.exe -OutFile grabpl.exe - git clone "https://$$env:GITHUB_TOKEN@github.com/grafana/grafana-enterprise.git" - cd grafana-enterprise @@ -4031,6 +4120,8 @@ steps: environment: GCP_KEY: from_secret: gcp_key + PRERELEASE_BUCKET: + from_secret: prerelease_bucket image: grafana/ci-wix:0.1.1 name: build-windows-installer trigger: @@ -4040,6 +4131,9 @@ type: docker volumes: - name: cypress_cache temp: {} +- host: + path: /var/run/docker.sock + name: docker --- depends_on: - oss-build-release-branch @@ -4201,7 +4295,13 @@ get: kind: secret name: drone_token --- +get: + name: bucket + path: infra/data/ci/grafana/prerelease +kind: secret +name: prerelease_bucket +--- kind: signature -hmac: e7679bfda524f6300d4fd0dbff9bfece564f0dc0b2aa995301ebf7c8f2fc00ea +hmac: 9ad9988b102790652afdf8e76325c6c57367c4eaa0d6590ff7a4701fa5840b8b ... diff --git a/Makefile b/Makefile index 00510a14aa4..83d71031f5a 100644 --- a/Makefile +++ b/Makefile @@ -158,7 +158,7 @@ gen-ts: # you modify starlark files. drone: $(DRONE) $(DRONE) starlark --format - $(DRONE) lint .drone.yml + $(DRONE) lint .drone.yml --trusted $(DRONE) --server https://drone.grafana.net sign --save grafana/grafana help: ## Display this help. diff --git a/scripts/build/build-npm-packages.sh b/scripts/build/build-npm-packages.sh new file mode 100755 index 00000000000..8321916021c --- /dev/null +++ b/scripts/build/build-npm-packages.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +# lerna bootstrap might have created yarn.lock +git checkout . + +echo 'Building packages' +yarn packages:build \ No newline at end of file diff --git a/scripts/build/release-packages.sh b/scripts/build/release-npm-packages.sh similarity index 97% rename from scripts/build/release-packages.sh rename to scripts/build/release-npm-packages.sh index db43714e526..fe15c924166 100755 --- a/scripts/build/release-packages.sh +++ b/scripts/build/release-npm-packages.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash PACKAGES=("@grafana/ui" "@grafana/data" "@grafana/toolkit" "@grafana/runtime" "@grafana/e2e" "@grafana/e2e-selectors" "@grafana/schema") + GRAFANA_TAG=${1:-} RELEASE_CHANNEL="latest" @@ -39,9 +40,6 @@ fi # Publish to NPM registry echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> ~/.npmrc -echo $'\nBuilding packages' -yarn packages:build - echo $'\nPublishing packages to NPM registry' yarn packages:${SCRIPT} diff --git a/scripts/build/retrieve-npm-packages.sh b/scripts/build/retrieve-npm-packages.sh new file mode 100755 index 00000000000..17660870b4c --- /dev/null +++ b/scripts/build/retrieve-npm-packages.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e + +GRAFANA_TAG=${1:-} + +if echo "$GRAFANA_TAG" | grep -q "^v"; then + _grafana_version=$(echo "${GRAFANA_TAG}" | cut -d "v" -f 2) +else + echo "Provided tag is not a version tag, skipping packages release..." + exit +fi + +echo "Retrieving prerelease NPM artifacts" +ZIPFILE=grafana-npm-${_grafana_version}.tgz + +echo "${GCP_KEY}" | base64 -d > credentials.json +gcloud auth activate-service-account --key-file=credentials.json +gsutil cp "gs://${PRERELEASE_BUCKET}/artifacts/npm/$ZIPFILE" "$ZIPFILE" +tar -xzf "$ZIPFILE" diff --git a/scripts/build/store-npm-packages.sh b/scripts/build/store-npm-packages.sh new file mode 100755 index 00000000000..baedce742da --- /dev/null +++ b/scripts/build/store-npm-packages.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e +GRAFANA_TAG=${1:-} + +if echo "$GRAFANA_TAG" | grep -q "^v"; then + _grafana_version=$(echo "${GRAFANA_TAG}" | cut -d "v" -f 2) +else + echo "Provided tag is not a version tag, skipping packages release..." + exit +fi + +echo "Storing NPM artifacts" +ZIPFILE=grafana-npm-${_grafana_version}.tgz +tar -czf "$ZIPFILE" packages/*/dist packages/*/compiled + +echo "${GCP_KEY}" | base64 -d > credentials.json +gcloud auth activate-service-account --key-file=credentials.json +gsutil cp "$ZIPFILE" "gs://${PRERELEASE_BUCKET}/artifacts/npm/$ZIPFILE" +echo "NPM artifacts successfully pushed to GCS." \ No newline at end of file diff --git a/scripts/drone/pipelines/release.star b/scripts/drone/pipelines/release.star index 6ddd40272ac..c345f228bfc 100644 --- a/scripts/drone/pipelines/release.star +++ b/scripts/drone/pipelines/release.star @@ -22,7 +22,7 @@ load( 'e2e_tests_step', 'build_storybook_step', 'copy_packages_for_docker_step', - 'build_docker_images_step', + 'package_docker_images_step', 'postgres_integration_tests_step', 'mysql_integration_tests_step', 'redis_integration_tests_step', @@ -51,34 +51,75 @@ load( 'failure_template', 'drone_change_template', ) +load('scripts/drone/vault.star', 'from_secret', 'github_token', 'pull_secret', 'drone_token', 'prerelease_bucket') -def release_npm_packages_step(edition, ver_mode): - if edition == 'enterprise': +def build_npm_packages_step(edition, ver_mode): + if edition == 'enterprise' or ver_mode != 'release': return None - if ver_mode == 'release': - commands = ['./scripts/build/release-packages.sh ${DRONE_TAG}'] - else: - commands = [] - return { - 'name': 'release-npm-packages', + 'name': 'build-npm-packages', 'image': build_image, 'depends_on': [ # Has to run after publish-storybook since this step cleans the files publish-storybook depends on 'publish-storybook', ], - 'environment': { - 'NPM_TOKEN': { - 'from_secret': 'npm_token', - }, - 'GITHUB_PACKAGE_TOKEN': { - 'from_secret': 'github_package_token', - }, - }, - 'commands': commands, + 'commands': ['./scripts/build/build-npm-packages.sh ${DRONE_TAG}'], } +def store_npm_packages_step(edition, ver_mode): + if edition == 'enterprise' or ver_mode != 'release': + return None + + return { + 'name': 'store-npm-packages', + 'image': publish_image, + 'depends_on': [ + 'build-npm-packages', + ], + 'environment': { + 'GCP_KEY': from_secret('gcp_key'), + 'PRERELEASE_BUCKET': from_secret(prerelease_bucket) + }, + 'commands': ['./scripts/build/store-npm-packages.sh ${DRONE_TAG}'], + } + +def retrieve_npm_packages_step(edition, ver_mode): + if edition == 'enterprise' or ver_mode != 'release': + return None + + return { + 'name': 'retrieve-npm-packages', + 'image': publish_image, + 'depends_on': [ + # Has to run after publish-storybook since this step cleans the files publish-storybook depends on + 'publish-storybook', + ], + 'environment': { + 'GCP_KEY': from_secret('gcp_key'), + 'PRERELEASE_BUCKET': from_secret(prerelease_bucket) + }, + 'commands': ['./scripts/build/retrieve-npm-packages.sh ${DRONE_TAG}'], + } + +def release_npm_packages_step(edition, ver_mode): + if edition == 'enterprise' or ver_mode != 'release': + return None + + return { + 'name': 'release-npm-packages', + 'image': build_image, + 'depends_on': [ + 'retrieve-npm-packages', + ], + 'environment': { + 'NPM_TOKEN': from_secret('npm_token'), + 'GITHUB_PACKAGE_TOKEN': from_secret('github_package_token'), + }, + 'commands': ['./scripts/build/release-npm-packages.sh ${DRONE_TAG}'], + } + + def get_steps(edition, ver_mode): build_steps = [] package_steps = [] @@ -124,8 +165,8 @@ def get_steps(edition, ver_mode): e2e_tests_step('panels-suite', edition=edition, tries=3), e2e_tests_step('various-suite', edition=edition, tries=3), copy_packages_for_docker_step(), - build_docker_images_step(edition=edition, ver_mode=ver_mode, publish=should_publish), - build_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=should_publish), + 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_storybook = build_storybook_step(edition=edition, ver_mode=ver_mode) @@ -140,11 +181,13 @@ def get_steps(edition, ver_mode): publish_steps.append(upload_packages_step(edition=edition, ver_mode=ver_mode)) if should_publish: publish_step = publish_storybook_step(edition=edition, ver_mode=ver_mode) - release_npm_step = release_npm_packages_step(edition=edition, ver_mode=ver_mode) + build_npm_step = build_npm_packages_step(edition=edition, ver_mode=ver_mode) + store_npm_step = store_npm_packages_step(edition=edition, ver_mode=ver_mode) if publish_step: publish_steps.append(publish_step) - if release_npm_step: - publish_steps.append(release_npm_step) + if build_npm_step and store_npm_step: + publish_steps.append(build_npm_step) + publish_steps.append(store_npm_step) windows_package_steps = get_windows_steps(edition=edition, ver_mode=ver_mode) if include_enterprise2: @@ -226,7 +269,6 @@ def release_pipelines(ver_mode='release', trigger=None): steps=[download_grabpl_step()] + initialize_step(edition='oss', platform='linux', ver_mode=ver_mode, install_deps=False) + steps, depends_on=[p['name'] for p in oss_pipelines + enterprise_pipelines], ) - pipelines.append(publish_pipeline) pipelines.append(notify_pipeline( name='notify-{}'.format(ver_mode), slack_channel='grafana-ci-notifications', trigger=dict(trigger, status = ['failure']), diff --git a/scripts/drone/steps/lib.star b/scripts/drone/steps/lib.star index 7b87b1d0df7..1a65aabb921 100644 --- a/scripts/drone/steps/lib.star +++ b/scripts/drone/steps/lib.star @@ -1,6 +1,6 @@ -load('scripts/drone/vault.star', 'from_secret', 'github_token', 'pull_secret', 'drone_token') +load('scripts/drone/vault.star', 'from_secret', 'github_token', 'pull_secret', 'drone_token', 'prerelease_bucket') -grabpl_version = '2.7.2' +grabpl_version = '2.7.4' build_image = 'grafana/build-container:1.4.8' publish_image = 'grafana/grafana-ci-deploy:1.3.1' grafana_docker_image = 'grafana/drone-grafana-docker:0.3.2' @@ -266,7 +266,7 @@ def publish_storybook_step(edition, ver_mode): 'printenv GCP_KEY | base64 -d > /tmp/gcpkey.json', 'gcloud auth activate-service-account --key-file=/tmp/gcpkey.json', ] + [ - 'gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://grafana-storybook/{}'.format( + 'gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://$${{PRERELEASE_BUCKET}}/artifacts/storybook/{}'.format( c) for c in channels ]) @@ -283,6 +283,7 @@ def publish_storybook_step(edition, ver_mode): ], 'environment': { 'GCP_KEY': from_secret('gcp_key'), + 'PRERELEASE_BUCKET': from_secret(prerelease_bucket) }, 'commands': commands, } @@ -297,9 +298,10 @@ def upload_cdn_step(edition): ], 'environment': { 'GCP_GRAFANA_UPLOAD_KEY': from_secret('gcp_key'), + 'PRERELEASE_BUCKET': from_secret(prerelease_bucket) }, 'commands': [ - './bin/grabpl upload-cdn --edition {} --bucket "grafana-static-assets"'.format(edition), + './bin/grabpl upload-cdn --edition {} --bucket "$${{PRERELEASE_BUCKET}}/artifacts/static-assets"'.format(edition), ], } @@ -725,6 +727,37 @@ def copy_packages_for_docker_step(): } +def package_docker_images_step(edition, ver_mode, archs=None, ubuntu=False, publish=False): + if ver_mode == 'test-release': + publish = False + + cmd = './bin/grabpl build-docker --edition {} --shouldSave'.format(edition) + ubuntu_sfx = '' + if ubuntu: + ubuntu_sfx = '-ubuntu' + cmd += ' --ubuntu' + + if archs: + cmd += ' -archs {}'.format(','.join(archs)) + + return { + 'name': 'package-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': [{ + 'name': 'docker', + 'path': '/var/run/docker.sock' + }], + 'environment': { + 'GCP_KEY': from_secret('gcp_key'), + }, + } + def build_docker_images_step(edition, ver_mode, archs=None, ubuntu=False, publish=False): if ver_mode == 'test-release': publish = False @@ -878,7 +911,7 @@ 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 grafana-downloads' + enterprise2_suffix(edition) + packages_bucket = ' --packages-bucket $${PRERELEASE_BUCKET}/artifacts/downloads' + enterprise2_suffix(edition) if ver_mode == 'test-release': cmd = './bin/grabpl upload-packages --edition {} '.format(edition) + \ @@ -903,6 +936,7 @@ def upload_packages_step(edition, ver_mode, is_downstream=False): 'depends_on': dependencies, 'environment': { 'GCP_GRAFANA_UPLOAD_KEY': from_secret('gcp_key'), + 'PRERELEASE_BUCKET': from_secret('prerelease_bucket'), }, 'commands': [cmd, ], } @@ -977,7 +1011,7 @@ def get_windows_steps(edition, ver_mode, is_downstream=False): 'release', 'test-release', 'release-branch', ): bucket_part = '' - bucket = 'grafana-downloads' + bucket = '%PRERELEASE_BUCKET%/artifacts/downloads' if ver_mode == 'release': ver_part = '${DRONE_TAG}' dir = 'release' @@ -1016,6 +1050,7 @@ def get_windows_steps(edition, ver_mode, is_downstream=False): 'image': wix_image, 'environment': { 'GCP_KEY': from_secret('gcp_key'), + 'PRERELEASE_BUCKET': from_secret(prerelease_bucket) }, 'commands': installer_commands, 'depends_on': [ diff --git a/scripts/drone/utils/utils.star b/scripts/drone/utils/utils.star index 65d1e7a4554..615a234ebcf 100644 --- a/scripts/drone/utils/utils.star +++ b/scripts/drone/utils/utils.star @@ -43,6 +43,11 @@ def pipeline( 'volumes': [{ 'name': 'cypress_cache', 'temp': {}, + },{ + 'name': 'docker', + 'host': { + 'path': '/var/run/docker.sock', + }, }], 'depends_on': depends_on, } diff --git a/scripts/drone/vault.star b/scripts/drone/vault.star index eb2a6f90cff..cddf0395e3b 100644 --- a/scripts/drone/vault.star +++ b/scripts/drone/vault.star @@ -1,6 +1,7 @@ pull_secret = 'dockerconfigjson' github_token = 'github_token' drone_token = 'drone_token' +prerelease_bucket = 'prerelease_bucket' def from_secret(secret): return { @@ -22,4 +23,5 @@ def secrets(): vault_secret(pull_secret, 'secret/data/common/gcr', '.dockerconfigjson'), vault_secret(github_token, 'infra/data/ci/github/grafanabot', 'pat'), vault_secret(drone_token, 'infra/data/ci/drone', 'machine-user-token'), + vault_secret(prerelease_bucket, 'infra/data/ci/grafana/prerelease', 'bucket'), ]