From e8afeb557950e0cd1f7d2324341eb00ab994da86 Mon Sep 17 00:00:00 2001 From: Timur Olzhabayev Date: Fri, 15 Dec 2023 11:53:29 +0100 Subject: [PATCH] [v10.2.x] Chore: Upgrade Go to 1.21.5 (#79560) Chore: Upgrade Go to 1.21.5 (#79329) * bumping grafanas go version to 1.21.5 * adding how to upgrade go doc * removing the whole ci-build and corresponding pipelines * clarifying that we have to run make drone * fixing starlark linter and removing unused code * Adding note about enterprise * trying to change the underyling image to avoid musl issues * only need to golang one (cherry picked from commit 4991e71b85c38bcdd133e6c4fe767ac93052ebcd) (cherry picked from commit 70629d8865c29c69d8a56b3ba9868249377242dc) # Conflicts: # .drone.yml # .github/workflows/alerting-swagger-gen.yml # .github/workflows/codeql-analysis.yml # .github/workflows/pr-codeql-analysis-go.yml # .github/workflows/publish-kinds-next.yml # .github/workflows/publish-kinds-release.yml # .github/workflows/verify-kinds.yml # Dockerfile # Makefile # scripts/build/ci-build/Dockerfile --- .drone.star | 2 - .drone.yml | 464 ++++++++------------ .github/workflows/alerting-swagger-gen.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/pr-codeql-analysis-go.yml | 2 +- .github/workflows/publish-kinds-next.yml | 2 +- .github/workflows/publish-kinds-release.yml | 2 +- .github/workflows/verify-kinds.yml | 2 +- Dockerfile | 124 +++--- Makefile | 2 +- contribute/backend/upgrading-go-version.md | 22 + scripts/build/ci-build/.gitignore | 1 - scripts/build/ci-build/Dockerfile | 193 -------- scripts/build/ci-build/README.md | 18 - scripts/build/ci-build/bootstrap.sh | 5 - scripts/drone/pipelines/ci_images.star | 52 --- scripts/drone/utils/images.star | 3 +- scripts/drone/variables.star | 2 +- 18 files changed, 282 insertions(+), 618 deletions(-) create mode 100644 contribute/backend/upgrading-go-version.md delete mode 100644 scripts/build/ci-build/.gitignore delete mode 100644 scripts/build/ci-build/Dockerfile delete mode 100644 scripts/build/ci-build/README.md delete mode 100755 scripts/build/ci-build/bootstrap.sh diff --git a/.drone.star b/.drone.star index a14146a7c14..725aeec7850 100644 --- a/.drone.star +++ b/.drone.star @@ -19,7 +19,6 @@ load( ) load( "scripts/drone/pipelines/ci_images.star", - "publish_ci_build_container_image_pipeline", "publish_ci_windows_test_image_pipeline", ) load( @@ -51,7 +50,6 @@ def main(_ctx): }, "oss", "testing")] + integration_test_pipelines() + publish_ci_windows_test_image_pipeline() + - publish_ci_build_container_image_pipeline() + cronjobs() + secrets() ) diff --git a/.drone.yml b/.drone.yml index c83e4cb51f2..631483c188e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -24,7 +24,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - ./bin/build verify-drone @@ -74,14 +74,14 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - go install github.com/bazelbuild/buildtools/buildifier@latest - buildifier --lint=warn -mode=check -r . depends_on: - compile-build-cmd - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: lint-starlark trigger: event: @@ -122,14 +122,14 @@ steps: - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - apk add --update git bash - yarn betterer ci depends_on: - yarn-install - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: betterer-frontend - commands: - apk add --update curl jq bash @@ -158,7 +158,7 @@ steps: - yarn-install environment: TEST_MAX_WORKERS: 50% - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: test-frontend trigger: event: @@ -222,7 +222,7 @@ steps: - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - yarn run prettier:check @@ -232,7 +232,7 @@ steps: - yarn-install environment: TEST_MAX_WORKERS: 50% - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: lint-frontend - commands: - apk add --update git @@ -247,7 +247,7 @@ steps: - yarn run i18n:compile depends_on: - yarn-install - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: verify-i18n trigger: event: @@ -316,7 +316,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -325,21 +325,21 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang - go test -tags requires_buildifer -short -covermode=atomic -timeout=5m ./pkg/... depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: test-backend - commands: - apk add --update build-base @@ -348,7 +348,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: test-backend-integration trigger: event: @@ -398,7 +398,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - apk add --update curl jq bash @@ -425,7 +425,7 @@ steps: - apk add --update make - make gen-go depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - apk add --update make build-base @@ -434,16 +434,16 @@ steps: - wire-install environment: CGO_ENABLED: "1" - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: lint-backend - commands: - go run scripts/modowners/modowners.go check go.mod - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: validate-modfile - commands: - apk add --update make - make swagger-validate - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: validate-openapi-spec trigger: event: @@ -499,7 +499,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -509,7 +509,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -518,19 +518,19 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - apk add --update jq bash @@ -541,7 +541,7 @@ steps: - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: build-frontend-packages - failure: ignore image: grafana/drone-downstream @@ -558,7 +558,7 @@ steps: from_secret: drone_token - commands: - /src/grafana-build artifacts -a targz:grafana:linux/amd64 -a targz:grafana:linux/arm64 - --go-version=1.21.3 --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER + --go-version=1.21.5 --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER --grafana-dir=$$PWD > packages.txt depends_on: - yarn-install @@ -679,14 +679,14 @@ steps: - build-frontend-packages environment: NODE_OPTIONS: --max_old_space_size=4096 - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: build-storybook when: paths: include: - packages/grafana-ui/** - commands: - - npx wait-on@7.0.1 http://$HOST:$PORT + - yarn wait-on http://$HOST:$PORT - pa11y-ci --config .pa11yci-pr.conf.js depends_on: - grafana-server @@ -802,8 +802,8 @@ services: - commands: - /bin/mimir -target=backend environment: {} - image: us.gcr.io/kubernetes-dev/mimir:gotjosh-state-config-grafana-663a0ae78 - name: mimir_backend + image: grafana/mimir:latest + name: mimir - environment: {} image: redis:6.2.11-alpine name: redis @@ -843,7 +843,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - echo $DRONE_RUNNER_NAME @@ -857,7 +857,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -866,14 +866,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -894,7 +894,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql57:3306 -timeout 120s @@ -915,7 +915,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql57 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: mysql-5.7-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -936,7 +936,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -951,7 +951,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -966,23 +966,20 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: memcached-integration-tests - commands: - - dockerize -wait tcp://mimir_backend:8080 -timeout 120s + - dockerize -wait tcp://mimir:8080 -timeout 120s image: jwilder/dockerize:0.6.1 name: wait-for-remote-alertmanager - commands: - apk add --update build-base - go clean -testcache - - go test -run TestIntegrationRemoteAlertmanager -covermode=atomic -timeout=2m ./pkg/services/ngalert/... + - go test -run IntegrationRemoteAlertmanager -covermode=atomic -timeout=2m ./pkg/... depends_on: - wire-install - wait-for-remote-alertmanager - environment: - AM_TENANT_ID: test - AM_URL: http://mimir_backend:8080 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: remote-alertmanager-integration-tests trigger: event: @@ -1037,7 +1034,7 @@ steps: - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - pip3 install codespell @@ -1050,7 +1047,7 @@ steps: - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: lint-docs - commands: - mkdir -p /hugo/content/docs/grafana/latest @@ -1069,7 +1066,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue trigger: event: @@ -1109,7 +1106,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - apt-get update -yq && apt-get install shellcheck @@ -1135,67 +1132,6 @@ volumes: clone: retries: 3 depends_on: [] -image_pull_secrets: -- dockerconfigjson -kind: pipeline -name: pr-swagger-gen -node: - type: no-parallel -platform: - arch: amd64 - os: linux -services: [] -steps: -- commands: - - apk add --update curl jq bash - - is_fork=$(curl "https://$GITHUB_TOKEN@api.github.com/repos/grafana/grafana/pulls/$DRONE_PULL_REQUEST" - | jq .head.repo.fork) - - if [ "$is_fork" != false ]; then return 1; fi - - git clone "https://$${GITHUB_TOKEN}@github.com/grafana/grafana-enterprise.git" - grafana-enterprise - - cd grafana-enterprise - - if git checkout ${DRONE_SOURCE_BRANCH}; then echo "checked out ${DRONE_SOURCE_BRANCH}"; - elif git checkout main; then echo "git checkout main"; else git checkout main; - fi - environment: - GITHUB_TOKEN: - from_secret: github_token - failure: ignore - image: alpine/git:2.40.1 - name: clone-enterprise -- commands: - - apk add --update git make - - make swagger-clean && make openapi3-gen - - for f in public/api-merged.json public/openapi3.json; do git add $f; done - - if [ -z "$(git diff --name-only --cached)" ]; then echo "Everything seems up to - date!"; else echo "Please ensure the branch is up-to-date, then regenerate the - specification by running make swagger-clean && make openapi3-gen" && return 1; - fi - depends_on: - - clone-enterprise - environment: - GITHUB_TOKEN: - from_secret: github_token - image: golang:1.21.3-alpine - name: swagger-gen -trigger: - event: - - pull_request - paths: - exclude: - - docs/** - - '*.md' - include: - - pkg/** -type: docker -volumes: -- host: - path: /var/run/docker.sock - name: docker ---- -clone: - retries: 3 -depends_on: [] environment: EDITION: oss image_pull_secrets: @@ -1245,8 +1181,8 @@ services: - commands: - /bin/mimir -target=backend environment: {} - image: us.gcr.io/kubernetes-dev/mimir:gotjosh-state-config-grafana-663a0ae78 - name: mimir_backend + image: grafana/mimir:latest + name: mimir - environment: {} image: redis:6.2.11-alpine name: redis @@ -1277,7 +1213,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -1288,7 +1224,7 @@ steps: - CODEGEN_VERIFY=1 make gen-cue depends_on: - clone-enterprise - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1298,14 +1234,14 @@ steps: - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: - clone-enterprise - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - apk add --update build-base @@ -1313,7 +1249,7 @@ steps: - go test -v -run=^$ -benchmem -timeout=1h -count=8 -bench=. ${GO_PACKAGES} depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: sqlite-benchmark-integration-tests - commands: - apk add --update build-base @@ -1325,7 +1261,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: postgres-benchmark-integration-tests - commands: - apk add --update build-base @@ -1336,7 +1272,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql57 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: mysql-5.7-benchmark-integration-tests - commands: - apk add --update build-base @@ -1347,7 +1283,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: mysql-8.0-benchmark-integration-tests trigger: event: @@ -1392,7 +1328,7 @@ steps: - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - pip3 install codespell @@ -1405,7 +1341,7 @@ steps: - yarn-install environment: NODE_OPTIONS: --max_old_space_size=8192 - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: lint-docs - commands: - mkdir -p /hugo/content/docs/grafana/latest @@ -1424,7 +1360,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue trigger: branch: main @@ -1467,14 +1403,14 @@ steps: - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - apk add --update git bash - yarn betterer ci depends_on: - yarn-install - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: betterer-frontend - commands: - yarn run ci:test-frontend @@ -1482,7 +1418,7 @@ steps: - yarn-install environment: TEST_MAX_WORKERS: 50% - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: test-frontend trigger: branch: main @@ -1524,7 +1460,7 @@ steps: - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - yarn run prettier:check @@ -1534,7 +1470,7 @@ steps: - yarn-install environment: TEST_MAX_WORKERS: 50% - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: lint-frontend - commands: - apk add --update git @@ -1549,7 +1485,7 @@ steps: - yarn run i18n:compile depends_on: - yarn-install - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: verify-i18n trigger: branch: main @@ -1596,7 +1532,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1605,21 +1541,21 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang - go test -tags requires_buildifer -short -covermode=atomic -timeout=5m ./pkg/... depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: test-backend - commands: - apk add --update build-base @@ -1628,7 +1564,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: test-backend-integration trigger: branch: main @@ -1672,13 +1608,13 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - apk add --update make - make gen-go depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - apk add --update make build-base @@ -1687,16 +1623,16 @@ steps: - wire-install environment: CGO_ENABLED: "1" - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: lint-backend - commands: - go run scripts/modowners/modowners.go check go.mod - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: validate-modfile - commands: - apk add --update make - make swagger-validate - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: validate-openapi-spec - commands: - ./bin/build verify-drone @@ -1752,7 +1688,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - '# It is required that code generated from Thema/CUE be committed and in sync @@ -1762,7 +1698,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -1771,19 +1707,19 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - apk add --update jq @@ -1794,7 +1730,7 @@ steps: - yarn install --mode=update-lockfile depends_on: - yarn-install - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: update-package-json-version - commands: - apk add --update jq bash @@ -1806,11 +1742,11 @@ steps: - update-package-json-version environment: NODE_OPTIONS: --max_old_space_size=8192 - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: build-frontend-packages - commands: - /src/grafana-build artifacts -a targz:grafana:linux/amd64 -a targz:grafana:linux/arm64 - --go-version=1.21.3 --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER + --go-version=1.21.5 --yarn-cache=$$YARN_CACHE_FOLDER --build-id=$$DRONE_BUILD_NUMBER --grafana-dir=$$PWD > packages.txt depends_on: - update-package-json-version @@ -1931,14 +1867,14 @@ steps: - build-frontend-packages environment: NODE_OPTIONS: --max_old_space_size=4096 - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: build-storybook when: paths: include: - packages/grafana-ui/** - commands: - - npx wait-on@7.0.1 http://$HOST:$PORT + - yarn wait-on http://$HOST:$PORT - pa11y-ci --config .pa11yci.conf.js --json > pa11y-ci-results.json depends_on: - grafana-server @@ -1981,7 +1917,7 @@ steps: GRAFANA_MISC_STATS_API_KEY: from_secret: grafana_misc_stats_api_key failure: ignore - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: publish-frontend-metrics when: repo: @@ -2065,7 +2001,7 @@ steps: environment: NPM_TOKEN: from_secret: npm_token - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: release-canary-npm-packages when: paths: @@ -2173,8 +2109,8 @@ services: - commands: - /bin/mimir -target=backend environment: {} - image: us.gcr.io/kubernetes-dev/mimir:gotjosh-state-config-grafana-663a0ae78 - name: mimir_backend + image: grafana/mimir:latest + name: mimir - environment: {} image: redis:6.2.11-alpine name: redis @@ -2193,7 +2129,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - echo $DRONE_RUNNER_NAME @@ -2207,7 +2143,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -2216,14 +2152,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -2244,7 +2180,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql57:3306 -timeout 120s @@ -2265,7 +2201,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql57 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: mysql-5.7-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -2286,7 +2222,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -2301,7 +2237,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -2316,23 +2252,20 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: memcached-integration-tests - commands: - - dockerize -wait tcp://mimir_backend:8080 -timeout 120s + - dockerize -wait tcp://mimir:8080 -timeout 120s image: jwilder/dockerize:0.6.1 name: wait-for-remote-alertmanager - commands: - apk add --update build-base - go clean -testcache - - go test -run TestIntegrationRemoteAlertmanager -covermode=atomic -timeout=2m ./pkg/services/ngalert/... + - go test -run IntegrationRemoteAlertmanager -covermode=atomic -timeout=2m ./pkg/... depends_on: - wire-install - wait-for-remote-alertmanager - environment: - AM_TENANT_ID: test - AM_URL: http://mimir_backend:8080 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: remote-alertmanager-integration-tests trigger: branch: main @@ -2406,6 +2339,38 @@ volumes: path: //./pipe/docker_engine/ name: docker --- +clone: + retries: 3 +depends_on: [] +kind: pipeline +name: notify-drone-changes +platform: + arch: amd64 + os: linux +steps: +- image: plugins/slack + name: slack + settings: + channel: slack-webhooks-test + template: "`.drone.yml` and `starlark` files have been changed on the OSS repo, + by: {{build.author}}. \nBranch: \nCommit hash: " + webhook: + from_secret: drone-changes-webhook +trigger: + branch: main + event: + - push + paths: + exclude: + - exclude + include: + - .drone.yml + repo: + - grafana/grafana +type: docker +--- clone: retries: 3 depends_on: @@ -2522,7 +2487,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - ./bin/build artifacts docker fetch --edition oss @@ -2618,7 +2583,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - ./bin/build artifacts packages --tag $${DRONE_TAG} --src-bucket $${PRERELEASE_BUCKET} @@ -2687,12 +2652,12 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - ./bin/build artifacts npm retrieve --tag ${DRONE_TAG} @@ -2716,7 +2681,7 @@ steps: NPM_TOKEN: from_secret: npm_token failure: ignore - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: release-npm-packages trigger: event: @@ -2752,7 +2717,7 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - depends_on: - compile-build-cmd @@ -2858,7 +2823,7 @@ steps: from_secret: gcp_key_base64 GITHUB_TOKEN: from_secret: github_token - GO_VERSION: 1.21.3 + GO_VERSION: 1.21.5 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -2915,13 +2880,13 @@ steps: depends_on: [] environment: CGO_ENABLED: 0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: compile-build-cmd - commands: - ./bin/build whatsnew-checker depends_on: - compile-build-cmd - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: whats-new-checker trigger: event: @@ -2961,14 +2926,14 @@ steps: - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - apk add --update git bash - yarn betterer ci depends_on: - yarn-install - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: betterer-frontend - commands: - yarn run ci:test-frontend @@ -2976,7 +2941,7 @@ steps: - yarn-install environment: TEST_MAX_WORKERS: 50% - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: test-frontend trigger: event: @@ -3021,7 +2986,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -3030,21 +2995,21 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang - go test -tags requires_buildifer -short -covermode=atomic -timeout=5m ./pkg/... depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: test-backend - commands: - apk add --update build-base @@ -3053,7 +3018,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: test-backend-integration trigger: event: @@ -3109,7 +3074,7 @@ steps: from_secret: gcp_key_base64 GITHUB_TOKEN: from_secret: github_token - GO_VERSION: 1.21.3 + GO_VERSION: 1.21.5 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3158,12 +3123,14 @@ services: [] steps: - commands: - echo $env:DRONE_RUNNER_NAME + failure: ignore image: mcr.microsoft.com/windows:1809 name: identify-runner - commands: - $$ProgressPreference = "SilentlyContinue" - Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.42/windows/grabpl.exe -OutFile grabpl.exe + failure: ignore image: grafana/ci-wix:0.1.1 name: windows-init - commands: @@ -3188,6 +3155,7 @@ steps: from_secret: github_token PRERELEASE_BUCKET: from_secret: prerelease_bucket + failure: ignore image: grafana/ci-wix:0.1.1 name: build-windows-installer trigger: @@ -3289,7 +3257,7 @@ steps: from_secret: gcp_key_base64 GITHUB_TOKEN: from_secret: github_token - GO_VERSION: 1.21.3 + GO_VERSION: 1.21.5 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3377,14 +3345,14 @@ steps: - commands: - yarn install --immutable depends_on: [] - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: yarn-install - commands: - apk add --update git bash - yarn betterer ci depends_on: - yarn-install - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: betterer-frontend - commands: - yarn run ci:test-frontend @@ -3392,7 +3360,7 @@ steps: - yarn-install environment: TEST_MAX_WORKERS: 50% - image: node:20.9.0-alpine + image: node:18.12.0-alpine name: test-frontend trigger: cron: @@ -3435,7 +3403,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -3444,21 +3412,21 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - apk add --update build-base shared-mime-info shared-mime-info-lang - go test -tags requires_buildifer -short -covermode=atomic -timeout=5m ./pkg/... depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: test-backend - commands: - apk add --update build-base @@ -3467,7 +3435,7 @@ steps: | grep -o '\(.*\)/' | sort -u) depends_on: - wire-install - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: test-backend-integration trigger: cron: @@ -3521,7 +3489,7 @@ steps: from_secret: gcp_key_base64 GITHUB_TOKEN: from_secret: github_token - GO_VERSION: 1.21.3 + GO_VERSION: 1.21.5 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3667,7 +3635,7 @@ steps: from_secret: gcp_key_base64 GITHUB_TOKEN: from_secret: github_token - GO_VERSION: 1.21.3 + GO_VERSION: 1.21.5 GPG_PASSPHRASE: from_secret: packages_gpg_passphrase GPG_PRIVATE_KEY: @@ -3764,20 +3732,20 @@ steps: - commands: [] depends_on: - clone - image: golang:1.21.3-windowsservercore-1809 + image: golang:1.21.5-windowsservercore-1809 name: windows-init - commands: - go install github.com/google/wire/cmd/wire@v0.5.0 - wire gen -tags oss ./pkg/server depends_on: - windows-init - image: golang:1.21.3-windowsservercore-1809 + image: golang:1.21.5-windowsservercore-1809 name: wire-install - commands: - go test -tags requires_buildifer -short -covermode=atomic -timeout=5m ./pkg/... depends_on: - wire-install - image: golang:1.21.3-windowsservercore-1809 + image: golang:1.21.5-windowsservercore-1809 name: test-backend trigger: event: @@ -3842,8 +3810,8 @@ services: - commands: - /bin/mimir -target=backend environment: {} - image: us.gcr.io/kubernetes-dev/mimir:gotjosh-state-config-grafana-663a0ae78 - name: mimir_backend + image: grafana/mimir:latest + name: mimir - environment: {} image: redis:6.2.11-alpine name: redis @@ -3869,7 +3837,7 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-cue depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-cue - commands: - '# It is required that generated jsonnet is committed and in sync with its inputs.' @@ -3878,14 +3846,14 @@ steps: - apk add --update make - CODEGEN_VERIFY=1 make gen-jsonnet depends_on: [] - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: verify-gen-jsonnet - commands: - apk add --update make - make gen-go depends_on: - verify-gen-cue - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: wire-install - commands: - dockerize -wait tcp://postgres:5432 -timeout 120s @@ -3906,7 +3874,7 @@ steps: GRAFANA_TEST_DB: postgres PGPASSWORD: grafanatest POSTGRES_HOST: postgres - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: postgres-integration-tests - commands: - dockerize -wait tcp://mysql57:3306 -timeout 120s @@ -3927,7 +3895,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql57 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: mysql-5.7-integration-tests - commands: - dockerize -wait tcp://mysql80:3306 -timeout 120s @@ -3948,7 +3916,7 @@ steps: environment: GRAFANA_TEST_DB: mysql MYSQL_HOST: mysql80 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: mysql-8.0-integration-tests - commands: - dockerize -wait tcp://redis:6379 -timeout 120s @@ -3963,7 +3931,7 @@ steps: - wait-for-redis environment: REDIS_URL: redis://redis:6379/0 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: redis-integration-tests - commands: - dockerize -wait tcp://memcached:11211 -timeout 120s @@ -3978,23 +3946,20 @@ steps: - wait-for-memcached environment: MEMCACHED_HOSTS: memcached:11211 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: memcached-integration-tests - commands: - - dockerize -wait tcp://mimir_backend:8080 -timeout 120s + - dockerize -wait tcp://mimir:8080 -timeout 120s image: jwilder/dockerize:0.6.1 name: wait-for-remote-alertmanager - commands: - apk add --update build-base - go clean -testcache - - go test -run TestIntegrationRemoteAlertmanager -covermode=atomic -timeout=2m ./pkg/services/ngalert/... + - go test -run IntegrationRemoteAlertmanager -covermode=atomic -timeout=2m ./pkg/... depends_on: - wire-install - wait-for-remote-alertmanager - environment: - AM_TENANT_ID: test - AM_URL: http://mimir_backend:8080 - image: golang:1.21.3-alpine + image: golang:1.21.5-alpine3.18 name: remote-alertmanager-integration-tests trigger: event: @@ -4063,59 +4028,6 @@ volumes: path: //./pipe/docker_engine/ name: docker --- -clone: - retries: 3 -depends_on: [] -image_pull_secrets: -- dockerconfigjson -kind: pipeline -name: publish-ci-build-container-image -node: - type: no-parallel -platform: - arch: amd64 - os: linux -services: [] -steps: -- commands: - - if [ -z "${BUILD_CONTAINER_VERSION}" ]; then echo Missing BUILD_CONTAINER_VERSION; - false; fi - image: alpine:3.18.4 - name: validate-version -- commands: - - printenv GCP_KEY > /tmp/key.json - - gcloud auth activate-service-account --key-file=/tmp/key.json - - gsutil cp gs://grafana-private-downloads/MacOSX10.15.sdk.tar.xz ./scripts/build/ci-build/MacOSX10.15.sdk.tar.xz - environment: - GCP_KEY: - from_secret: gcp_download_build_container_assets_key - image: google/cloud-sdk:431.0.0 - name: download-macos-sdk -- commands: - - printenv DOCKER_PASSWORD | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build -t "grafana/build-container:${BUILD_CONTAINER_VERSION}" ./scripts/build/ci-build - - docker push "grafana/build-container:${BUILD_CONTAINER_VERSION}" - environment: - DOCKER_PASSWORD: - from_secret: docker_password - DOCKER_USERNAME: - from_secret: docker_username - image: google/cloud-sdk:431.0.0 - name: build-and-publish - volumes: - - name: docker - path: /var/run/docker.sock -trigger: - event: - - promote - target: - - ci-build-container-image -type: docker -volumes: -- host: - path: /var/run/docker.sock - name: docker ---- clone: retries: 3 kind: pipeline @@ -4400,8 +4312,8 @@ steps: path: /root/.docker/ - commands: - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM alpine/git:2.40.1 - - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM golang:1.21.3-alpine - - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM node:20.9.0-alpine + - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM golang:1.21.5-alpine3.18 + - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM node:18.12.0-alpine - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM google/cloud-sdk:431.0.0 - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/grafana-ci-deploy:1.3.3 - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM alpine:3.18.4 @@ -4410,7 +4322,7 @@ steps: - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM plugins/slack - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM python:3.8 - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM postgres:12.3-alpine - - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM us.gcr.io/kubernetes-dev/mimir:gotjosh-state-config-grafana-663a0ae78 + - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM grafana/mimir:latest - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM mysql:5.7.39 - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM mysql:8.0.32 - trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM redis:6.2.11-alpine @@ -4434,8 +4346,8 @@ steps: path: /root/.docker/ - commands: - trivy --exit-code 1 --severity HIGH,CRITICAL alpine/git:2.40.1 - - trivy --exit-code 1 --severity HIGH,CRITICAL golang:1.21.3-alpine - - trivy --exit-code 1 --severity HIGH,CRITICAL node:20.9.0-alpine + - trivy --exit-code 1 --severity HIGH,CRITICAL golang:1.21.5-alpine3.18 + - trivy --exit-code 1 --severity HIGH,CRITICAL node:18.12.0-alpine - trivy --exit-code 1 --severity HIGH,CRITICAL google/cloud-sdk:431.0.0 - trivy --exit-code 1 --severity HIGH,CRITICAL grafana/grafana-ci-deploy:1.3.3 - trivy --exit-code 1 --severity HIGH,CRITICAL alpine:3.18.4 @@ -4444,7 +4356,7 @@ steps: - trivy --exit-code 1 --severity HIGH,CRITICAL plugins/slack - trivy --exit-code 1 --severity HIGH,CRITICAL python:3.8 - trivy --exit-code 1 --severity HIGH,CRITICAL postgres:12.3-alpine - - trivy --exit-code 1 --severity HIGH,CRITICAL us.gcr.io/kubernetes-dev/mimir:gotjosh-state-config-grafana-663a0ae78 + - trivy --exit-code 1 --severity HIGH,CRITICAL grafana/mimir:latest - trivy --exit-code 1 --severity HIGH,CRITICAL mysql:5.7.39 - trivy --exit-code 1 --severity HIGH,CRITICAL mysql:8.0.32 - trivy --exit-code 1 --severity HIGH,CRITICAL redis:6.2.11-alpine @@ -4682,6 +4594,6 @@ kind: secret name: gcr_credentials --- kind: signature -hmac: 0e9f67184e414d3afbda81c86dfa58b3c2cf7c1a668be5313c851ff5f42de44d +hmac: e873c32a088f5afec63f5f20c6761d6466ab7c196e5f4e5a58bd2c20e9cae274 ... diff --git a/.github/workflows/alerting-swagger-gen.yml b/.github/workflows/alerting-swagger-gen.yml index cd901cf8b62..54b984bb563 100644 --- a/.github/workflows/alerting-swagger-gen.yml +++ b/.github/workflows/alerting-swagger-gen.yml @@ -16,7 +16,7 @@ jobs: - name: Set go version uses: actions/setup-go@v4 with: - go-version: '1.21.3' + go-version: '1.21.5' - name: Build swagger run: | make -C pkg/services/ngalert/api/tooling post.json api.json diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 77f8d20905d..a6bfe311ef8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -47,7 +47,7 @@ jobs: name: Set go version uses: actions/setup-go@v4 with: - go-version: '1.21.3' + go-version: '1.21.5' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/pr-codeql-analysis-go.yml b/.github/workflows/pr-codeql-analysis-go.yml index 5a4c4d4c631..c47c19a09a8 100644 --- a/.github/workflows/pr-codeql-analysis-go.yml +++ b/.github/workflows/pr-codeql-analysis-go.yml @@ -26,7 +26,7 @@ jobs: - name: Set go version uses: actions/setup-go@v4 with: - go-version: '1.21.3' + go-version: '1.21.5' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/publish-kinds-next.yml b/.github/workflows/publish-kinds-next.yml index 160384c35a8..ec88f288df7 100644 --- a/.github/workflows/publish-kinds-next.yml +++ b/.github/workflows/publish-kinds-next.yml @@ -36,7 +36,7 @@ jobs: - name: "Setup Go" uses: "actions/setup-go@v4" with: - go-version: '1.21.3' + go-version: '1.21.5' - name: "Verify kinds" run: go run .github/workflows/scripts/kinds/verify-kinds.go diff --git a/.github/workflows/publish-kinds-release.yml b/.github/workflows/publish-kinds-release.yml index d2c6ea1b904..5e32b09d408 100644 --- a/.github/workflows/publish-kinds-release.yml +++ b/.github/workflows/publish-kinds-release.yml @@ -39,7 +39,7 @@ jobs: - name: "Setup Go" uses: "actions/setup-go@v4" with: - go-version: '1.21.3' + go-version: '1.21.5' - name: "Verify kinds" run: go run .github/workflows/scripts/kinds/verify-kinds.go diff --git a/.github/workflows/verify-kinds.yml b/.github/workflows/verify-kinds.yml index 030d98d9f10..cda6ccbc679 100644 --- a/.github/workflows/verify-kinds.yml +++ b/.github/workflows/verify-kinds.yml @@ -18,7 +18,7 @@ jobs: - name: "Setup Go" uses: "actions/setup-go@v4" with: - go-version: '1.21.3' + go-version: '1.21.5' - name: "Verify kinds" run: go run .github/workflows/scripts/kinds/verify-kinds.go diff --git a/Dockerfile b/Dockerfile index ec439e8b9b0..1af278b2236 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ ARG BASE_IMAGE=alpine:3.18.3 ARG JS_IMAGE=node:20-alpine3.18 ARG JS_PLATFORM=linux/amd64 -ARG GO_IMAGE=golang:1.21.3-alpine3.18 +ARG GO_IMAGE=golang:1.21.5-alpine3.18 ARG GO_SRC=go-builder ARG JS_SRC=js-builder @@ -40,8 +40,8 @@ ARG BINGO="true" # Install build dependencies RUN if grep -i -q alpine /etc/issue; then \ - apk add --no-cache gcc g++ make git; \ - fi + apk add --no-cache gcc g++ make git; \ + fi WORKDIR /tmp/grafana @@ -53,9 +53,9 @@ COPY pkg/util/xorm/go.* pkg/util/xorm/ RUN go mod download RUN if [[ "$BINGO" = "true" ]]; then \ - go install github.com/bwplotka/bingo@latest && \ - bingo get -v; \ - fi + go install github.com/bwplotka/bingo@latest && \ + bingo get -v; \ + fi COPY embed.go Makefile build.go package.json ./ COPY cue.mod cue.mod @@ -99,74 +99,74 @@ ARG GF_UID="472" ARG GF_GID="0" ENV PATH="/usr/share/grafana/bin:$PATH" \ - GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \ - GF_PATHS_DATA="/var/lib/grafana" \ - GF_PATHS_HOME="/usr/share/grafana" \ - GF_PATHS_LOGS="/var/log/grafana" \ - GF_PATHS_PLUGINS="/var/lib/grafana/plugins" \ - GF_PATHS_PROVISIONING="/etc/grafana/provisioning" + GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \ + GF_PATHS_DATA="/var/lib/grafana" \ + GF_PATHS_HOME="/usr/share/grafana" \ + GF_PATHS_LOGS="/var/log/grafana" \ + GF_PATHS_PLUGINS="/var/lib/grafana/plugins" \ + GF_PATHS_PROVISIONING="/etc/grafana/provisioning" WORKDIR $GF_PATHS_HOME # Install dependencies RUN if grep -i -q alpine /etc/issue; then \ - apk add --no-cache ca-certificates bash curl tzdata musl-utils && \ - apk info -vv | sort; \ - elif grep -i -q ubuntu /etc/issue; then \ - DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get install -y ca-certificates curl tzdata musl && \ - apt-get autoremove -y && \ - rm -rf /var/lib/apt/lists/*; \ - else \ - echo 'ERROR: Unsupported base image' && /bin/false; \ - fi + apk add --no-cache ca-certificates bash curl tzdata musl-utils && \ + apk info -vv | sort; \ + elif grep -i -q ubuntu /etc/issue; then \ + DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y ca-certificates curl tzdata musl && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/*; \ + else \ + echo 'ERROR: Unsupported base image' && /bin/false; \ + fi # glibc support for alpine x86_64 only RUN if grep -i -q alpine /etc/issue && [ `arch` = "x86_64" ]; then \ - wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \ - wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk \ - -O /tmp/glibc-2.35-r0.apk && \ - wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-bin-2.35-r0.apk \ - -O /tmp/glibc-bin-2.35-r0.apk && \ - apk add --force-overwrite --no-cache /tmp/glibc-2.35-r0.apk /tmp/glibc-bin-2.35-r0.apk && \ - rm -f /lib64/ld-linux-x86-64.so.2 && \ - ln -s /usr/glibc-compat/lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 && \ - rm -f /tmp/glibc-2.35-r0.apk && \ - rm -f /tmp/glibc-bin-2.35-r0.apk && \ - rm -f /lib/ld-linux-x86-64.so.2 && \ - rm -f /etc/ld.so.cache; \ - fi + wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \ + wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-2.35-r0.apk \ + -O /tmp/glibc-2.35-r0.apk && \ + wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.35-r0/glibc-bin-2.35-r0.apk \ + -O /tmp/glibc-bin-2.35-r0.apk && \ + apk add --force-overwrite --no-cache /tmp/glibc-2.35-r0.apk /tmp/glibc-bin-2.35-r0.apk && \ + rm -f /lib64/ld-linux-x86-64.so.2 && \ + ln -s /usr/glibc-compat/lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 && \ + rm -f /tmp/glibc-2.35-r0.apk && \ + rm -f /tmp/glibc-bin-2.35-r0.apk && \ + rm -f /lib/ld-linux-x86-64.so.2 && \ + rm -f /etc/ld.so.cache; \ + fi COPY --from=go-src /tmp/grafana/conf ./conf RUN if [ ! $(getent group "$GF_GID") ]; then \ - if grep -i -q alpine /etc/issue; then \ - addgroup -S -g $GF_GID grafana; \ - else \ - addgroup --system --gid $GF_GID grafana; \ - fi; \ - fi && \ - GF_GID_NAME=$(getent group $GF_GID | cut -d':' -f1) && \ - mkdir -p "$GF_PATHS_HOME/.aws" && \ - if grep -i -q alpine /etc/issue; then \ - adduser -S -u $GF_UID -G "$GF_GID_NAME" grafana; \ - else \ - adduser --system --uid $GF_UID --ingroup "$GF_GID_NAME" grafana; \ - fi && \ - mkdir -p "$GF_PATHS_PROVISIONING/datasources" \ - "$GF_PATHS_PROVISIONING/dashboards" \ - "$GF_PATHS_PROVISIONING/notifiers" \ - "$GF_PATHS_PROVISIONING/plugins" \ - "$GF_PATHS_PROVISIONING/access-control" \ - "$GF_PATHS_PROVISIONING/alerting" \ - "$GF_PATHS_LOGS" \ - "$GF_PATHS_PLUGINS" \ - "$GF_PATHS_DATA" && \ - cp conf/sample.ini "$GF_PATHS_CONFIG" && \ - cp conf/ldap.toml /etc/grafana/ldap.toml && \ - chown -R "grafana:$GF_GID_NAME" "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \ - chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" + if grep -i -q alpine /etc/issue; then \ + addgroup -S -g $GF_GID grafana; \ + else \ + addgroup --system --gid $GF_GID grafana; \ + fi; \ + fi && \ + GF_GID_NAME=$(getent group $GF_GID | cut -d':' -f1) && \ + mkdir -p "$GF_PATHS_HOME/.aws" && \ + if grep -i -q alpine /etc/issue; then \ + adduser -S -u $GF_UID -G "$GF_GID_NAME" grafana; \ + else \ + adduser --system --uid $GF_UID --ingroup "$GF_GID_NAME" grafana; \ + fi && \ + mkdir -p "$GF_PATHS_PROVISIONING/datasources" \ + "$GF_PATHS_PROVISIONING/dashboards" \ + "$GF_PATHS_PROVISIONING/notifiers" \ + "$GF_PATHS_PROVISIONING/plugins" \ + "$GF_PATHS_PROVISIONING/access-control" \ + "$GF_PATHS_PROVISIONING/alerting" \ + "$GF_PATHS_LOGS" \ + "$GF_PATHS_PLUGINS" \ + "$GF_PATHS_DATA" && \ + cp conf/sample.ini "$GF_PATHS_CONFIG" && \ + cp conf/ldap.toml /etc/grafana/ldap.toml && \ + chown -R "grafana:$GF_GID_NAME" "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \ + chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" COPY --from=go-src /tmp/grafana/bin/grafana* /tmp/grafana/bin/*/grafana* ./bin/ COPY --from=js-src /tmp/grafana/public ./public diff --git a/Makefile b/Makefile index 1e9bfbf8134..df2753b4ae9 100644 --- a/Makefile +++ b/Makefile @@ -261,7 +261,7 @@ build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development. --build-arg COMMIT_SHA=$$(git rev-parse HEAD) \ --build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \ --build-arg BASE_IMAGE=ubuntu:22.04 \ - --build-arg GO_IMAGE=golang:1.21.3 \ + --build-arg GO_IMAGE=golang:1.21.5 \ --tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \ $(DOCKER_BUILD_ARGS) diff --git a/contribute/backend/upgrading-go-version.md b/contribute/backend/upgrading-go-version.md new file mode 100644 index 00000000000..e292bbddf85 --- /dev/null +++ b/contribute/backend/upgrading-go-version.md @@ -0,0 +1,22 @@ +# Upgrading Go Version + +Notes on upgrading Go version. + +Example PR: https://github.com/grafana/grafana/pull/79329 + +## The main areas that need to change during the upgrade are: + +- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/scripts/drone/variables.star#L6 +- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/Makefile#L264 +- https://github.com/grafana/grafana/blob/d8ecea4ed93efb2e4d64a5ee24bc08f3805f413d/Dockerfile#L6 + +Make sure to run `make drone` so that changes to `.star` files are reflected and `drone.yml` is generated. + +### Additional files to change + +- Take a look in `.github/workflows` folder for what `go` version is being used there in various workflows. +- Make sure to create a PR with the corresponding changes in `grafana/grafana-enterprise` repository. + +## Updating the go.mod file + +Please avoid updating the `go.mod` to the newest version unless really necessary. This ensures backwards compatibility and introduces less breaking changes. Always upgrade Go version in the runtime files above first, let them run for a couple of weeks and only then consider updating the `go.mod` file if necessary. diff --git a/scripts/build/ci-build/.gitignore b/scripts/build/ci-build/.gitignore deleted file mode 100644 index aa96d47e101..00000000000 --- a/scripts/build/ci-build/.gitignore +++ /dev/null @@ -1 +0,0 @@ -MacOSX*.tar.xz diff --git a/scripts/build/ci-build/Dockerfile b/scripts/build/ci-build/Dockerfile deleted file mode 100644 index 3589fb6d0a0..00000000000 --- a/scripts/build/ci-build/Dockerfile +++ /dev/null @@ -1,193 +0,0 @@ -# Use old Debian (LTS into 2024) in order to ensure binary compatibility with older glibc's. -FROM debian:buster-20220822 AS toolchain - -ENV OSX_MIN=10.10 \ - CTNG=1.24.0 \ - CTNG_CHKSUM=89b8794a4184ad4928750e29712ed4f194aa1d0b93768d67ff64f30c30f1b1e165647cafc6de94d68d3ef70e50446e544dad65aa36137511a32ee7a667dddfb4 \ - # This is the last revision that builds on Debian Stretch - OSX_CROSS_REV=a1d7d7a8d569f9f0b8c3140b8b32848dbcd62afa - -# Use ARG so as not to persist environment variable in image -ARG DEBIAN_FRONTEND=noninteractive - -WORKDIR /tmp - -# FIRST PART -# build osx64 toolchain (stripped of man documentation) -# the toolchain produced is not self contained, it needs clang at runtime -# -# SECOND PART -# build gcc (no g++) centos6-x64 toolchain -# doc: https://crosstool-ng.github.io/docs/ -# apt-get should be all dep to build toolchain -# sed and 1st echo are for convenience to get the toolchain in /tmp/x86_64-centos6-linux-gnu -# other echo are to enable build by root (crosstool-NG refuse to do that by default) -# the last 2 rm are just to save some time and space writing docker layers -# -# THIRD PART -# build fpm and creates a set of deb from gem -# ruby2.0 depends on ruby1.9.3 which is install as default ruby -# rm/ln are here to change that -# created deb depends on rubygem-json but json gem is not build -# so do by hand - -# might wanna make sure osx cross and the other tarball as well as the packages ends up somewhere other than tmp -# might also wanna put them as their own layer to not have to unpack them every time? - -RUN apt-get update && \ - apt-get install -yq \ - clang patch libxml2-dev \ - build-essential \ - ca-certificates \ - curl \ - git \ - make \ - cmake \ - libssl-dev \ - xz-utils \ - lzma-dev -RUN git clone https://github.com/tpoechtrager/osxcross.git /tmp/osxcross && \ - cd /tmp/osxcross && git reset --hard $OSX_CROSS_REV -COPY MacOSX10.15.sdk.tar.xz /tmp/osxcross/tarballs/ -RUN ln -s /usr/bin/llvm-dsymutil-6.0 /usr/bin/dsymutil -RUN UNATTENDED=1 OSX_VERSION_MIN=${OSX_MIN} /tmp/osxcross/build.sh -RUN rm -rf /tmp/osxcross/target/SDK/*/usr/share && \ - cd /tmp && \ - tar cfJ osxcross.tar.xz osxcross/target && \ - rm -rf /tmp/osxcross -RUN apt-get install -yq \ - unzip libtool-bin bison flex gawk gcc g++ gperf help2man libncurses5-dev make patch python-dev texinfo xz-utils -RUN curl -fLO http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-${CTNG}.tar.xz -RUN echo $CTNG_CHKSUM crosstool-ng-${CTNG}.tar.xz | sha512sum --check --strict --status -RUN tar xf crosstool-ng-${CTNG}.tar.xz -RUN cd /tmp/crosstool-ng-${CTNG} && \ - ./configure --enable-local && \ - make && \ - ./ct-ng x86_64-centos6-linux-gnu && \ - sed -i '/CT_PREFIX_DIR=/d' .config && \ - echo 'CT_PREFIX_DIR="/tmp/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"' >> .config && \ - echo 'CT_EXPERIMENTAL=y' >> .config && \ - echo 'CT_ALLOW_BUILD_AS_ROOT=y' >> .config && \ - echo 'CT_ALLOW_BUILD_AS_ROOT_SURE=y' >> .config && \ - mkdir -p .build/tarballs && \ - cd .build/tarballs && \ - curl -fLO https://libisl.sourceforge.io/isl-0.20.tar.gz && \ - curl -fLO https://github.com/libexpat/libexpat/releases/download/R_2_1_0/expat-2.1.0.tar.gz && \ - cd - && \ - ./ct-ng build -RUN cd /tmp && \ - rm /tmp/x86_64-centos6-linux-gnu/build.log.bz2 && \ - tar cfJ x86_64-centos6-linux-gnu.tar.xz x86_64-centos6-linux-gnu/ && \ - rm -rf /tmp/x86_64-centos6-linux-gnu/ && \ - rm -rf /tmp/crosstool-ng-${CTNG} - -ARG SHELLCHECK_VERSION=0.7.1 -ARG SHELLCHECK_CHKSUM=beca3d7819a6bdcfbd044576df4fc284053b48f468b2f03428fe66f4ceb2c05d9b5411357fa15003cb0311406c255084cf7283a3b8fce644c340c2f6aa910b9f -RUN curl -fLO http://storage.googleapis.com/grafana-downloads/ci-dependencies/shellcheck-v${SHELLCHECK_VERSION}.linux.x86_64.tar.xz -RUN echo $SHELLCHECK_CHKSUM shellcheck-v${SHELLCHECK_VERSION}.linux.x86_64.tar.xz | sha512sum --check --strict --status -RUN tar xf shellcheck-v${SHELLCHECK_VERSION}.linux.x86_64.tar.xz && mv shellcheck-v${SHELLCHECK_VERSION}/shellcheck /tmp/ - -ARG BUILDIFIER_VERSION=5.1.0 -ARG BUILDIFIER_CHKSUM=52bf6b102cb4f88464e197caac06d69793fa2b05f5ad50a7e7bf6fbd656648a3 -RUN curl -fLO https://github.com/bazelbuild/buildtools/releases/download/${BUILDIFIER_VERSION}/buildifier-linux-amd64 -RUN echo $BUILDIFIER_CHKSUM buildifier-linux-amd64 | sha256sum --check --strict --status -RUN mv buildifier-linux-amd64 /tmp/buildifier && chmod +x /tmp/buildifier - -ARG CUE_VERSION=0.3.0-alpha5 -ARG CUE_CHKSUM=9d3131e470cdb5182afd9966688f1c052d383145cce005a947156b5591da39b7 -RUN curl -fLO https://github.com/cuelang/cue/releases/download/v${CUE_VERSION}/cue_${CUE_VERSION}_Linux_x86_64.tar.gz -RUN echo $CUE_CHKSUM cue_${CUE_VERSION}_Linux_x86_64.tar.gz | sha256sum --check --strict --status -RUN tar xf cue_${CUE_VERSION}_Linux_x86_64.tar.gz -C /tmp cue - -ARG DOCKERIZE_VERSION=0.6.1 -RUN curl -fLO https://github.com/jwilder/dockerize/releases/download/v${DOCKERIZE_VERSION}/dockerize-linux-amd64-v${DOCKERIZE_VERSION}.tar.gz -RUN tar -xzvf dockerize-linux-amd64-v${DOCKERIZE_VERSION}.tar.gz -C /tmp/ -RUN rm dockerize-linux-amd64-v${DOCKERIZE_VERSION}.tar.gz - -# Base image to crossbuild grafana. -# Use old Debian (LTS into 2024) in order to ensure binary compatibility with older glibc's. -FROM debian:buster-20220822 - -ENV GOVERSION=1.21.3 \ - PATH=/usr/local/go/bin:$PATH \ - GOPATH=/go \ - NODEVERSION=20.9.0-1nodesource1 \ - YARNVERSION=1.22.19-1 - -# Use ARG so as not to persist environment variable in image -ARG DEBIAN_FRONTEND=noninteractive - -COPY --from=toolchain /tmp/x86_64-centos6-linux-gnu.tar.xz /tmp/osxcross.tar.xz /tmp/ -COPY --from=toolchain /tmp/shellcheck /usr/local/bin/ -COPY --from=toolchain /tmp/buildifier /usr/local/bin/ -COPY --from=toolchain /tmp/cue /usr/local/bin/ -COPY --from=toolchain /tmp/dockerize /usr/local/bin/ - -RUN apt-get update && \ - apt-get install -yq \ - apt-transport-https \ - build-essential netcat-traditional clang gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-mingw-w64-x86-64 \ - python-pip \ - ca-certificates \ - curl \ - gcc \ - g++ \ - git \ - jq \ - make \ - rpm \ - xz-utils \ - expect \ - gnupg2 \ - procps \ - ruby \ - ruby-dev \ - rubygems \ - unzip && \ - gem install -N public_suffix -v 4.0.7 && \ - gem install --conservative -N fpm && \ - ln -s /usr/bin/llvm-dsymutil-6.0 /usr/bin/dsymutil && \ - curl -fsS https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \ - curl -O https://deb.nodesource.com/node_20.x/pool/main/n/nodejs/nodejs_${NODEVERSION}_amd64.deb &&\ - dpkg -i nodejs_${NODEVERSION}_amd64.deb &&\ - rm nodejs_${NODEVERSION}_amd64.deb &&\ - curl -fsS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ - apt-get update && apt-get install -yq yarn=${YARNVERSION} && \ - curl -fL https://storage.googleapis.com/golang/go${GOVERSION}.linux-amd64.tar.gz \ - | tar -xz -C /usr/local && \ - git clone https://github.com/raspberrypi/tools.git /opt/rpi-tools --depth=1 && \ - pip install codespell - -# We build our own musl cross-compilers via the musl-cross-make project, on the same OS as this image's base image, -# to ensure compatibility. We also make sure to target musl 1.1.x, since musl 1.2.x introduces 64-bit time types -# that breaks compatibility on some 32-bit architectures (https://github.com/grafana/grafana/issues/23500). -# -# Use ARG so as not to persist environment variable in image -ARG CHKSUM_ARMV7_MUSL=5db487fb0a4aa61667de45a9cfbf7940360bd7256583b8a1e7810b4d9dd0e02a8aac737ca634b57bf269195e776ef503832ed22a6689a1c8fcdcc956f846bef7 -ARG CHKSUM_ARMV8_MUSL=50f4899cc2f637dbc39470bbe307074ccf7f40da2ab730218d13a9f75d578266311db6a0785919dcdcb5e7ce4517b13ee8d4a56d76e6fca7c6d4c2510d71aa8b -ARG CHKSUM_AMD64_MUSL=493a79e9e29a1eab3fdff6435bac6509253d2e54ac30ad9098ce5da638bbb8ad18a7ebf3520bcaf2f9588befeff23402d8bbf54fa3809bfe18c984a4ecabcb12 - -# Install musl cross compilers -RUN cd /tmp && \ - curl -fLO https://grafana-downloads.storage.googleapis.com/compilers/arm-linux-musleabihf-cross.tgz && \ - ([ "$(sha512sum arm-linux-musleabihf-cross.tgz|cut -f1 -d ' ')" = "$CHKSUM_ARMV7_MUSL" ] || (echo "Mismatching checksums armv7"; exit 1)) && \ - tar xf arm-linux-musleabihf-cross.tgz && \ - rm arm-linux-musleabihf-cross.tgz && \ - curl -fLO https://grafana-downloads.storage.googleapis.com/compilers/aarch64-linux-musl-cross.tgz && \ - ([ "$(sha512sum aarch64-linux-musl-cross.tgz|cut -f1 -d ' ')" = "$CHKSUM_ARMV8_MUSL" ] || (echo "Mismatching checksums armv8"; exit 1)) && \ - tar xf aarch64-linux-musl-cross.tgz && \ - rm aarch64-linux-musl-cross.tgz && \ - curl -fLO https://grafana-downloads.storage.googleapis.com/compilers/x86_64-linux-musl-cross.tgz && \ - ([ "$(sha512sum x86_64-linux-musl-cross.tgz|cut -f1 -d ' ')" = "$CHKSUM_AMD64_MUSL" ] || (echo "Mismatching checksums amd64"; exit 1)) && \ - tar xf x86_64-linux-musl-cross.tgz && \ - rm x86_64-linux-musl-cross.tgz - -RUN go install github.com/mgechev/revive@v1.0.2 && \ - mv ${GOPATH}/bin/revive /usr/local/bin/ && \ - go install github.com/google/go-jsonnet/cmd/jsonnetfmt@latest && \ - mv ${GOPATH}/bin/jsonnetfmt /usr/local/bin/ && \ - go install github.com/monitoring-mixins/mixtool/cmd/mixtool@latest && \ - mv ${GOPATH}/bin/mixtool /usr/local/bin/ - -COPY ./bootstrap.sh /tmp/bootstrap.sh diff --git a/scripts/build/ci-build/README.md b/scripts/build/ci-build/README.md deleted file mode 100644 index ed6dbe509aa..00000000000 --- a/scripts/build/ci-build/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# grafana-build-container - -These are the sources for the Docker image that we use for the Grafana build containers. The image source itself -is in Dockerfile, but there are supporting scripts such as the Makefile, for building images. - -The image is based on Debian Buster, since we want an older Linux distribution (Buster has long-term support into 2024) to build binaries that are as portable as possible. - -## Build/Publish Docker Image - -In order to build and publish the Grafana build Docker image, execute the following: - -``` -# Download MacOSX10.15.sdk.tar.xz from our private GCS bucket into this directory -docker build -t grafana/build-container: --ulimit nofile=2048:2048 . -docker push grafana/build-container: -``` - -If you're running on a machine that has an ARM chip (Apple M1/M2, etc.), add `--platform linux/amd64` to the `docker build` command. It can take approximately four hours for an initial build to complete. Due to caching, subsequent builds take less time (~10 mins or so). diff --git a/scripts/build/ci-build/bootstrap.sh b/scripts/build/ci-build/bootstrap.sh deleted file mode 100755 index 0c4f5ac876e..00000000000 --- a/scripts/build/ci-build/bootstrap.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -cd /tmp || exit 1 -tar xfJ x86_64-centos6-linux-gnu.tar.xz -tar xfJ osxcross.tar.xz diff --git a/scripts/drone/pipelines/ci_images.star b/scripts/drone/pipelines/ci_images.star index e8180d6d0ef..1304cdedebd 100644 --- a/scripts/drone/pipelines/ci_images.star +++ b/scripts/drone/pipelines/ci_images.star @@ -2,10 +2,6 @@ This module contains steps and pipelines relating to creating CI Docker images. """ -load( - "scripts/drone/utils/images.star", - "images", -) load( "scripts/drone/utils/utils.star", "pipeline", @@ -17,7 +13,6 @@ load( load( "scripts/drone/vault.star", "from_secret", - "gcp_download_build_container_assets_key", ) def publish_ci_windows_test_image_pipeline(): @@ -69,50 +64,3 @@ def publish_ci_windows_test_image_pipeline(): } return [pl] - -def publish_ci_build_container_image_pipeline(): - trigger = { - "event": ["promote"], - "target": ["ci-build-container-image"], - } - pl = pipeline( - name = "publish-ci-build-container-image", - trigger = trigger, - steps = [ - { - "name": "validate-version", - "image": images["alpine"], - "commands": [ - "if [ -z \"${BUILD_CONTAINER_VERSION}\" ]; then echo Missing BUILD_CONTAINER_VERSION; false; fi", - ], - }, - { - "name": "download-macos-sdk", - "image": images["cloudsdk"], - "environment": { - "GCP_KEY": from_secret(gcp_download_build_container_assets_key), - }, - "commands": [ - "printenv GCP_KEY > /tmp/key.json", - "gcloud auth activate-service-account --key-file=/tmp/key.json", - "gsutil cp gs://grafana-private-downloads/MacOSX10.15.sdk.tar.xz ./scripts/build/ci-build/MacOSX10.15.sdk.tar.xz", - ], - }, - { - "name": "build-and-publish", # Consider splitting the build and the upload task. - "image": images["cloudsdk"], - "volumes": [{"name": "docker", "path": "/var/run/docker.sock"}], - "environment": { - "DOCKER_USERNAME": from_secret("docker_username"), - "DOCKER_PASSWORD": from_secret("docker_password"), - }, - "commands": [ - "printenv DOCKER_PASSWORD | docker login -u \"$DOCKER_USERNAME\" --password-stdin", - "docker build -t \"grafana/build-container:${BUILD_CONTAINER_VERSION}\" ./scripts/build/ci-build", - "docker push \"grafana/build-container:${BUILD_CONTAINER_VERSION}\"", - ], - }, - ], - ) - - return [pl] diff --git a/scripts/drone/utils/images.star b/scripts/drone/utils/images.star index acd1ee60ffa..8f0250e56bd 100644 --- a/scripts/drone/utils/images.star +++ b/scripts/drone/utils/images.star @@ -8,9 +8,10 @@ load( "nodejs_version", ) +# "go" image can be switched back to golang:{}-alpine once this is resolved https://github.com/mattn/go-sqlite3/pull/1177#issuecomment-1849176090 images = { "git": "alpine/git:2.40.1", - "go": "golang:{}-alpine".format(golang_version), + "go": "golang:{}-alpine3.18".format(golang_version), "node": "node:{}-alpine".format(nodejs_version), "cloudsdk": "google/cloud-sdk:431.0.0", "publish": "grafana/grafana-ci-deploy:1.3.3", diff --git a/scripts/drone/variables.star b/scripts/drone/variables.star index 8e9e1edd18c..98ce1061575 100644 --- a/scripts/drone/variables.star +++ b/scripts/drone/variables.star @@ -3,7 +3,7 @@ global variables """ grabpl_version = "v3.0.42" -golang_version = "1.21.3" +golang_version = "1.21.5" # nodejs_version should match what's in ".nvmrc", but without the v prefix. nodejs_version = "20.9.0"