Files
grafana-zabbix/.circleci/config.yml
2020-09-02 11:45:19 +03:00

343 lines
9.2 KiB
YAML

version: 2.1
aliases:
# Workflow filters
- &filter-not-release-or-master
tags:
ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
branches:
ignore:
- master
- /^release-[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
- docs
- gh-pages
- &filter-only-master
branches:
only: master
- &filter-only-release
branches:
ignore: /.*/
tags:
only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
- &filter-docs
branches:
only: docs
executors:
e2e_exec:
docker:
- image: srclosson/grafana-plugin-ci-e2e:latest
jobs:
build:
working_directory: ~/alexanderzobnin/grafana-zabbix
docker:
- image: circleci/golang:1.14-node
environment:
YARN_NO_PROGRESS: "true"
steps:
- checkout
- restore_cache:
keys:
- dependency-cache-npm-{{ checksum "yarn.lock" }}
- restore_cache:
keys:
- dependency-cache-go-{{ checksum "go.sum" }}
- run:
name: Install Dependencies
command: 'make install'
no_output_timeout: 15m
- save_cache:
key: dependency-cache-npm-{{ checksum "yarn.lock" }}
paths:
- ./node_modules
- save_cache:
key: dependency-cache-go-{{ checksum "go.sum" }}
paths:
- ./vendor
- /go/pkg/mod
- run: make build
lint:
working_directory: ~/alexanderzobnin/grafana-zabbix
docker:
- image: circleci/golang:1.14-node
steps:
- checkout
- restore_cache:
keys:
- dependency-cache-npm-{{ checksum "yarn.lock" }}
- restore_cache:
keys:
- dependency-cache-go-{{ checksum "go.sum" }}
- run:
name: Install Dependencies
command: 'make install'
no_output_timeout: 15m
- save_cache:
key: dependency-cache-npm-{{ checksum "yarn.lock" }}
paths:
- ./node_modules
- save_cache:
key: dependency-cache-go-{{ checksum "go.sum" }}
paths:
- ./vendor
- /go/pkg/mod
- run: make lint
test:
working_directory: ~/alexanderzobnin/grafana-zabbix
environment:
CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
docker:
- image: circleci/golang:1.14-node
steps:
- checkout
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
# In many cases you can simplify this from what is generated here.
# 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/'
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
- restore_cache:
keys:
- dependency-cache-npm-{{ checksum "yarn.lock" }}
- restore_cache:
keys:
- dependency-cache-go-{{ checksum "go.sum" }}
- run:
name: Install Dependencies
command: 'make install'
no_output_timeout: 15m
- save_cache:
key: dependency-cache-npm-{{ checksum "yarn.lock" }}
paths:
- ./node_modules
- save_cache:
key: dependency-cache-go-{{ checksum "go.sum" }}
paths:
- ./vendor
- /go/pkg/mod
- run: make test-ci
- run: bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"
- store_test_results:
path: /tmp/circleci-test-results
- store_artifacts:
path: /tmp/circleci-artifacts
- store_artifacts:
path: /tmp/circleci-test-results
get-plugin:
working_directory: ~/alexanderzobnin/grafana-zabbix
docker:
- image: circleci/golang:1.14-node
environment:
YARN_NO_PROGRESS: "true"
steps:
- checkout
- restore_cache:
keys:
- dependency-cache-npm-{{ checksum "yarn.lock" }}
- restore_cache:
keys:
- dependency-cache-go-{{ checksum "go.sum" }}
- run:
name: Install Dependencies
command: 'make install'
no_output_timeout: 15m
- save_cache:
key: dependency-cache-npm-{{ checksum "yarn.lock" }}
paths:
- ./node_modules
- save_cache:
key: dependency-cache-go-{{ checksum "go.sum" }}
paths:
- ./vendor
- /go/pkg/mod
- persist_to_workspace:
root: ~/alexanderzobnin/
paths:
- grafana-zabbix
package-plugin:
executor: e2e_exec
working_directory: ~/alexanderzobnin/grafana-zabbix
steps:
- add_ssh_keys:
fingerprints:
- ${GITHUB_SSH_FINGERPRINT}
- attach_workspace:
at: ~/alexanderzobnin
- run:
name: Build plugin for all platforms
command: 'make dist'
no_output_timeout: 15m
- run:
name: Prepare plugin for packaging
command: |
mkdir -p ci/jobs/build_plugin
mv dist/ ci/jobs/build_plugin
- run:
name: Package and sign plugin
command: yarn grafana-toolkit plugin:ci-package
no_output_timeout: 15m
- persist_to_workspace:
root: ~/alexanderzobnin/
paths:
- grafana-zabbix
- store_artifacts:
path: ci/packages
make-github-release:
working_directory: ~/alexanderzobnin/grafana-zabbix
docker:
- image: circleci/golang:1.14-node
environment:
steps:
- attach_workspace:
at: ~/alexanderzobnin
- run:
name: Prepare assets
command: mv ci/packages/* ./
- run:
name: Publish release
command: 'node ./.circleci/github/publishRelease.js'
no_output_timeout: 15m
make-release-commit:
working_directory: ~/alexanderzobnin/grafana-zabbix
docker:
- image: circleci/golang:1.14-node
environment:
CI_GIT_USER: CircleCI
CI_GIT_EMAIL: ci@grafana.com
steps:
- add_ssh_keys:
fingerprints:
- ${GITHUB_PROJECT_SSH_KEY_FINGERPRINT}
- checkout
- restore_cache:
keys:
- dependency-cache-npm-{{ checksum "yarn.lock" }}
- restore_cache:
keys:
- dependency-cache-go-{{ checksum "go.sum" }}
- run:
name: Install Dependencies
command: 'make install'
no_output_timeout: 15m
- save_cache:
key: dependency-cache-npm-{{ checksum "yarn.lock" }}
paths:
- ./node_modules
- save_cache:
key: dependency-cache-go-{{ checksum "go.sum" }}
paths:
- ./vendor
- /go/pkg/mod
- run: ./.circleci/make-release.sh
build-docs:
working_directory: ~/grafana-zabbix
docker:
- image: circleci/python:2.7
steps:
- run:
name: install git lfs
command: 'curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash'
- run: sudo apt-get install git-lfs
- run: git lfs install
- run: sudo pip install --upgrade pip
- run: sudo pip install mkdocs
- checkout
- run: git lfs fetch --all
- run: cd docs && mkdocs build --clean
- persist_to_workspace:
root: .
paths:
- docs/site
deploy-docs:
working_directory: ~/grafana-zabbix
docker:
- image: circleci/golang:1.14-node
environment:
GH_PAGES_BRANCH: gh-pages
CI_GIT_USER: CircleCI
CI_GIT_EMAIL: ci@grafana.com
steps:
- add_ssh_keys:
fingerprints:
- ${GITHUB_PROJECT_SSH_KEY_FINGERPRINT}
- checkout
- attach_workspace:
at: ../gh-pages
- run: ./.circleci/deploy-docs.sh
codespell:
docker:
- image: circleci/python
steps:
- checkout
- run: sudo pip install codespell
- run: codespell -S './.git*,./src/img*,./go.sum,./yarn.lock' -L que --ignore-words=./.codespell_ignore
workflows:
version: 2
build-master:
jobs:
- build:
filters: *filter-only-master
- codespell:
filters: *filter-only-master
- lint:
filters: *filter-only-master
- test:
filters: *filter-only-master
build-branches-and-prs:
jobs:
- build:
filters: *filter-not-release-or-master
- codespell:
filters: *filter-not-release-or-master
- lint:
filters: *filter-not-release-or-master
- test:
filters: *filter-not-release-or-master
build-release:
jobs:
- build:
filters: *filter-only-release
- codespell:
filters: *filter-only-release
- lint:
filters: *filter-only-release
- test:
filters: *filter-only-release
- get-plugin:
requires:
- build
- codespell
- lint
- test
filters: *filter-only-release
- package-plugin:
requires:
- get-plugin
filters: *filter-only-release
- make-github-release:
requires:
- package-plugin
filters: *filter-only-release
build-docs:
jobs:
- build-docs:
filters: *filter-docs
- deploy-docs:
requires:
- build-docs
filters: *filter-docs