diff --git a/.config/.cprc.json b/.config/.cprc.json index 196a782..d27a4ff 100644 --- a/.config/.cprc.json +++ b/.config/.cprc.json @@ -1,3 +1,3 @@ { - "version": "4.2.3" + "version": "4.10.3" } diff --git a/.config/Dockerfile b/.config/Dockerfile index e0f1b2d..f06da29 100644 --- a/.config/Dockerfile +++ b/.config/Dockerfile @@ -3,6 +3,11 @@ ARG grafana_image=grafana-enterprise FROM grafana/${grafana_image}:${grafana_version} +ARG development=true + + +ENV DEV "${development}" + # Make it as simple as possible to access the grafana instance for development purposes # Do NOT enable these settings in a public facing / production grafana instance ENV GF_AUTH_ANONYMOUS_ORG_ROLE "Admin" @@ -11,6 +16,37 @@ ENV GF_AUTH_BASIC_ENABLED "false" # Set development mode so plugins can be loaded without the need to sign ENV GF_DEFAULT_APP_MODE "development" -# Inject livereload script into grafana index.html + +LABEL maintainer="Grafana Labs " + +ENV GF_PATHS_HOME="/usr/share/grafana" +WORKDIR $GF_PATHS_HOME + USER root + +# Installing supervisor and inotify-tools +RUN if [ "${development}" = "true" ]; then \ + if grep -i -q alpine /etc/issue; then \ + apk add supervisor inotify-tools git; \ + elif grep -i -q ubuntu /etc/issue; then \ + DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y supervisor inotify-tools git && \ + rm -rf /var/lib/apt/lists/*; \ + else \ + echo 'ERROR: Unsupported base image' && /bin/false; \ + fi \ + fi + +COPY supervisord/supervisord.conf /etc/supervisor.d/supervisord.ini +COPY supervisord/supervisord.conf /etc/supervisor/conf.d/supervisord.conf + + + +# Inject livereload script into grafana index.html RUN sed -i 's|||g' /usr/share/grafana/public/views/index.html + + +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] diff --git a/.config/entrypoint.sh b/.config/entrypoint.sh new file mode 100644 index 0000000..00c69f2 --- /dev/null +++ b/.config/entrypoint.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +if [ "${DEV}" = "false" ]; then + echo "Starting test mode" + exec /run.sh +fi + +echo "Starting development mode" + +if grep -i -q alpine /etc/issue; then + exec /usr/bin/supervisord -c /etc/supervisord.conf +elif grep -i -q ubuntu /etc/issue; then + exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf +else + echo 'ERROR: Unsupported base image' + exit 1 +fi + diff --git a/.config/jest-setup.js b/.config/jest-setup.js index 1b9fc2f..b9f5738 100644 --- a/.config/jest-setup.js +++ b/.config/jest-setup.js @@ -6,6 +6,9 @@ */ import '@testing-library/jest-dom'; +import { TextEncoder, TextDecoder } from 'util'; + +Object.assign(global, { TextDecoder, TextEncoder }); // https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom Object.defineProperty(global, 'matchMedia', { diff --git a/.config/supervisord/supervisord.conf b/.config/supervisord/supervisord.conf new file mode 100644 index 0000000..47624f0 --- /dev/null +++ b/.config/supervisord/supervisord.conf @@ -0,0 +1,15 @@ +[supervisord] +nodaemon=true +user=root + +[program:grafana] +user=root +directory=/var/lib/grafana +command=/run.sh +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +redirect_stderr=true +killasgroup=true +stopasgroup=true +autostart=true + diff --git a/.config/webpack/webpack.config.ts b/.config/webpack/webpack.config.ts index 59e1963..9b7978a 100644 --- a/.config/webpack/webpack.config.ts +++ b/.config/webpack/webpack.config.ts @@ -12,6 +12,7 @@ import LiveReloadPlugin from 'webpack-livereload-plugin'; import path from 'path'; import ReplaceInFileWebpackPlugin from 'replace-in-file-webpack-plugin'; import { Configuration } from 'webpack'; +import { GrafanaPluginMetaExtractor } from '@grafana/plugin-meta-extractor'; import { getPackageJson, getPluginJson, hasReadme, getEntries, isWSL } from './utils'; import { SOURCE_DIR, DIST_DIR } from './constants'; @@ -140,6 +141,7 @@ const config = async (env): Promise => { }, plugins: [ + new GrafanaPluginMetaExtractor(), new CopyWebpackPlugin({ patterns: [ // If src/README.md exists use it; otherwise the root README diff --git a/package.json b/package.json index 79ca5cc..244c044 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,11 @@ "test:ci": "jest --passWithNoTests --maxWorkers 4", "typecheck": "tsc --noEmit", "lint": "eslint --cache --ignore-path ./.gitignore --ext .js,.jsx,.ts,.tsx .", - "lint:fix": "pnpm run lint -- --fix", + "lint:fix": "pnpm run lint --fix", "server": "docker-compose up --build", "sign": "npx --yes @grafana/sign-plugin@latest", - "spellcheck": "cspell -c cspell.config.json \"**/*.{ts,tsx,js,go,md,mdx,yml,yaml,json,scss,css}\"" + "spellcheck": "cspell -c cspell.config.json \"**/*.{ts,tsx,js,go,md,mdx,yml,yaml,json,scss,css}\"", + "e2e": "playwright test" }, "repository": { "type": "git", @@ -72,7 +73,8 @@ "typescript": "4.8.4", "webpack": "^5.86.0", "webpack-cli": "^5.1.4", - "webpack-livereload-plugin": "^3.0.2" + "webpack-livereload-plugin": "^3.0.2", + "@grafana/plugin-meta-extractor": "^0.0.2" }, "engines": { "node": ">=20"