Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update docker and package #198

Merged
merged 14 commits into from
Mar 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 14 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,26 @@ jobs:
GRAFANA_ACCESS_POLICY_TOKEN: ${{ secrets.GRAFANA_ACCESS_POLICY_TOKEN }}
steps:
- uses: actions/checkout@v4
# pnpm action uses the packageManager field in package.json to
# understand which version to install.
- uses: pnpm/action-setup@v3
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'

cache: 'pnpm'
cache-dependency-path: pnpm-lock.yaml
- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile --prefer-offline

- name: Check types
run: npm run typecheck
run: pnpm run typecheck
- name: Lint
run: npm run lint
run: pnpm run lint
- name: Unit tests
run: npm run test:ci
run: pnpm run test:ci
- name: Build frontend
run: npm run build
run: pnpm run build

- name: Check for backend
id: check-for-backend
Expand Down Expand Up @@ -70,7 +73,7 @@ jobs:
if: ${{ env.GRAFANA_ACCESS_POLICY_TOKEN == '' }}

- name: Sign plugin
run: npm run sign
run: pnpm run sign
if: ${{ env.GRAFANA_ACCESS_POLICY_TOKEN != '' }}

- name: Get plugin metadata
Expand All @@ -93,7 +96,7 @@ jobs:
zip ${{ steps.metadata.outputs.archive }} ${{ steps.metadata.outputs.plugin-id }} -r

- name: Archive Build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ steps.metadata.outputs.plugin-id }}-${{ steps.metadata.outputs.plugin-version }}
path: ${{ steps.metadata.outputs.plugin-id }}
Expand All @@ -115,8 +118,6 @@ jobs:
mkdir -p ccbin/
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./ccbin/cc-test-reporter
chmod +x ./ccbin/cc-test-reporter
npm install jest
npm install jest-junit
./ccbin/cc-test-reporter format-coverage -t lcov -o out/codeclimate.frontend.json coverage/lcov.info
npx jest --ci --runInBand --reporters=default --reporters=jest-junit

Expand All @@ -142,12 +143,12 @@ jobs:

- name: E2E - Install playwright dependencies
if: steps.e2e-check-for-playwright.outputs.has-e2e-playwright == 'true'
run: sudo apt-get update && yarn playwright install --with-deps
run: sudo apt-get update && npx playwright install --with-deps

- name: E2E - Run tests
id: e2e-run-tests
if: steps.e2e-check-for-playwright.outputs.has-e2e-playwright == 'true'
run: yarn run e2e:playwright
run: pnpm run e2e:playwright

- name: E2E - Stop Grafana in Docker
if: steps.e2e-check-for-playwright.outputs.has-e2e-playwright == 'true'
Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/is-compatible.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,18 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# pnpm action uses the packageManager field in package.json to
# understand which version to install.
- uses: pnpm/action-setup@v2
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache: 'pnpm'
cache-dependency-path: pnpm-lock.yaml
- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile --prefer-offline
- name: Build plugin
run: npm run build
run: pnpm run build
- name: Compatibility check
run: npx @grafana/levitate@latest is-compatible --path src/module.ts --target @grafana/data,@grafana/ui,@grafana/runtime
138 changes: 124 additions & 14 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,136 @@
# This GitHub Action automates the process of building Grafana plugins.
# (For more information, see https://github.com/grafana/plugin-actions/blob/main/build-plugin/README.md)
name: Release

on:
push:
tags:
- 'v*' # Run workflow on version tags, e.g. v1.0.0.

permissions: read-all

jobs:
release:
permissions:
contents: write
runs-on: ubuntu-latest
env:
# usage of GRAFANA_API_KEY is deprecated
# GRAFANA_API_KEY: ${{ secrets.GRAFANA_API_KEY }}
GRAFANA_ACCESS_POLICY_TOKEN: ${{ secrets.GRAFANA_ACCESS_POLICY_TOKEN }}
steps:
- uses: actions/checkout@v4
- uses: grafana/plugin-actions/build-plugin@release
# Uncomment to enable plugin signing
# (For more info on how to generate the access policy token see https://grafana.com/developers/plugin-tools/publish-a-plugin/sign-a-plugin#generate-an-access-policy-token)
#with:
# Make sure to save the token in your repository secrets
#policy_token: $
# Usage of GRAFANA_API_KEY is deprecated, prefer `policy_token` option above
#grafana_token: $
# pnpm action uses the packageManager field in package.json to
# understand which version to install.
- uses: pnpm/action-setup@v2
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
cache-dependency-path: pnpm-lock.yaml

- name: Setup Go environment
uses: actions/setup-go@v5
with:
go-version: '1.21'

- name: Install dependencies
run: pnpm install --frozen-lockfile --prefer-offline

- name: Build and test frontend
run: pnpm run build

- name: Check for backend
id: check-for-backend
run: |
if [ -f "Magefile.go" ]
then
echo "has-backend=true" >> $GITHUB_OUTPUT
fi

- name: Test backend
if: steps.check-for-backend.outputs.has-backend == 'true'
uses: magefile/mage-action@v4
with:
version: latest
args: coverage

- name: Build backend
if: steps.check-for-backend.outputs.has-backend == 'true'
uses: magefile/mage-action@v3
with:
version: latest
args: buildAll

- name: Warn missing Grafana access policy token
run: |
echo Please generate a Grafana access policy token: https://grafana.com/developers/plugin-tools/publish-a-plugin/sign-a-plugin#generate-an-access-policy-token
echo Once done please follow the instructions found here: https://github.com/${{github.repository}}/blob/main/README.md#using-github-actions-release-workflow
if: ${{ env.GRAFANA_ACCESS_POLICY_TOKEN == '' }}

- name: Sign plugin
run: pnpm run sign
if: ${{ env.GRAFANA_ACCESS_POLICY_TOKEN != '' }}

- 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_ARTIFACT=${GRAFANA_PLUGIN_ID}-${GRAFANA_PLUGIN_VERSION}.zip
export GRAFANA_PLUGIN_ARTIFACT_SHA1SUM=${GRAFANA_PLUGIN_ARTIFACT}.sha1

echo "plugin-id=${GRAFANA_PLUGIN_ID}" >> $GITHUB_OUTPUT
echo "plugin-version=${GRAFANA_PLUGIN_VERSION}" >> $GITHUB_OUTPUT
echo "plugin-type=${GRAFANA_PLUGIN_TYPE}" >> $GITHUB_OUTPUT
echo "archive=${GRAFANA_PLUGIN_ARTIFACT}" >> $GITHUB_OUTPUT
echo "archive-sha1sum=${GRAFANA_PLUGIN_ARTIFACT_SHA1SUM}" >> $GITHUB_OUTPUT

echo "github-tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT

- name: Read changelog
id: changelog
run: |
awk '/^## / {s++} s == 1 {print}' CHANGELOG.md > release_notes.md
echo "path=release_notes.md" >> $GITHUB_OUTPUT

- 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
sha1sum ${{ steps.metadata.outputs.archive }} | cut -f1 -d' ' > ${{ steps.metadata.outputs.archive-sha1sum }}

- name: Validate plugin
run: |
git clone https://github.com/grafana/plugin-validator
pushd ./plugin-validator/pkg/cmd/plugincheck2
go install
popd
plugincheck2 -config ./plugin-validator/config/default.yaml ${{ steps.metadata.outputs.archive }}

- name: Create Github release
uses: softprops/action-gh-release@v1
with:
draft: true
generate_release_notes: true
files: |
./${{ steps.metadata.outputs.archive }}
./${{ steps.metadata.outputs.archive-sha1sum }}
body: |
**This Github draft release has been created for your plugin.**

_Note: if this is the first release for your plugin please consult the [distributing-your-plugin section](https://github.com/${{github.repository}}/blob/main/README.md#distributing-your-plugin) of the README_

If you would like to submit this release to Grafana please consider the following steps:

- Check the Validate plugin step in the [release workflow](https://github.com/${{github.repository}}/commit/${{github.sha}}/checks/${{github.run_id}}) for any warnings that need attention
- Navigate to https://grafana.com/auth/sign-in/ to sign into your account
- Once logged in click **My Plugins** in the admin navigation
- Click the **Submit Plugin** button
- Fill in the Plugin Submission form:
- Paste this [.zip asset link](https://github.com/${{ github.repository }}/releases/download/v${{ steps.metadata.outputs.plugin-version }}/${{ steps.metadata.outputs.archive }}) in the Plugin URL field
- Paste this [.zip.sha1 link](https://github.com/${{ github.repository }}/releases/download/v${{ steps.metadata.outputs.plugin-version }}/${{ steps.metadata.outputs.archive-sha1sum }}) in the SHA1 field

Once done please remove these instructions and publish this release.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,7 @@ e2e-results/
# Editor
.idea

.eslintcache
.eslintcache

playwright/.auth/admin.json
playwright-report
9 changes: 6 additions & 3 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,18 @@ version: '3.0'

services:
grafana:
container_name: 'briangann-datatablereact-panel'
container_name: 'briangann-datatable-panel'
platform: 'linux/amd64'
build:
context: ./.config
args:
grafana_image: ${GRAFANA_IMAGE:-grafana-enterprise}
grafana_version: ${GRAFANA_VERSION:-10.3.3}
grafana_version: ${GRAFANA_VERSION:-10.3.4}
ports:
- 3000:3000/tcp
volumes:
- ./dist:/var/lib/grafana/plugins/briangann-datatablereact-panel
- ./dist:/var/lib/grafana/plugins/briangann-datatable-panel
- ./provisioning:/etc/grafana/provisioning
environment:
- TERM=linux
- GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=briangann-datatable-panel
Loading
Loading