Merge pull request #177 from flant/feat_gh_actions

feat: github actions to build and publish
This commit is contained in:
Ivan Mikheykin
2021-02-17 12:35:11 +03:00
committed by GitHub
14 changed files with 331 additions and 92 deletions
+35
View File
@@ -0,0 +1,35 @@
---
name: 🐛 Bug report
about: Report a bug you found when using flant-statusmap-panel
labels: 'bug'
---
<!--
Thank you for sending a bug report! Here are some tips:
1. Please fill out the template below to make it easier to debug your problem.
2. If you are not sure if it is a bug or not, you can ask in Discussions.
PROTIP: record your screen and attach it as a gif to showcase the issue.
- Questions should be posted to: https://github.com/flant/grafana-statusmap/discussions
- Use query inspector to troubleshoot issues: https://bit.ly/2XNF6YS
- How to record and attach gif: https://bit.ly/2Mi8T6K
-->
**What happened**:
**What you expected to happen**:
**How to reproduce it (as minimally and precisely as possible)**:
**Environment**:
- Grafana version:
- flant-statusmap-panel version:
- Data source type & version:
- OS Grafana is installed on:
- User OS & Browser:
- Grafana plugins:
- Others:
**Anything else we should know?**:
+11
View File
@@ -0,0 +1,11 @@
---
name: 💡 Feature request
about: Suggest an idea for flant-statusmap-panel
labels: 'enhancement'
---
<!-- Please only use this template for submitting feature requests. -->
**What would you like to be added**:
**Why is this needed**:
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: 💬 Questions & Help
url: https://github.com/flant/grafana-statusmap/discussions
about: Please ask and answer questions here
+34
View File
@@ -0,0 +1,34 @@
<!--
Thank you for sending a pull request! Here some tips for contributors:
1. Fill the description template below.
2. Include appropriate tests (if necessary). Make sure that all CI checks passed.
3. If the Pull Request is a work in progress, make use of GitHub's "Draft PR" feature and mark it as such.
-->
#### Overview
<!-- Describe your changes briefly here. -->
#### What this PR does / why we need it
<!--
- Please state in detail why we need this PR and what it solves.
- If your PR closes some of the existing issues, please add links to them here.
Mentioned issues will be automatically closed.
Usage: "Closes #<issue number>", or "Closes (paste link of issue)"
-->
#### Special notes for your reviewer
#### Does this PR introduce a user-facing change?
<!--
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
```
+7
View File
@@ -0,0 +1,7 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
+48
View File
@@ -0,0 +1,48 @@
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/setup-node@v2.1.2
with:
node-version: "14.x"
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Cache yarn cache
uses: actions/cache@v2
id: cache-yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Cache node_modules
id: cache-node-modules
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.os }}-${{ matrix.node-version }}-nodemodules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.node-version }}-nodemodules-
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Build and test frontend
run: yarn build
+148
View File
@@ -0,0 +1,148 @@
name: Release
on:
push:
tags:
- "v*.*.*" # Run workflow on version tags, e.g. v1.0.0.
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js environment
uses: actions/setup-node@v2.1.2
with:
node-version: "14.x"
- name: Setup Go environment
uses: actions/setup-go@v2
with:
go-version: "1.15"
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Cache yarn cache
uses: actions/cache@v2
id: cache-yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Cache node_modules
id: cache-node-modules
uses: actions/cache@v2
with:
path: node_modules
key: ${{ runner.os }}-${{ matrix.node-version }}-nodemodules-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-${{ matrix.node-version }}-nodemodules-
- name: Install dependencies
run: yarn install --frozen-lockfile;
if: |
steps.cache-yarn-cache.outputs.cache-hit != 'true' ||
steps.cache-node-modules.outputs.cache-hit != 'true'
- name: Build and test frontend
run: yarn build
- name: Sign plugin
run: yarn sign
env:
GRAFANA_API_KEY: ${{ secrets.GRAFANA_API_KEY }} # Requires a Grafana API key from Grafana.com.
- name: Get plugin metadata
id: metadata
run: |
sudo apt-get install jq
export GRAFANA_PLUGIN_ID=$(cat dist/plugin.json | jq -r .id)
export GRAFANA_PLUGIN_VERSION=$(cat dist/plugin.json | jq -r .info.version)
export GRAFANA_PLUGIN_TYPE=$(cat dist/plugin.json | jq -r .type)
export GRAFANA_PLUGIN_UPDATED=$(cat dist/plugin.json | jq -r .info.updated)
export GRAFANA_PLUGIN_ARTIFACT=${GRAFANA_PLUGIN_ID}-${GRAFANA_PLUGIN_VERSION}.zip
export GRAFANA_PLUGIN_ARTIFACT_CHECKSUM=${GRAFANA_PLUGIN_ARTIFACT}.md5
export GRAFANA_PLUGIN_RELEASE_NAME="${GRAFANA_PLUGIN_VERSION} (${GRAFANA_PLUGIN_UPDATED})"
echo "::set-output name=plugin-id::${GRAFANA_PLUGIN_ID}"
echo "::set-output name=plugin-version::${GRAFANA_PLUGIN_VERSION}"
echo "::set-output name=plugin-type::${GRAFANA_PLUGIN_TYPE}"
echo "::set-output name=archive::${GRAFANA_PLUGIN_ARTIFACT}"
echo "::set-output name=archive-checksum::${GRAFANA_PLUGIN_ARTIFACT_CHECKSUM}"
echo "::set-output name=release-name::${GRAFANA_PLUGIN_RELEASE_NAME}"
echo ::set-output name=github-tag::${GITHUB_REF#refs/*/}
- name: Read changelog
id: changelog
run: |
# Get the latest section in CHANGELOG without it's header.
awk '/^$/{next} /^## / {s++;next} s == 1 {print}' CHANGELOG.md > release_notes.md
echo "::set-output name=path::release_notes.md"
- name: Check package version
run: if [ "v${{ steps.metadata.outputs.plugin-version }}" != "${{ steps.metadata.outputs.github-tag }}" ]; then printf "\033[0;31mPlugin version doesn't match tag name\033[0m\n"; exit 1; fi
- name: Package plugin
id: package-plugin
run: |
mv dist ${{ steps.metadata.outputs.plugin-id }}
zip ${{ steps.metadata.outputs.archive }} ${{ steps.metadata.outputs.plugin-id }} -r
md5sum ${{ steps.metadata.outputs.archive }} > ${{ steps.metadata.outputs.archive-checksum }}
echo "::set-output name=checksum::$(cat ./${{ steps.metadata.outputs.archive-checksum }} | cut -d' ' -f1)"
- name: Lint plugin
run: |
git clone https://github.com/grafana/plugin-validator
pushd ./plugin-validator/cmd/plugincheck
go install
popd
# Ignore error about twitter.com link :(
# (https://twitter.com/flant_com) (`400 Bad Request`).
plugincheck ${{ steps.metadata.outputs.archive }} || true
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ steps.metadata.outputs.release-name }}
body_path: ${{ steps.changelog.outputs.path }}
draft: true
- name: Add plugin to release
id: upload-plugin-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ steps.metadata.outputs.archive }}
asset_name: ${{ steps.metadata.outputs.archive }}
asset_content_type: application/zip
- name: Add checksum to release
id: upload-checksum-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ steps.metadata.outputs.archive-checksum }}
asset_name: ${{ steps.metadata.outputs.archive-checksum }}
asset_content_type: text/plain
- name: Publish to Grafana.com
run: |
echo A draft release has been created for your plugin. Please review and publish it. Then submit your plugin to grafana.com/plugins by opening a PR to https://github.com/grafana/grafana-plugin-repository with the following entry:
echo
echo '{ "id": "${{ steps.metadata.outputs.plugin-id }}", "type": "${{ steps.metadata.outputs.plugin-type }}", "url": "https://github.com/${{ github.repository }}", "versions": [ { "version": "${{ steps.metadata.outputs.plugin-version }}", "commit": "${{ github.sha }}", "url": "https://github.com/${{ github.repository }}", "download": { "any": { "url": "https://github.com/${{ github.repository }}/releases/download/v${{ steps.metadata.outputs.plugin-version }}/${{ steps.metadata.outputs.archive }}", "md5": "${{ steps.package-plugin.outputs.checksum }}" } } } ] }' | jq .
+6 -3
View File
@@ -2,9 +2,12 @@
## v0.4.0
- Fix to work with Grafana 7.3.6, 7.4.0
- Use grafana-toolkit to build and sign
- Drop support for Grafana 5.*
- Fix to work with Grafana 7.4.x
- Migrate to grafana-toolkit and yarn to build and sign.
- Cleanup dist directory, reduce compiled plugin size.
- Code cleanup: fix linter errors and warnings
- Add Github Actions configuration to automate release process.
- Add unobtrusive branding.
## v0.3.4
+16
View File
@@ -0,0 +1,16 @@
# Development
To test and improve the plugin you can run local Grafana instance in Docker container:
```
git clone https://github.com/flant/grafana-statusmap.git
cd grafana-statusmap
docker run --rm -it -v $PWD:/var/lib/grafana/plugins/flant-statusmap-panel \
-p 3000:3000 --name grafana.docker \
--env=GF_USERS_DEFAULT_THEME=light \
grafana/grafana:7.3.4
```
The `-v` flag exposes plugin directory from your machine to Grafana container. Now run `yarn watch` to compile `dist` directory and follow changes in src directory.
+6 -42
View File
@@ -3,6 +3,7 @@
[![Download from GitHub](https://img.shields.io/github/tag-date/flant/grafana-statusmap.svg?logo=github&label=latest)](https://github.com/flant/grafana-statusmap/releases/latest)
[![GH Discussions](https://img.shields.io/badge/GitHub-discussions-brightgreen)](https://github.com/flant/grafana-statusmap/discussions)
[![Telegram chat RU](https://img.shields.io/badge/@statusmap_ru-RU-informational.svg?logo=telegram)](https://t.me/statusmap_ru)
[![Follow Flant on Twitter](https://img.shields.io/twitter/follow/flant_com?label=Follow%20Flant&style=social)](https://twitter.com/flant_com)
Panel to show discrete statuses of multiple targets over time.
@@ -19,8 +20,6 @@ Panel to show discrete statuses of multiple targets over time.
* Increasing rows/buckets' interval for better visual representation
* Representing null values as empty bucket or zero value
:calendar: New features are planned in [#62](https://github.com/flant/grafana-statusmap/issues/62)
### Supported environment
* Tested with datasources:
@@ -31,25 +30,6 @@ Panel to show discrete statuses of multiple targets over time.
- 6.7+ are the most priority (6.7, 7.0-7.4)
- also works in 5.4.3 and 6.0+
## Installation
The preferred way of installation is Grafana configuration, e.g. with environment variable GF_INSTALL_PLUGINS="flant-statusmap-panel".
Also, you can download a released .zip file from [Releases](https://github.com/flant/grafana-statusmap/releases) page and uncompress it into Grafana's plugin directory (/var/lib/grafana/plugins/flant-statusmap-panel).
```
curl -sLO
unzip flant-statusmap-panel-v0.4.0.zip -d /var/lib/grafana/plugins/flant-statusmap-panel
```
For 5.x and 6.x versions of Grafana you can clone this repo:
```
git clone git@github.com:flant/grafana-statusmap.git /var/lib/grafana/plugins/flant-statusmap-panel
```
## Motivation
We had a desperate need to visualize a set of timeseries statuses over time period, so we can
@@ -214,29 +194,13 @@ Each URL has a template, icon, label and formating options: lowercase and date f
![Tooltip items editor](https://raw.githubusercontent.com/flant/grafana-statusmap/master/docs/img/tooltip-editor.png)
## Development
To test and improve the plugin you can run Grafana instance in Docker:
## Learn more
```
cd grafana-statusmap
docker run --rm -it -v $PWD:/var/lib/grafana/plugins/flant-statusmap-panel \
-p 3000:3000 --name grafana.docker \
--env=GF_USERS_DEFAULT_THEME=light \
grafana/grafana:7.3.4
```
The `-v` flag exposes plugin directory from your machine to Grafana container. Now run `yarn run watch` to compile dist directory and start changes watcher.
## Changelog
The latest changes can be found here: [CHANGELOG.md](https://github.com/flant/grafana-statusmap/blob/master/CHANGELOG.md)
## Community
Please feel free to reach developers/maintainers and users via [GitHub Discussions](https://github.com/flant/grafana-statusmap/discussions) for any questions regarding grafana-statusmap.
You're also welcome to follow [@flant_com](https://twitter.com/flant_com) to stay informed about all our Open Source initiatives.
* [Changelog](https://github.com/flant/grafana-statusmap/blob/master/CHANGELOG.md)
* Use [GitHub Discussions](https://github.com/flant/grafana-statusmap/discussions) to ask for help.
* [Installation](https://grafana.com/grafana/plugins/flant-statusmap-panel/installation)
* Setup [development](https://github.com/flant/grafana-statusmap/blob/master/DEVELOPMENT.md) environment to help us improve the plugin.
## Acknowledgements
+6 -3
View File
@@ -2,9 +2,12 @@
## v0.4.0
- Fix to work with Grafana 7.3.6, 7.4.0
- Use grafana-toolkit to build and sign
- Drop support for Grafana 5.*
- Fix to work with Grafana 7.4.x
- Migrate to grafana-toolkit and yarn to build and sign.
- Cleanup dist directory, reduce compiled plugin size.
- Code cleanup: fix linter errors and warnings
- Add Github Actions configuration to automate release process.
- Add unobtrusive branding.
## v0.3.4
+6 -42
View File
@@ -3,6 +3,7 @@
[![Download from GitHub](https://img.shields.io/github/tag-date/flant/grafana-statusmap.svg?logo=github&label=latest)](https://github.com/flant/grafana-statusmap/releases/latest)
[![GH Discussions](https://img.shields.io/badge/GitHub-discussions-brightgreen)](https://github.com/flant/grafana-statusmap/discussions)
[![Telegram chat RU](https://img.shields.io/badge/@statusmap_ru-RU-informational.svg?logo=telegram)](https://t.me/statusmap_ru)
[![Follow Flant on Twitter](https://img.shields.io/twitter/follow/flant_com?label=Follow%20Flant&style=social)](https://twitter.com/flant_com)
Panel to show discrete statuses of multiple targets over time.
@@ -19,8 +20,6 @@ Panel to show discrete statuses of multiple targets over time.
* Increasing rows/buckets' interval for better visual representation
* Representing null values as empty bucket or zero value
:calendar: New features are planned in [#62](https://github.com/flant/grafana-statusmap/issues/62)
### Supported environment
* Tested with datasources:
@@ -31,25 +30,6 @@ Panel to show discrete statuses of multiple targets over time.
- 6.7+ are the most priority (6.7, 7.0-7.4)
- also works in 5.4.3 and 6.0+
## Installation
The preferred way of installation is Grafana configuration, e.g. with environment variable GF_INSTALL_PLUGINS="flant-statusmap-panel".
Also, you can download a released .zip file from [Releases](https://github.com/flant/grafana-statusmap/releases) page and uncompress it into Grafana's plugin directory (/var/lib/grafana/plugins/flant-statusmap-panel).
```
curl -sLO
unzip flant-statusmap-panel-v0.4.0.zip -d /var/lib/grafana/plugins/flant-statusmap-panel
```
For 5.x and 6.x versions of Grafana you can clone this repo:
```
git clone git@github.com:flant/grafana-statusmap.git /var/lib/grafana/plugins/flant-statusmap-panel
```
## Motivation
We had a desperate need to visualize a set of timeseries statuses over time period, so we can
@@ -214,29 +194,13 @@ Each URL has a template, icon, label and formating options: lowercase and date f
![Tooltip items editor](https://raw.githubusercontent.com/flant/grafana-statusmap/master/docs/img/tooltip-editor.png)
## Development
To test and improve the plugin you can run Grafana instance in Docker:
## Learn more
```
cd grafana-statusmap
docker run --rm -it -v $PWD:/var/lib/grafana/plugins/flant-statusmap-panel \
-p 3000:3000 --name grafana.docker \
--env=GF_USERS_DEFAULT_THEME=light \
grafana/grafana:7.3.4
```
The `-v` flag exposes plugin directory from your machine to Grafana container. Now run `yarn run watch` to compile dist directory and start changes watcher.
## Changelog
The latest changes can be found here: [CHANGELOG.md](https://github.com/flant/grafana-statusmap/blob/master/CHANGELOG.md)
## Community
Please feel free to reach developers/maintainers and users via [GitHub Discussions](https://github.com/flant/grafana-statusmap/discussions) for any questions regarding grafana-statusmap.
You're also welcome to follow [@flant_com](https://twitter.com/flant_com) to stay informed about all our Open Source initiatives.
* [Changelog](https://github.com/flant/grafana-statusmap/blob/master/CHANGELOG.md)
* Use [GitHub Discussions](https://github.com/flant/grafana-statusmap/discussions) to ask for help.
* [Installation](https://grafana.com/grafana/plugins/flant-statusmap-panel/installation)
* Setup [development](https://github.com/flant/grafana-statusmap/blob/master/DEVELOPMENT.md) environment to help us improve the plugin.
## Acknowledgements
+1 -1
View File
@@ -26,7 +26,7 @@
{"name": "Queries example", "path": "img/queries-example.png"}
],
"version": "0.4.0-pre",
"updated": "2021-02-15"
"updated": "2021-02-17"
},
"dependencies": {
+2 -1
View File
@@ -7,7 +7,8 @@
"build": "grafana-toolkit plugin:build",
"test": "grafana-toolkit plugin:test",
"dev": "grafana-toolkit plugin:dev",
"watch": "grafana-toolkit plugin:dev --watch"
"watch": "grafana-toolkit plugin:dev --watch",
"sign": "grafana-toolkit plugin:sign"
},
"author": "Flant JSC",
"license": "Apache-2.0",