keep comments #1582
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Node CI | |
on: [push] | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip') && !contains(github.event.head_commit.message, 'skip ci')" | |
name: Run unit tests | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
NX_BRANCH: ${{ github.event.number || github.ref_name }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
# We need to fetch all branches and commits so that Nx affected has a base to compare against. | |
fetch-depth: 0 | |
- uses: nrwl/nx-set-shas@v4 | |
- name: Setup .npmrc file for NPM registry | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
registry-url: 'https://registry.npmjs.org' | |
cache: 'npm' | |
- name: Install dependencies | |
run: npm ci --no-audit | |
- name: Check types | |
run: npm exec nx affected -- --target typecheck --parallel | |
- name: Lint | |
run: npm exec nx affected -- --target lint --parallel | |
- name: Unit tests | |
run: npm exec nx affected -- --target test --ci | |
- name: Build all packages | |
run: npm run build | |
generate-plugins: | |
name: Test plugin scaffolding | |
if: "!contains(github.event.head_commit.message, 'ci skip') && !contains(github.event.head_commit.message, 'skip ci')" | |
needs: [test] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- cmd: generate-app | |
hasBackend: false | |
- cmd: generate-app-backend | |
hasBackend: true | |
- cmd: generate-panel | |
hasBackend: false | |
- cmd: generate-datasource | |
hasBackend: false | |
- cmd: generate-datasource-backend | |
hasBackend: true | |
- cmd: generate-scenes-app | |
hasBackend: false | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
NX_BRANCH: ${{ github.event.number || github.ref_name }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
# We need to fetch all branches and commits so that Nx affected has a base to compare against. | |
fetch-depth: 0 | |
- uses: nrwl/nx-set-shas@v4 | |
- name: Setup .npmrc file for NPM registry | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
registry-url: 'https://registry.npmjs.org' | |
cache: 'npm' | |
- name: Install package dependencies | |
run: npm ci --no-audit | |
- name: Generate plugin | |
run: npm exec nx run @grafana/create-plugin:${{ matrix.cmd }} | |
- name: Install generated plugin dependencies | |
run: npm install --no-audit | |
working-directory: ./packages/create-plugin/generated | |
- name: Lint plugin frontend | |
run: npm run lint | |
working-directory: ./packages/create-plugin/generated | |
- name: Build plugin frontend | |
run: npm run build | |
working-directory: ./packages/create-plugin/generated | |
- name: '@grafana/sign-plugin - build' | |
if: ${{ matrix.cmd == 'generate-panel' && github.actor != 'dependabot[bot]' }} | |
env: | |
GRAFANA_ACCESS_POLICY_TOKEN: ${{ secrets.GRAFANA_ACCESS_POLICY_TOKEN }} | |
run: npm exec nx run @grafana/sign-plugin:build | |
- name: '@grafana/sign-plugin - use GRAFANA_ACCESS_POLICY_TOKEN to sign generate-panel plugin' | |
if: ${{ matrix.cmd == 'generate-panel' && github.actor != 'dependabot[bot]' }} | |
env: | |
GRAFANA_ACCESS_POLICY_TOKEN: ${{ secrets.GRAFANA_ACCESS_POLICY_TOKEN }} | |
run: node ../../sign-plugin/dist/bin/run.js --rootUrls http://www.example.com --signatureType private | |
working-directory: ./packages/create-plugin/generated | |
- name: '@grafana/sign-plugin - use GRAFANA_API_KEY to sign generate-panel plugin' | |
if: ${{ matrix.cmd == 'generate-panel' && github.actor != 'dependabot[bot]' }} | |
env: | |
GRAFANA_API_KEY: ${{ secrets.GRAFANA_API_KEY }} | |
run: node ../../sign-plugin/dist/bin/run.js --rootUrls http://www.example.com --signatureType private | |
working-directory: ./packages/create-plugin/generated | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: '~1.20' | |
check-latest: true | |
cache-dependency-path: ./packages/create-plugin/generated/go.sum | |
if: ${{ matrix.hasBackend == true }} | |
- name: Build plugin backend | |
uses: magefile/mage-action@v3 | |
with: | |
version: latest | |
args: -v build:linux | |
workdir: ./packages/create-plugin/generated | |
if: ${{ matrix.hasBackend == true }} | |
release: | |
runs-on: ubuntu-latest | |
needs: [test, generate-plugins] | |
if: "!contains(github.event.head_commit.message, 'ci skip') && !contains(github.event.head_commit.message, 'skip ci') && github.actor != 'dependabot[bot]'" | |
name: Release packages | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
NX_BRANCH: ${{ github.event.number || github.ref_name }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
steps: | |
- name: Generate token | |
id: generate_token | |
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a | |
with: | |
app_id: ${{ secrets.PLUGINS_PLATFORM_BOT_APP_ID }} | |
private_key: ${{ secrets.PLUGINS_PLATFORM_BOT_APP_PEM }} | |
- uses: actions/checkout@v4 | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
- name: Prepare repository | |
run: git fetch --unshallow --tags | |
- name: Setup environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20' | |
registry-url: 'https://registry.npmjs.org' | |
cache: 'npm' | |
- name: Install dependencies | |
run: npm ci --no-audit | |
- name: Build | |
run: npm run build | |
- name: Create Release | |
env: | |
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
run: npm run release |