mirror of
https://github.com/grafana/grafana.git
synced 2024-11-26 19:00:54 -06:00
66e71b66dd
apparently key is a reserved keyword in mysql. and the error messages doesnt mention that. can I please have 6h back?
575 lines
19 KiB
YAML
575 lines
19 KiB
YAML
aliases:
|
|
# Workflow filters
|
|
- &filter-only-release
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
|
|
- &filter-not-release-or-master
|
|
tags:
|
|
ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
|
|
branches:
|
|
ignore: master
|
|
- &filter-only-master
|
|
branches:
|
|
only: master
|
|
|
|
version: 2
|
|
|
|
jobs:
|
|
mysql-integration-test:
|
|
docker:
|
|
- image: circleci/golang:1.11.5
|
|
- image: circleci/mysql:5.6-ram
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: rootpass
|
|
MYSQL_DATABASE: grafana_tests
|
|
MYSQL_USER: grafana
|
|
MYSQL_PASSWORD: password
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run: sudo apt update
|
|
- run: sudo apt install -y mysql-client
|
|
- run: dockerize -wait tcp://127.0.0.1:3306 -timeout 120s
|
|
- run: cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h 127.0.0.1 -P 3306 -u root -prootpass
|
|
- run:
|
|
name: mysql integration tests
|
|
command: './scripts/circle-test-mysql.sh'
|
|
|
|
postgres-integration-test:
|
|
docker:
|
|
- image: circleci/golang:1.11.5
|
|
- image: circleci/postgres:9.3-ram
|
|
environment:
|
|
POSTGRES_USER: grafanatest
|
|
POSTGRES_PASSWORD: grafanatest
|
|
POSTGRES_DB: grafanatest
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run: sudo apt update
|
|
- run: sudo apt install -y postgresql-client
|
|
- run: dockerize -wait tcp://127.0.0.1:5432 -timeout 120s
|
|
- run: 'PGPASSWORD=grafanatest psql -p 5432 -h 127.0.0.1 -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql'
|
|
- run:
|
|
name: postgres integration tests
|
|
command: './scripts/circle-test-postgres.sh'
|
|
|
|
cache-server-test:
|
|
docker:
|
|
- image: circleci/golang:1.11.5
|
|
- image: circleci/redis:4-alpine
|
|
- image: memcached
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run: dockerize -wait tcp://127.0.0.1:11211 -timeout 120s
|
|
- run: dockerize -wait tcp://127.0.0.1:6379 -timeout 120s
|
|
- run:
|
|
name: cache server tests
|
|
command: './scripts/circle-test-cache-servers.sh'
|
|
|
|
codespell:
|
|
docker:
|
|
- image: circleci/python
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: install codespell
|
|
command: 'sudo pip install codespell'
|
|
- run:
|
|
# Important: all words have to be in lowercase, and separated by "\n".
|
|
name: exclude known exceptions
|
|
command: 'echo -e "unknwon" > words_to_ignore.txt'
|
|
- run:
|
|
name: check documentation spelling errors
|
|
command: 'codespell -I ./words_to_ignore.txt docs/'
|
|
|
|
gometalinter:
|
|
docker:
|
|
- image: circleci/golang:1.11.5
|
|
environment:
|
|
# we need CGO because of go-sqlite3
|
|
CGO_ENABLED: 1
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Gometalinter tests
|
|
command: './scripts/gometalinter.sh'
|
|
|
|
test-frontend:
|
|
docker:
|
|
- image: circleci/node:8
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
key: dependency-cache-{{ checksum "yarn.lock" }}
|
|
- run:
|
|
name: yarn install
|
|
command: 'yarn install --pure-lockfile --no-progress'
|
|
no_output_timeout: 15m
|
|
- save_cache:
|
|
key: dependency-cache-{{ checksum "yarn.lock" }}
|
|
paths:
|
|
- node_modules
|
|
- run:
|
|
name: frontend tests
|
|
command: './scripts/circle-test-frontend.sh'
|
|
|
|
test-backend:
|
|
docker:
|
|
- image: circleci/golang:1.11.5
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: build backend and run go tests
|
|
command: './scripts/circle-test-backend.sh'
|
|
|
|
build-all:
|
|
docker:
|
|
- image: grafana/build-container:1.2.3
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: prepare build tools
|
|
command: '/tmp/bootstrap.sh'
|
|
- restore_cache:
|
|
key: phantomjs-binaries-{{ checksum "scripts/build/download-phantomjs.sh" }}
|
|
- run:
|
|
name: download phantomjs binaries
|
|
command: './scripts/build/download-phantomjs.sh'
|
|
- save_cache:
|
|
key: phantomjs-binaries-{{ checksum "scripts/build/download-phantomjs.sh" }}
|
|
paths:
|
|
- /tmp/phantomjs
|
|
- run:
|
|
name: build and package grafana
|
|
command: './scripts/build/build-all.sh'
|
|
- run:
|
|
name: sign packages
|
|
command: './scripts/build/sign_packages.sh'
|
|
- run:
|
|
name: verify signed packages
|
|
command: |
|
|
mkdir -p ~/.rpmdb/pubkeys
|
|
curl -s https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana > ~/.rpmdb/pubkeys/grafana.key
|
|
./scripts/build/verify_signed_packages.sh dist/*.rpm
|
|
- run:
|
|
name: sha-sum packages
|
|
command: 'go run build.go sha-dist'
|
|
- run:
|
|
name: Test and build Grafana.com release publisher
|
|
command: 'cd scripts/build/release_publisher && go test . && go build -o release_publisher .'
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- dist/grafana*
|
|
- scripts/*.sh
|
|
- scripts/build/release_publisher/release_publisher
|
|
- scripts/build/publish.sh
|
|
|
|
build:
|
|
docker:
|
|
- image: grafana/build-container:1.2.3
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: prepare build tools
|
|
command: '/tmp/bootstrap.sh'
|
|
- run:
|
|
name: build and package grafana
|
|
command: './scripts/build/build.sh'
|
|
- run:
|
|
name: sign packages
|
|
command: './scripts/build/sign_packages.sh'
|
|
- run:
|
|
name: sha-sum packages
|
|
command: 'go run build.go sha-dist'
|
|
- run:
|
|
name: Test Grafana.com release publisher
|
|
command: 'cd scripts/build/release_publisher && go test .'
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- dist/grafana*
|
|
|
|
grafana-docker-master:
|
|
machine:
|
|
image: circleci/classic:201808-01
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run: docker info
|
|
- run: docker run --privileged linuxkit/binfmt:v0.6
|
|
- run: cp dist/grafana-latest.linux-*.tar.gz packaging/docker
|
|
- run: cd packaging/docker && ./build-deploy.sh "master-${CIRCLE_SHA1}"
|
|
- run: rm packaging/docker/grafana-latest.linux-*.tar.gz
|
|
- run: cp enterprise-dist/grafana-enterprise-*.linux-amd64.tar.gz packaging/docker/grafana-latest.linux-x64.tar.gz
|
|
- run: cd packaging/docker && ./build-enterprise.sh "master"
|
|
|
|
|
|
grafana-docker-pr:
|
|
machine:
|
|
image: circleci/classic:201808-01
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run: docker info
|
|
- run: docker run --privileged linuxkit/binfmt:v0.6
|
|
- run: cp dist/grafana-latest.linux-*.tar.gz packaging/docker
|
|
- run: cd packaging/docker && ./build.sh "${CIRCLE_SHA1}"
|
|
|
|
grafana-docker-release:
|
|
machine:
|
|
image: circleci/classic:201808-01
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run: docker info
|
|
- run: docker run --privileged linuxkit/binfmt:v0.6
|
|
- run: cp dist/grafana-latest.linux-*.tar.gz packaging/docker
|
|
- run: cd packaging/docker && ./build-deploy.sh "${CIRCLE_TAG}"
|
|
- run: rm packaging/docker/grafana-latest.linux-*.tar.gz
|
|
- run: cp enterprise-dist/grafana-enterprise-*.linux-amd64.tar.gz packaging/docker/grafana-latest.linux-x64.tar.gz
|
|
- run: cd packaging/docker && ./build-enterprise.sh "${CIRCLE_TAG}"
|
|
|
|
build-enterprise:
|
|
docker:
|
|
- image: grafana/build-container:1.2.3
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: prepare build tools
|
|
command: '/tmp/bootstrap.sh'
|
|
- run:
|
|
name: checkout enterprise
|
|
command: './scripts/build/prepare-enterprise.sh'
|
|
- run:
|
|
name: test enterprise
|
|
command: 'go test ./pkg/extensions/...'
|
|
- run:
|
|
name: build and package enterprise
|
|
command: './scripts/build/build.sh -enterprise'
|
|
- run:
|
|
name: sign packages
|
|
command: './scripts/build/sign_packages.sh'
|
|
- run:
|
|
name: sha-sum packages
|
|
command: 'go run build.go sha-dist'
|
|
- run:
|
|
name: move enterprise packages into their own folder
|
|
command: 'mv dist enterprise-dist'
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- enterprise-dist/grafana-enterprise*
|
|
|
|
build-all-enterprise:
|
|
docker:
|
|
- image: grafana/build-container:1.2.3
|
|
working_directory: /go/src/github.com/grafana/grafana
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: prepare build tools
|
|
command: '/tmp/bootstrap.sh'
|
|
- run:
|
|
name: checkout enterprise
|
|
command: './scripts/build/prepare-enterprise.sh'
|
|
- restore_cache:
|
|
key: phantomjs-binaries-{{ checksum "scripts/build/download-phantomjs.sh" }}
|
|
- run:
|
|
name: download phantomjs binaries
|
|
command: './scripts/build/download-phantomjs.sh'
|
|
- save_cache:
|
|
key: phantomjs-binaries-{{ checksum "scripts/build/download-phantomjs.sh" }}
|
|
paths:
|
|
- /tmp/phantomjs
|
|
- run:
|
|
name: test enterprise
|
|
command: 'go test ./pkg/extensions/...'
|
|
- run:
|
|
name: build and package grafana
|
|
command: './scripts/build/build-all.sh -enterprise'
|
|
- run:
|
|
name: sign packages
|
|
command: './scripts/build/sign_packages.sh'
|
|
- run:
|
|
name: verify signed packages
|
|
command: |
|
|
mkdir -p ~/.rpmdb/pubkeys
|
|
curl -s https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana > ~/.rpmdb/pubkeys/grafana.key
|
|
./scripts/build/verify_signed_packages.sh dist/*.rpm
|
|
- run:
|
|
name: sha-sum packages
|
|
command: 'go run build.go sha-dist'
|
|
- run:
|
|
name: move enterprise packages into their own folder
|
|
command: 'mv dist enterprise-dist'
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- enterprise-dist/grafana-enterprise*
|
|
|
|
deploy-enterprise-master:
|
|
docker:
|
|
- image: grafana/grafana-ci-deploy:1.2.0
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: gcp credentials
|
|
command: 'echo ${GCP_GRAFANA_UPLOAD_KEY} > /tmp/gcpkey.json'
|
|
- run:
|
|
name: sign in to gcp
|
|
command: '/opt/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file=/tmp/gcpkey.json'
|
|
- run:
|
|
name: deploy to s3
|
|
command: 'aws s3 sync ./enterprise-dist s3://$ENTERPRISE_BUCKET_NAME/master'
|
|
- run:
|
|
name: deploy to gcp
|
|
command: '/opt/google-cloud-sdk/bin/gsutil cp ./enterprise-dist/* gs://$GCP_BUCKET_NAME/enterprise/master'
|
|
- run:
|
|
name: Deploy to grafana.com
|
|
command: 'cd enterprise-dist && ../scripts/build/release_publisher/release_publisher -apikey ${GRAFANA_COM_API_KEY} -enterprise -from-local'
|
|
|
|
|
|
deploy-enterprise-release:
|
|
docker:
|
|
- image: grafana/grafana-ci-deploy:1.2.0
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: gcp credentials
|
|
command: 'echo ${GCP_GRAFANA_UPLOAD_KEY} > /tmp/gcpkey.json'
|
|
- run:
|
|
name: sign in to gcp
|
|
command: '/opt/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file=/tmp/gcpkey.json'
|
|
- run:
|
|
name: deploy to s3
|
|
command: 'aws s3 sync ./enterprise-dist s3://$ENTERPRISE_BUCKET_NAME/release'
|
|
- run:
|
|
name: deploy to gcp
|
|
command: '/opt/google-cloud-sdk/bin/gsutil cp ./enterprise-dist/* gs://$GCP_BUCKET_NAME/enterprise/release'
|
|
- run:
|
|
name: Deploy to Grafana.com
|
|
command: './scripts/build/publish.sh --enterprise'
|
|
- run:
|
|
name: Load GPG private key
|
|
command: './scripts/build/load-signing-key.sh'
|
|
- run:
|
|
name: Update Debian repository
|
|
command: './scripts/build/update_repo/update-deb.sh "enterprise" "$GPG_KEY_PASSWORD" "$CIRCLE_TAG" "enterprise-dist"'
|
|
- run:
|
|
name: Update RPM repository
|
|
command: './scripts/build/update_repo/update-rpm.sh "enterprise" "$GPG_KEY_PASSWORD" "$CIRCLE_TAG" "enterprise-dist"'
|
|
|
|
|
|
deploy-master:
|
|
docker:
|
|
- image: grafana/grafana-ci-deploy:1.2.0
|
|
steps:
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: deploy to s3
|
|
command: |
|
|
# Also
|
|
cp dist/grafana-latest.linux-x64.tar.gz dist/grafana-master-$(echo "${CIRCLE_SHA1}" | cut -b1-7).linux-x64.tar.gz
|
|
aws s3 sync ./dist s3://$BUCKET_NAME/master
|
|
- run:
|
|
name: Trigger Windows build
|
|
command: './scripts/trigger_windows_build.sh ${APPVEYOR_TOKEN} ${CIRCLE_SHA1} master'
|
|
- run:
|
|
name: gcp credentials
|
|
command: 'echo ${GCP_GRAFANA_UPLOAD_KEY} > /tmp/gcpkey.json'
|
|
- run:
|
|
name: sign in to gcp
|
|
command: '/opt/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file=/tmp/gcpkey.json'
|
|
- run:
|
|
name: deploy to gcp
|
|
command: '/opt/google-cloud-sdk/bin/gsutil cp ./dist/* gs://$GCP_BUCKET_NAME/oss/master'
|
|
- run:
|
|
name: Publish to Grafana.com
|
|
command: |
|
|
rm dist/grafana-master-$(echo "${CIRCLE_SHA1}" | cut -b1-7).linux-x64.tar.gz
|
|
rm dist/*latest*
|
|
cd dist && ../scripts/build/release_publisher/release_publisher -apikey ${GRAFANA_COM_API_KEY} -from-local
|
|
|
|
deploy-release:
|
|
docker:
|
|
- image: grafana/grafana-ci-deploy:1.2.0
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: deploy to s3
|
|
command: 'aws s3 sync ./dist s3://$BUCKET_NAME/release'
|
|
- run:
|
|
name: gcp credentials
|
|
command: 'echo ${GCP_GRAFANA_UPLOAD_KEY} > /tmp/gcpkey.json'
|
|
- run:
|
|
name: sign in to gcp
|
|
command: '/opt/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file=/tmp/gcpkey.json'
|
|
- run:
|
|
name: deploy to gcp
|
|
command: '/opt/google-cloud-sdk/bin/gsutil cp ./dist/* gs://$GCP_BUCKET_NAME/oss/release'
|
|
- run:
|
|
name: Deploy to Grafana.com
|
|
command: './scripts/build/publish.sh'
|
|
- run:
|
|
name: Load GPG private key
|
|
command: './scripts/build/load-signing-key.sh'
|
|
- run:
|
|
name: Update Debian repository
|
|
command: './scripts/build/update_repo/update-deb.sh "oss" "$GPG_KEY_PASSWORD" "$CIRCLE_TAG" "dist"'
|
|
- run:
|
|
name: Update RPM repository
|
|
command: './scripts/build/update_repo/update-rpm.sh "oss" "$GPG_KEY_PASSWORD" "$CIRCLE_TAG" "dist"'
|
|
|
|
workflows:
|
|
version: 2
|
|
build-master:
|
|
jobs:
|
|
- build-all:
|
|
filters: *filter-only-master
|
|
- build-all-enterprise:
|
|
filters: *filter-only-master
|
|
- codespell:
|
|
filters: *filter-only-master
|
|
- gometalinter:
|
|
filters: *filter-only-master
|
|
- test-frontend:
|
|
filters: *filter-only-master
|
|
- test-backend:
|
|
filters: *filter-only-master
|
|
- mysql-integration-test:
|
|
filters: *filter-only-master
|
|
- postgres-integration-test:
|
|
filters: *filter-only-master
|
|
- deploy-master:
|
|
requires:
|
|
- build-all
|
|
- test-backend
|
|
- test-frontend
|
|
- codespell
|
|
- gometalinter
|
|
- mysql-integration-test
|
|
- postgres-integration-test
|
|
filters: *filter-only-master
|
|
- grafana-docker-master:
|
|
requires:
|
|
- build-all
|
|
- build-all-enterprise
|
|
- test-backend
|
|
- test-frontend
|
|
- codespell
|
|
- gometalinter
|
|
- mysql-integration-test
|
|
- postgres-integration-test
|
|
filters: *filter-only-master
|
|
- deploy-enterprise-master:
|
|
requires:
|
|
- build-all
|
|
- test-backend
|
|
- test-frontend
|
|
- codespell
|
|
- gometalinter
|
|
- mysql-integration-test
|
|
- postgres-integration-test
|
|
- build-all-enterprise
|
|
filters: *filter-only-master
|
|
|
|
release:
|
|
jobs:
|
|
- build-all:
|
|
filters: *filter-only-release
|
|
- build-all-enterprise:
|
|
filters: *filter-only-release
|
|
- codespell:
|
|
filters: *filter-only-release
|
|
- gometalinter:
|
|
filters: *filter-only-release
|
|
- test-frontend:
|
|
filters: *filter-only-release
|
|
- test-backend:
|
|
filters: *filter-only-release
|
|
- mysql-integration-test:
|
|
filters: *filter-only-release
|
|
- postgres-integration-test:
|
|
filters: *filter-only-release
|
|
- deploy-release:
|
|
requires:
|
|
- build-all
|
|
- test-backend
|
|
- test-frontend
|
|
- codespell
|
|
- gometalinter
|
|
- mysql-integration-test
|
|
- postgres-integration-test
|
|
filters: *filter-only-release
|
|
- deploy-enterprise-release:
|
|
requires:
|
|
- build-all
|
|
- build-all-enterprise
|
|
- test-backend
|
|
- test-frontend
|
|
- codespell
|
|
- gometalinter
|
|
- mysql-integration-test
|
|
- postgres-integration-test
|
|
filters: *filter-only-release
|
|
- grafana-docker-release:
|
|
requires:
|
|
- build-all
|
|
- build-all-enterprise
|
|
- test-backend
|
|
- test-frontend
|
|
- codespell
|
|
- gometalinter
|
|
- mysql-integration-test
|
|
- postgres-integration-test
|
|
filters: *filter-only-release
|
|
|
|
build-branches-and-prs:
|
|
jobs:
|
|
- build:
|
|
filters: *filter-not-release-or-master
|
|
- codespell:
|
|
filters: *filter-not-release-or-master
|
|
- gometalinter:
|
|
filters: *filter-not-release-or-master
|
|
- test-frontend:
|
|
filters: *filter-not-release-or-master
|
|
- test-backend:
|
|
filters: *filter-not-release-or-master
|
|
- mysql-integration-test:
|
|
filters: *filter-not-release-or-master
|
|
- postgres-integration-test:
|
|
filters: *filter-not-release-or-master
|
|
- cache-server-test:
|
|
filters: *filter-not-release-or-master
|
|
- grafana-docker-pr:
|
|
requires:
|
|
- build
|
|
- test-backend
|
|
- test-frontend
|
|
- codespell
|
|
- gometalinter
|
|
- mysql-integration-test
|
|
- postgres-integration-test
|
|
- cache-server-test
|
|
filters: *filter-not-release-or-master
|