mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
CircleCI: Build and publish Docker images in same job (#23092)
* CircleCI: Build and publish Docker images in same job * CircleCI: Adjust dependency graph * CircleCI: Specify grabpl concurrency * CircleCI: Adjust resource classes
This commit is contained in:
parent
a4308fffe7
commit
c191bf64aa
@ -48,7 +48,7 @@ jobs:
|
||||
- run:
|
||||
name: Install Grafana Build Pipeline
|
||||
command: |
|
||||
curl -fLO https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v0.2.4/grabpl
|
||||
curl -fLO https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v0.2.5/grabpl
|
||||
chmod +x grabpl
|
||||
mkdir bin
|
||||
mv grabpl bin/
|
||||
@ -205,7 +205,6 @@ jobs:
|
||||
|
||||
build-oss-windows-installer:
|
||||
executor: windows-installer
|
||||
resource_class: large
|
||||
steps:
|
||||
- attach_workspace:
|
||||
at: /tmp/workspace
|
||||
@ -238,7 +237,6 @@ jobs:
|
||||
|
||||
build-enterprise-windows-installer:
|
||||
executor: windows-installer
|
||||
resource_class: large
|
||||
steps:
|
||||
- run:
|
||||
name: Exit if forked PR
|
||||
@ -312,7 +310,6 @@ jobs:
|
||||
|
||||
package-oss:
|
||||
executor: grafana-build
|
||||
resource_class: large
|
||||
steps:
|
||||
- attach_workspace:
|
||||
at: /tmp/workspace
|
||||
@ -333,16 +330,16 @@ jobs:
|
||||
|
||||
if [[ -n $CIRCLE_TAG ]]; then
|
||||
# A release build
|
||||
/tmp/workspace/bin/grabpl package --edition oss $CIRCLE_TAG
|
||||
/tmp/workspace/bin/grabpl package --jobs 4 --edition oss $CIRCLE_TAG
|
||||
elif [[ $CIRCLE_BRANCH == "chore/test-release-pipeline" ]]; then
|
||||
# We're testing the release pipeline
|
||||
/tmp/workspace/bin/grabpl package --edition oss v6.7.0-beta1
|
||||
/tmp/workspace/bin/grabpl package --jobs 4 --edition oss v6.7.0-beta1
|
||||
elif [[ $CIRCLE_BRANCH == "master" ]]; then
|
||||
# A master build
|
||||
/tmp/workspace/bin/grabpl package --edition oss --build-id $CIRCLE_WORKFLOW_ID
|
||||
/tmp/workspace/bin/grabpl package --jobs 4 --edition oss --build-id $CIRCLE_WORKFLOW_ID
|
||||
else
|
||||
# A PR build
|
||||
/tmp/workspace/bin/grabpl package --edition oss --build-id $CIRCLE_WORKFLOW_ID --variants \
|
||||
/tmp/workspace/bin/grabpl package --jobs 4 --edition oss --build-id $CIRCLE_WORKFLOW_ID --variants \
|
||||
linux-x64,linux-x64-musl,osx64,win64
|
||||
fi
|
||||
- run:
|
||||
@ -365,7 +362,6 @@ jobs:
|
||||
|
||||
package-enterprise:
|
||||
executor: grafana-build
|
||||
resource_class: large
|
||||
steps:
|
||||
- run:
|
||||
name: Exit if forked PR
|
||||
@ -388,16 +384,16 @@ jobs:
|
||||
command: |
|
||||
if [[ -n $CIRCLE_TAG ]]; then
|
||||
# A release build
|
||||
/tmp/workspace/bin/grabpl package --edition enterprise $CIRCLE_TAG
|
||||
/tmp/workspace/bin/grabpl package --jobs 4 --edition enterprise $CIRCLE_TAG
|
||||
elif [[ $CIRCLE_BRANCH == "chore/test-release-pipeline" ]]; then
|
||||
# We're testing the release pipeline
|
||||
/tmp/workspace/bin/grabpl package --edition enterprise v6.7.0-beta1
|
||||
/tmp/workspace/bin/grabpl package --jobs 4 --edition enterprise v6.7.0-beta1
|
||||
elif [[ $CIRCLE_BRANCH == "master" ]]; then
|
||||
# A master build
|
||||
/tmp/workspace/bin/grabpl package --edition enterprise --build-id $CIRCLE_WORKFLOW_ID
|
||||
/tmp/workspace/bin/grabpl package --jobs 4 --edition enterprise --build-id $CIRCLE_WORKFLOW_ID
|
||||
else
|
||||
# A PR build
|
||||
/tmp/workspace/bin/grabpl package --edition enterprise --build-id $CIRCLE_WORKFLOW_ID --variants \
|
||||
/tmp/workspace/bin/grabpl package --jobs 4 --edition enterprise --build-id $CIRCLE_WORKFLOW_ID --variants \
|
||||
linux-x64,linux-x64-musl,osx64,win64
|
||||
fi
|
||||
- run:
|
||||
@ -420,7 +416,6 @@ jobs:
|
||||
|
||||
publish-packages:
|
||||
description: "Publish packages"
|
||||
resource_class: large
|
||||
parameters:
|
||||
edition:
|
||||
type: string
|
||||
@ -502,8 +497,7 @@ jobs:
|
||||
when: on_success
|
||||
|
||||
build-docker-images:
|
||||
description: "Build Docker images"
|
||||
resource_class: large
|
||||
description: "Build/publish Docker images"
|
||||
parameters:
|
||||
edition:
|
||||
type: string
|
||||
@ -536,64 +530,28 @@ jobs:
|
||||
command: |
|
||||
if [[ -n $CIRCLE_TAG || $CIRCLE_BRANCH == "chore/test-release-pipeline" || $CIRCLE_BRANCH == "master" ]]; then
|
||||
# It's a full build
|
||||
/tmp/workspace/bin/grabpl build-docker --edition << parameters.edition >> \
|
||||
/tmp/workspace/bin/grabpl build-docker --jobs 4 --edition << parameters.edition >> \
|
||||
--ubuntu=<< parameters.ubuntu >>
|
||||
else
|
||||
# We're testing a branch
|
||||
/tmp/workspace/bin/grabpl build-docker --edition << parameters.edition >> \
|
||||
/tmp/workspace/bin/grabpl build-docker --jobs 4 --edition << parameters.edition >> \
|
||||
--ubuntu=<< parameters.ubuntu >> --archs amd64
|
||||
fi
|
||||
mkdir -p << parameters.edition >>/docker
|
||||
mv docker/*.tar << parameters.edition >>/docker/
|
||||
- persist_to_workspace:
|
||||
root: .
|
||||
paths:
|
||||
- << parameters.edition >>/docker/*.tar
|
||||
- run:
|
||||
name: CI job failed
|
||||
command: ./scripts/ci-job-failed.sh
|
||||
when: on_fail
|
||||
- run:
|
||||
name: CI job succeeded
|
||||
command: ./scripts/ci-job-succeeded.sh
|
||||
when: on_success
|
||||
|
||||
publish-docker-images:
|
||||
description: Publish Docker images
|
||||
resource_class: large
|
||||
parameters:
|
||||
edition:
|
||||
type: string
|
||||
ubuntu:
|
||||
type: boolean
|
||||
executor: docker
|
||||
steps:
|
||||
- run:
|
||||
name: Exit if forked PR
|
||||
name: Exit if PR
|
||||
command: |
|
||||
if [[ -n "$CIRCLE_PR_NUMBER" ]]; then
|
||||
echo "Nothing to do for forked PRs, so marking this step successful"
|
||||
if [[ -z $CIRCLE_TAG && $CIRCLE_BRANCH != "chore/test-release-pipeline" && $CIRCLE_BRANCH != "master" ]]; then
|
||||
echo "Nothing to do for PRs, so marking this step successful"
|
||||
circleci step halt
|
||||
fi
|
||||
- attach_workspace:
|
||||
at: /tmp/workspace
|
||||
- checkout
|
||||
- run:
|
||||
name: CI job started
|
||||
command: ./scripts/ci-job-started.sh
|
||||
- run:
|
||||
name: Copy artifacts from workspace
|
||||
command: |
|
||||
cp -r /tmp/workspace/<< parameters.edition >>/docker .
|
||||
cp -r /tmp/workspace/<< parameters.edition >>/dist .
|
||||
- run:
|
||||
name: Publish Docker images
|
||||
command: |
|
||||
if [[ $CIRCLE_BRANCH == "chore/test-release-pipeline" ]]; then
|
||||
# We're testing the release pipeline
|
||||
/tmp/workspace/bin/grabpl publish-docker --edition << parameters.edition >> --ubuntu=<< parameters.ubuntu >> --dry-run
|
||||
/tmp/workspace/bin/grabpl publish-docker --jobs 4 --edition << parameters.edition >> --ubuntu=<< parameters.ubuntu >> --dry-run
|
||||
else
|
||||
/tmp/workspace/bin/grabpl publish-docker --edition << parameters.edition >> --ubuntu=<< parameters.ubuntu >>
|
||||
/tmp/workspace/bin/grabpl publish-docker --jobs 4 --edition << parameters.edition >> --ubuntu=<< parameters.ubuntu >>
|
||||
fi
|
||||
- run:
|
||||
name: CI job failed
|
||||
@ -605,7 +563,6 @@ jobs:
|
||||
when: on_success
|
||||
|
||||
end-to-end-tests:
|
||||
resource_class: large
|
||||
docker:
|
||||
- image: circleci/node:12-browsers
|
||||
steps:
|
||||
@ -641,7 +598,6 @@ jobs:
|
||||
destination: logs
|
||||
|
||||
mysql-integration-test:
|
||||
resource_class: large
|
||||
docker:
|
||||
- image: circleci/golang:1.13.4
|
||||
- image: circleci/mysql:5.6-ram
|
||||
@ -673,7 +629,6 @@ jobs:
|
||||
when: on_success
|
||||
|
||||
postgres-integration-test:
|
||||
resource_class: large
|
||||
docker:
|
||||
- image: circleci/golang:1.13.4
|
||||
- image: circleci/postgres:9.3-ram
|
||||
@ -722,7 +677,6 @@ jobs:
|
||||
lint-go:
|
||||
docker:
|
||||
- image: circleci/golang:1.13.4
|
||||
resource_class: large
|
||||
working_directory: /go/src/github.com/grafana/grafana
|
||||
environment:
|
||||
# we need CGO because of go-sqlite3
|
||||
@ -756,7 +710,6 @@ jobs:
|
||||
-conf=./scripts/go/configs/gosec.json ./pkg/...
|
||||
|
||||
test-frontend:
|
||||
resource_class: large
|
||||
docker:
|
||||
- image: circleci/node:12
|
||||
steps:
|
||||
@ -932,6 +885,8 @@ workflows:
|
||||
name: build-oss-backend-armv6
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
edition: oss
|
||||
@ -939,6 +894,8 @@ workflows:
|
||||
name: build-oss-backend-armv7
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
edition: oss
|
||||
@ -946,6 +903,8 @@ workflows:
|
||||
name: build-oss-backend-armv7-musl
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
edition: oss
|
||||
@ -953,6 +912,8 @@ workflows:
|
||||
name: build-oss-backend-arm64
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
edition: oss
|
||||
@ -960,6 +921,8 @@ workflows:
|
||||
name: build-oss-backend-arm64-musl
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
edition: oss
|
||||
@ -967,6 +930,8 @@ workflows:
|
||||
name: build-oss-backend-osx64
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
edition: oss
|
||||
@ -974,6 +939,8 @@ workflows:
|
||||
name: build-oss-backend-win64
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
edition: oss
|
||||
@ -981,6 +948,8 @@ workflows:
|
||||
name: build-oss-backend-linux-x64
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
edition: oss
|
||||
@ -988,12 +957,16 @@ workflows:
|
||||
name: build-oss-backend-linux-x64-musl
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-frontend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
name: build-oss-frontend
|
||||
edition: oss
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
name: build-enterprise-backend-armv6
|
||||
@ -1001,6 +974,8 @@ workflows:
|
||||
variant: armv6
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
name: build-enterprise-backend-armv7
|
||||
@ -1008,6 +983,8 @@ workflows:
|
||||
variant: armv7
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
name: build-enterprise-backend-armv7-musl
|
||||
@ -1015,6 +992,8 @@ workflows:
|
||||
variant: armv7-musl
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
name: build-enterprise-backend-arm64
|
||||
@ -1022,6 +1001,8 @@ workflows:
|
||||
variant: arm64
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
filters: *filter-master-or-release
|
||||
name: build-enterprise-backend-arm64-musl
|
||||
@ -1029,6 +1010,8 @@ workflows:
|
||||
variant: arm64-musl
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
name: build-enterprise-backend-osx64
|
||||
@ -1036,6 +1019,8 @@ workflows:
|
||||
variant: osx64
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
name: build-enterprise-backend-win64
|
||||
@ -1043,6 +1028,8 @@ workflows:
|
||||
variant: win64
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
name: build-enterprise-backend-linux-x64
|
||||
@ -1050,6 +1037,8 @@ workflows:
|
||||
variant: linux-x64
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-backend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
name: build-enterprise-backend-linux-x64-musl
|
||||
@ -1057,12 +1046,16 @@ workflows:
|
||||
variant: linux-x64-musl
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-frontend:
|
||||
# No filters, meaning this job runs for all branches
|
||||
name: build-enterprise-frontend
|
||||
edition: enterprise
|
||||
requires:
|
||||
- install-grabpl
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-release-publisher:
|
||||
filters: *filter-master-or-release
|
||||
- codespell:
|
||||
@ -1091,11 +1084,15 @@ workflows:
|
||||
requires:
|
||||
- install-grabpl
|
||||
- lint-go
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- postgres-integration-test:
|
||||
# No filters, meaning this job runs for all branches
|
||||
requires:
|
||||
- install-grabpl
|
||||
- lint-go
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- package-oss:
|
||||
# No filters, meaning this job runs for all branches
|
||||
requires:
|
||||
@ -1147,7 +1144,7 @@ workflows:
|
||||
- release-next-packages:
|
||||
filters: *filter-only-master
|
||||
requires:
|
||||
- test-frontend
|
||||
- end-to-end-tests
|
||||
- release-packages:
|
||||
filters: *filter-only-release
|
||||
requires:
|
||||
@ -1170,13 +1167,17 @@ workflows:
|
||||
- build-enterprise-windows-installer
|
||||
- end-to-end-tests
|
||||
- build-release-publisher
|
||||
- publish-storybook
|
||||
- publish-storybook:
|
||||
requires:
|
||||
- test-backend
|
||||
- test-frontend
|
||||
- build-docker-images:
|
||||
# No filters, meaning this job runs for all branches
|
||||
name: build-oss-docker-images
|
||||
edition: oss
|
||||
ubuntu: false
|
||||
requires:
|
||||
- end-to-end-tests
|
||||
- package-oss
|
||||
- build-oss-windows-installer
|
||||
- build-docker-images:
|
||||
@ -1185,6 +1186,7 @@ workflows:
|
||||
edition: oss
|
||||
ubuntu: true
|
||||
requires:
|
||||
- end-to-end-tests
|
||||
- package-oss
|
||||
- build-oss-windows-installer
|
||||
- build-docker-images:
|
||||
@ -1193,6 +1195,7 @@ workflows:
|
||||
edition: enterprise
|
||||
ubuntu: false
|
||||
requires:
|
||||
- end-to-end-tests
|
||||
- package-enterprise
|
||||
- build-enterprise-windows-installer
|
||||
- build-docker-images:
|
||||
@ -1201,50 +1204,22 @@ workflows:
|
||||
edition: enterprise
|
||||
ubuntu: true
|
||||
requires:
|
||||
- end-to-end-tests
|
||||
- package-enterprise
|
||||
- build-enterprise-windows-installer
|
||||
- end-to-end-tests:
|
||||
# No filters, meaning this job runs for all branches
|
||||
requires:
|
||||
- package-oss
|
||||
- publish-docker-images:
|
||||
filters: *filter-master-or-release
|
||||
name: publish-oss-docker-images
|
||||
edition: oss
|
||||
ubuntu: false
|
||||
requires:
|
||||
- build-oss-docker-images
|
||||
- end-to-end-tests
|
||||
- publish-docker-images:
|
||||
filters: *filter-master-or-release
|
||||
name: publish-oss-ubuntu-docker-images
|
||||
edition: oss
|
||||
ubuntu: true
|
||||
requires:
|
||||
- build-oss-ubuntu-docker-images
|
||||
- end-to-end-tests
|
||||
- publish-docker-images:
|
||||
filters: *filter-master-or-release
|
||||
name: publish-enterprise-docker-images
|
||||
edition: enterprise
|
||||
ubuntu: false
|
||||
requires:
|
||||
- build-enterprise-docker-images
|
||||
- end-to-end-tests
|
||||
- publish-docker-images:
|
||||
filters: *filter-master-or-release
|
||||
name: publish-enterprise-ubuntu-docker-images
|
||||
edition: enterprise
|
||||
ubuntu: true
|
||||
requires:
|
||||
- build-enterprise-ubuntu-docker-images
|
||||
- end-to-end-tests
|
||||
- build-docs-website:
|
||||
filters: *filter-not-release-or-master
|
||||
requires:
|
||||
- mysql-integration-test
|
||||
- postgres-integration-test
|
||||
- deploy-to-kubernetes:
|
||||
filters: *filter-only-master
|
||||
requires:
|
||||
- publish-enterprise-docker-images
|
||||
- build-enterprise-docker-images
|
||||
|
||||
nightly:
|
||||
triggers:
|
||||
|
Loading…
Reference in New Issue
Block a user