diff --git a/DEV_GUIDE.md b/DEV_GUIDE.md index b38d3fc..00baf5f 100644 --- a/DEV_GUIDE.md +++ b/DEV_GUIDE.md @@ -48,3 +48,27 @@ docker run -d -p 9000:9000 -p 8812:8812 --name secure-questdb-server --ulimit no docker exec -it secure-questdb-server bash cp /var/lib/questdb/conf/keys/my-own-ca.crt /usr/local/share/ca-certificates/root.ca.crt update-ca-certificates + +## Building the release artifact + +⚠️ **Important:** The plugin has to be built from the `main` branch, if intended to be released into Grafana as version update. This is because the automated review process task compares the source tree inside the artifact with the current `main` branch of the repo, and fails if they don't match. + +The final plugin artifact has to be signed either by a key using the [@grafana/sign-plugin](https://www.npmjs.com/package/@grafana/sign-plugin) tool. The script needs `GRAFANA_ACCESS_POLICY_TOKEN` ENV variable to be set before hand - it can be obtained in Grafana Cloud's personal account. + +By default, all the assets are built into `dist` directory, which does not match the Grafana's required one, which should match the plugin ID (in this case, `questdb-questdb-datasource`). Therefore, we need to proceed as following: + +```sh +export GRAFANA_ACCESS_POLICY_TOKEN=your_token +nvm use 20 +yarn build +mage -v buildAll +cp -r dist/ questdb-questdb-datasource +npx @grafana/sign-plugin@latest --distDir questdb-questdb-datasource +zip -r questdb-questdb-datasource.zip questdb-questdb-datasource -r +md5 questdb-questdb-datasource.zip +rm -rf questdb-questdb-datasource +``` + +`md5` checksum is needed only during the process of releasing the plugin version update in Grafana Cloud. + +If intended to release into Grafana, the ZIP file has to be uploaded into a publicly available server (i.e. S3 bucket), since the link to it has to be provided during the update process.