CI: sign plugin during release (#1039)
* Add grafana toolkit package * CI: skip adding binaries to release branch * CI: test signing plugin * CI: skip branch build for test releases * CI: do not use ssh key for fetching * CI: get plugin in a separate image to avoid git LFS error * CI: fix attaching workspace * CI: fix attaching dir * CI: adjust release process * CI: clean up
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
version: 2.1
|
||||||
|
|
||||||
aliases:
|
aliases:
|
||||||
# Workflow filters
|
# Workflow filters
|
||||||
- &filter-not-release-or-master
|
- &filter-not-release-or-master
|
||||||
@@ -21,12 +23,16 @@ aliases:
|
|||||||
branches:
|
branches:
|
||||||
only: docs
|
only: docs
|
||||||
|
|
||||||
version: 2
|
executors:
|
||||||
|
e2e_exec:
|
||||||
|
docker:
|
||||||
|
- image: srclosson/grafana-plugin-ci-e2e:latest
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
working_directory: ~/alexanderzobnin/grafana-zabbix
|
working_directory: ~/alexanderzobnin/grafana-zabbix
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/golang:1.13-node
|
- image: circleci/golang:1.14-node
|
||||||
environment:
|
environment:
|
||||||
YARN_NO_PROGRESS: "true"
|
YARN_NO_PROGRESS: "true"
|
||||||
steps:
|
steps:
|
||||||
@@ -55,7 +61,7 @@ jobs:
|
|||||||
lint:
|
lint:
|
||||||
working_directory: ~/alexanderzobnin/grafana-zabbix
|
working_directory: ~/alexanderzobnin/grafana-zabbix
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/golang:1.13-node
|
- image: circleci/golang:1.14-node
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
@@ -85,7 +91,7 @@ jobs:
|
|||||||
CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
|
CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
|
||||||
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
|
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/golang:1.13-node
|
- image: circleci/golang:1.14-node
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
|
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
|
||||||
@@ -120,13 +126,12 @@ jobs:
|
|||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: /tmp/circleci-test-results
|
path: /tmp/circleci-test-results
|
||||||
|
|
||||||
make-github-release:
|
get-plugin:
|
||||||
working_directory: ~/alexanderzobnin/grafana-zabbix
|
working_directory: ~/alexanderzobnin/grafana-zabbix
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/golang:1.13-node
|
- image: circleci/golang:1.14-node
|
||||||
environment:
|
environment:
|
||||||
CI_GIT_USER: CircleCI
|
YARN_NO_PROGRESS: "true"
|
||||||
CI_GIT_EMAIL: ci@grafana.com
|
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
@@ -148,14 +153,51 @@ jobs:
|
|||||||
paths:
|
paths:
|
||||||
- ./vendor
|
- ./vendor
|
||||||
- /go/pkg/mod
|
- /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:
|
- run:
|
||||||
name: Build plugin for all platforms
|
name: Build plugin for all platforms
|
||||||
command: 'make dist'
|
command: 'make dist'
|
||||||
no_output_timeout: 15m
|
no_output_timeout: 15m
|
||||||
- run:
|
- run:
|
||||||
name: Package plugin
|
name: Prepare plugin for packaging
|
||||||
command: './.circleci/make-package.sh'
|
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
|
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:
|
- run:
|
||||||
name: Publish release
|
name: Publish release
|
||||||
command: 'node ./.circleci/github/publishRelease.js'
|
command: 'node ./.circleci/github/publishRelease.js'
|
||||||
@@ -164,14 +206,14 @@ jobs:
|
|||||||
make-release-commit:
|
make-release-commit:
|
||||||
working_directory: ~/alexanderzobnin/grafana-zabbix
|
working_directory: ~/alexanderzobnin/grafana-zabbix
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/golang:1.13-node
|
- image: circleci/golang:1.14-node
|
||||||
environment:
|
environment:
|
||||||
CI_GIT_USER: CircleCI
|
CI_GIT_USER: CircleCI
|
||||||
CI_GIT_EMAIL: ci@grafana.com
|
CI_GIT_EMAIL: ci@grafana.com
|
||||||
steps:
|
steps:
|
||||||
- add_ssh_keys:
|
- add_ssh_keys:
|
||||||
fingerprints:
|
fingerprints:
|
||||||
- "dc:7e:54:e0:aa:56:4d:e5:60:7b:f3:51:24:2d:d3:29"
|
- ${GITHUB_PROJECT_SSH_KEY_FINGERPRINT}
|
||||||
- checkout
|
- checkout
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
keys:
|
keys:
|
||||||
@@ -217,7 +259,7 @@ jobs:
|
|||||||
deploy-docs:
|
deploy-docs:
|
||||||
working_directory: ~/grafana-zabbix
|
working_directory: ~/grafana-zabbix
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/golang:1.13-node
|
- image: circleci/golang:1.14-node
|
||||||
environment:
|
environment:
|
||||||
GH_PAGES_BRANCH: gh-pages
|
GH_PAGES_BRANCH: gh-pages
|
||||||
CI_GIT_USER: CircleCI
|
CI_GIT_USER: CircleCI
|
||||||
@@ -225,7 +267,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- add_ssh_keys:
|
- add_ssh_keys:
|
||||||
fingerprints:
|
fingerprints:
|
||||||
- "dc:7e:54:e0:aa:56:4d:e5:60:7b:f3:51:24:2d:d3:29"
|
- ${GITHUB_PROJECT_SSH_KEY_FINGERPRINT}
|
||||||
- checkout
|
- checkout
|
||||||
- attach_workspace:
|
- attach_workspace:
|
||||||
at: ../gh-pages
|
at: ../gh-pages
|
||||||
@@ -274,19 +316,16 @@ workflows:
|
|||||||
filters: *filter-only-release
|
filters: *filter-only-release
|
||||||
- test:
|
- test:
|
||||||
filters: *filter-only-release
|
filters: *filter-only-release
|
||||||
- make-github-release:
|
- get-plugin:
|
||||||
requires:
|
requires:
|
||||||
- build
|
- build
|
||||||
- codespell
|
- codespell
|
||||||
- lint
|
- lint
|
||||||
- test
|
- test
|
||||||
filters: *filter-only-release
|
filters: *filter-only-release
|
||||||
- make-release-commit:
|
- make-github-release:
|
||||||
requires:
|
requires:
|
||||||
- build
|
- get-plugin
|
||||||
- codespell
|
|
||||||
- lint
|
|
||||||
- test
|
|
||||||
filters: *filter-only-release
|
filters: *filter-only-release
|
||||||
|
|
||||||
build-docs:
|
build-docs:
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ async function main() {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await publishAssets(
|
await publishAssets(
|
||||||
`grafana-zabbix-${releaseVersion}.zip`,
|
`alexanderzobnin-zabbix-app-${releaseVersion}.zip`,
|
||||||
`https://uploads.github.com/repos/${GRAFANA_ZABBIX_OWNER}/${GRAFANA_ZABBIX_REPO}/releases/${releaseId}/assets`
|
`https://uploads.github.com/repos/${GRAFANA_ZABBIX_OWNER}/${GRAFANA_ZABBIX_REPO}/releases/${releaseId}/assets`
|
||||||
);
|
);
|
||||||
} catch (reason) {
|
} catch (reason) {
|
||||||
|
|||||||
@@ -29,14 +29,16 @@ RELEASE_BRANCH=release-$RELEASE_VER
|
|||||||
|
|
||||||
# Build plugin
|
# Build plugin
|
||||||
git checkout -b "$RELEASE_BRANCH"
|
git checkout -b "$RELEASE_BRANCH"
|
||||||
make clean install dist
|
|
||||||
|
# Skip since moved to publishing plugin assets from github releases
|
||||||
|
# make clean install dist
|
||||||
|
|
||||||
# Commit release
|
# Commit release
|
||||||
git add --force dist/
|
# git add --force dist/
|
||||||
git commit -m "release $RELEASE_VER"
|
# git commit -m "release $RELEASE_VER"
|
||||||
|
|
||||||
RELEASE_COMMIT_HASH=$(git log -n 1 | grep -Po "(?<=commit )[0-9a-z]{40}")
|
# RELEASE_COMMIT_HASH=$(git log -n 1 | grep -Po "(?<=commit )[0-9a-z]{40}")
|
||||||
echo "$RELEASE_COMMIT_HASH"
|
# echo "$RELEASE_COMMIT_HASH"
|
||||||
|
|
||||||
# Push release branch
|
# Push release branch
|
||||||
git push origin "$RELEASE_BRANCH"
|
git push origin "$RELEASE_BRANCH"
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -31,6 +31,10 @@ yarn-error.log
|
|||||||
|
|
||||||
# Built plugin
|
# Built plugin
|
||||||
dist/
|
dist/
|
||||||
|
ci/
|
||||||
|
|
||||||
|
# Grafana toolkit configs
|
||||||
|
.prettierrc.js
|
||||||
|
|
||||||
# locally required config files
|
# locally required config files
|
||||||
public/css/*.min.css
|
public/css/*.min.css
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
"@emotion/core": "10.0.27",
|
"@emotion/core": "10.0.27",
|
||||||
"@grafana/data": "7.0.1",
|
"@grafana/data": "7.0.1",
|
||||||
"@grafana/runtime": "7.0.1",
|
"@grafana/runtime": "7.0.1",
|
||||||
|
"@grafana/toolkit": "^7.1.5",
|
||||||
"@grafana/ui": "7.0.1",
|
"@grafana/ui": "7.0.1",
|
||||||
"@popperjs/core": "2.4.0",
|
"@popperjs/core": "2.4.0",
|
||||||
"@types/classnames": "2.2.9",
|
"@types/classnames": "2.2.9",
|
||||||
|
|||||||
Reference in New Issue
Block a user