Skip to content
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
4 changes: 3 additions & 1 deletion .github/workflows/bundle-stats.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ permissions:

jobs:
compare:
runs-on: ubuntu-latest
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest

steps:
- name: Checkout repository
Expand Down
166 changes: 84 additions & 82 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ permissions:
jobs:
build:
name: Build, lint and unit tests
runs-on: ubuntu-latest
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
outputs:
plugin-id: ${{ steps.metadata.outputs.plugin-id }}
plugin-version: ${{ steps.metadata.outputs.plugin-version }}
has-e2e: ${{ steps.check-for-e2e.outputs.has-e2e }}
has-backend: ${{ steps.check-for-backend.outputs.has-backend }}
env:
GRAFANA_ACCESS_POLICY_TOKEN: ${{ secrets.GRAFANA_ACCESS_POLICY_TOKEN }}
steps:
- uses: actions/checkout@v4
- name: Setup Node.js environment
Expand Down Expand Up @@ -87,10 +87,6 @@ jobs:
echo "has-e2e=true" >> $GITHUB_OUTPUT
fi

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

- name: Get plugin metadata
id: metadata
run: |
Expand Down Expand Up @@ -133,7 +129,9 @@ jobs:

resolve-versions:
name: Resolve e2e images
runs-on: ubuntu-latest
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
timeout-minutes: 3
needs: build
if: ${{ needs.build.outputs.has-e2e == 'true' }}
Expand All @@ -146,70 +144,72 @@ jobs:
id: resolve-versions
uses: grafana/plugin-actions/e2e-version@main

playwright-tests:
needs: [resolve-versions, build]
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
GRAFANA_IMAGE: ${{fromJson(needs.resolve-versions.outputs.matrix)}}
name: e2e test ${{ matrix.GRAFANA_IMAGE.name }}@${{ matrix.GRAFANA_IMAGE.VERSION }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Download plugin
uses: actions/download-artifact@v4
with:
path: dist
name: ${{ needs.build.outputs.plugin-id }}-${{ needs.build.outputs.plugin-version }}

- name: Execute permissions on binary
if: needs.build.outputs.has-backend == 'true'
run: |
chmod +x ./dist/gpx_*

- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'

- name: Install dev dependencies
run: npm ci

- name: Start Grafana
run: |
docker compose pull
ANONYMOUS_AUTH_ENABLED=false DEVELOPMENT=false GRAFANA_VERSION=${{ matrix.GRAFANA_IMAGE.VERSION }} GRAFANA_IMAGE=${{ matrix.GRAFANA_IMAGE.NAME }} docker compose up -d

- name: Wait for grafana server
uses: grafana/plugin-actions/wait-for-grafana@main
with:
url: http://localhost:3000/login

- name: Install Playwright Browsers
run: npm exec playwright install chromium --with-deps

- name: Run Playwright tests
id: run-tests
run: npm run e2e

- name: Upload e2e test summary
uses: grafana/plugin-actions/playwright-gh-pages/upload-report-artifacts@main
if: ${{ always() && !cancelled() }}
with:
upload-report: false
github-token: ${{ secrets.GITHUB_TOKEN }}
test-outcome: ${{ steps.run-tests.outcome }}

- name: Docker logs
if: ${{ always() && steps.run-tests.outcome == 'failure' }}
run: |
docker logs databricks-grafana-datasource >& grafana-server.log

- name: Stop grafana docker
run: docker compose down
# playwright-tests:
# needs: [resolve-versions, build]
# timeout-minutes: 15
# strategy:
# fail-fast: false
# matrix:
# GRAFANA_IMAGE: ${{fromJson(needs.resolve-versions.outputs.matrix)}}
# name: e2e test ${{ matrix.GRAFANA_IMAGE.name }}@${{ matrix.GRAFANA_IMAGE.VERSION }}
# runs-on:
# group: databricks-protected-runner-group
# labels: linux-ubuntu-latest
# steps:
# - uses: actions/checkout@v4

# - name: Download plugin
# uses: actions/download-artifact@v4
# with:
# path: dist
# name: ${{ needs.build.outputs.plugin-id }}-${{ needs.build.outputs.plugin-version }}

# - name: Execute permissions on binary
# if: needs.build.outputs.has-backend == 'true'
# run: |
# chmod +x ./dist/gpx_*

# - name: Setup Node.js environment
# uses: actions/setup-node@v4
# with:
# node-version: '22'
# cache: 'npm'

# - name: Install dev dependencies
# run: npm ci

# - name: Start Grafana
# run: |
# docker compose pull
# ANONYMOUS_AUTH_ENABLED=false DEVELOPMENT=false GRAFANA_VERSION=${{ matrix.GRAFANA_IMAGE.VERSION }} GRAFANA_IMAGE=${{ matrix.GRAFANA_IMAGE.NAME }} docker compose up -d

# - name: Wait for grafana server
# uses: grafana/plugin-actions/wait-for-grafana@main
# with:
# url: http://localhost:3000/login

# - name: Install Playwright Browsers
# run: npm exec playwright install chromium --with-deps

# - name: Run Playwright tests
# id: run-tests
# run: npm run e2e

# - name: Upload e2e test summary
# uses: grafana/plugin-actions/playwright-gh-pages/upload-report-artifacts@main
# if: ${{ always() && !cancelled() }}
# with:
# upload-report: false
# github-token: ${{ secrets.GITHUB_TOKEN }}
# test-outcome: ${{ steps.run-tests.outcome }}

# - name: Docker logs
# if: ${{ always() && steps.run-tests.outcome == 'failure' }}
# run: |
# docker logs databricks-grafana-datasource >& grafana-server.log

# - name: Stop grafana docker
# run: docker compose down

# Uncomment this step to upload the server log to Github artifacts. Remember Github artifacts are public on the Internet if the repository is public.
# - name: Upload server log
Expand All @@ -220,13 +220,15 @@ jobs:
# path: grafana-server.log
# retention-days: 5

publish-report:
if: ${{ always() && !cancelled() }}
needs: [playwright-tests]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Publish report
uses: grafana/plugin-actions/playwright-gh-pages/deploy-report-pages@main
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# publish-report:
# if: ${{ always() && !cancelled() }}
# needs: [playwright-tests]
# runs-on:
# group: databricks-protected-runner-group
# labels: linux-ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - name: Publish report
# uses: grafana/plugin-actions/playwright-gh-pages/deploy-report-pages@main
# with:
# github-token: ${{ secrets.GITHUB_TOKEN }}
4 changes: 3 additions & 1 deletion .github/workflows/cp-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ permissions:

jobs:
release:
runs-on: ubuntu-latest
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
steps:
- uses: grafana/plugin-actions/create-plugin-update@main
# Uncomment to use a fine-grained personal access token instead of default github token
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/is-compatible.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ on: [pull_request]

jobs:
compatibilitycheck:
runs-on: ubuntu-latest
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js environment
Expand Down
101 changes: 93 additions & 8 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,106 @@
# 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)
# This GitHub Action builds and packages the Grafana plugin for release.
name: Release

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

permissions: read-all
permissions:
contents: write
id-token: write

jobs:
release:
permissions:
contents: write
runs-on: ubuntu-latest
name: Build and Release Plugin
runs-on:
group: databricks-protected-runner-group
labels: linux-ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: grafana/plugin-actions/build-plugin@main

- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
policy_token: ${{ secrets.GRAFANA_ACCESS_POLICY_TOKEN }}
node-version: '22'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Check types
run: npm run typecheck

- name: Lint
run: npm run lint

- name: Unit tests
run: npm run test:ci

- name: Build frontend
run: npm run build

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

- name: Setup Go environment
if: steps.check-for-backend.outputs.has-backend == 'true'
uses: actions/setup-go@v5
with:
go-version: '1.22'

- name: Test backend
if: steps.check-for-backend.outputs.has-backend == 'true'
uses: magefile/mage-action@v3
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: buildAllNoLinuxArm

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

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

- 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

- name: Validate plugin
run: |
docker run --pull=always \
-v $PWD/${{ steps.metadata.outputs.archive }}:/archive.zip \
grafana/plugin-validator-cli -analyzer=metadatavalid /archive.zip

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: ${{ steps.metadata.outputs.archive }}
tag_name: ${{ github.ref_name }}
name: Release ${{ github.ref_name }}
draft: false
prerelease: false
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading