grafana/integration-grafana-publisherGrafana Publisher 是一个用于将插件发布到 grafana.com 的工具,支持通过命令行或在 CircleCI 环境中运行。该工具提供了一系列命令,覆盖插件发布流程的各个环节,包括环境验证、信息查询、暂存发布和正式发布等功能。
运行不带参数的应用程序将显示帮助信息:
bashdocker run grafana/integration-plugin-publisher:latest
| 选项 | 缩写 | 描述 |
|---|---|---|
| --version | -V | 输出版本号 |
| --auto | -a | 无交互模式运行,自动回答所有提示 |
| --log [logfile] | -l | 日志输出到文件 |
| --loglevel [info|debug] | 设置日志级别 (info 或 debug) | |
| --dryrun | -d | 试运行模式,不执行实际操作 |
| --help | -h | 显示帮助信息 |
| 环境变量 | 用途 |
|---|---|
| GCOM_PUBLISH_TOKEN | 具有发布权限的 grafana.com API 密钥 |
| GCOM_ADMIN_TOKEN | 具有管理员权限的 grafana.com API 密钥(仅用于 setdependency 命令,普通发布不需要) |
| GITHUB_TOKEN | 具有仓库读写权限的 GitHub API 令牌 |
| GCLOUD_SERVICE_KEY | 具有 GCS 集成 artifacts 存储桶写入权限的 JSON 密钥内容 |
这些变量值可在 1Password 中找到,并且在每个 CircleCI 项目中已预设。
| 命令 | 描述 |
|---|---|
| validate | 检测运行应用程序所需的环境设置 |
| info | 收集并显示指定本地插件的信息 |
| inforemote | 收集并显示指定远程插件的信息 |
| stage | 执行插件到暂存环境的发布(当前未实现) |
| stageremote | 执行远程插件到暂存环境的发布(当前未实现) |
| publish | 执行本地插件到生产环境的发布 |
| publishremote | 执行远程插件到生产环境的发布 |
| setdependency | 设置插件的 grafanaDependency 属性 (>=7.0.0 格式) |
| help | 显示命令帮助信息 |
验证环境变量是否存在且能正常工作,dryrun 和 publish 命令会自动运行此验证。
bashdocker run \ -e GCOM_PUBLISH_TOKEN=$GCOM_PUBLISH_TOKEN \ -e GITHUB_TOKEN=$GITHUB_TOKEN \ -e GCLOUD_SERVICE_KEY=$GCLOUD_SERVICE_KEY \ grafana/integration-plugin-publisher:latest \ grafana-publisher.js validate
输出示例:
OK: Publish to GCOM Key found in environment setting OK: GCS Authentication found in environment setting OK: GIT Key found in environment setting [2020-07-25T05:51:54.047] [DEBUG] publisher - GCOM testing GET to [***] OK: GCOM is working Validation Successful
获取本地仓库中已发布插件的摘要信息,需要本地存在 plugin.json 文件且与插件 ID 匹配。
bashdocker run \ -v $(pwd):/workspace \ -w /workspace \ grafana/integration-plugin-publisher:latest \ grafana-publisher info grafana-newrelic-datasource dist/plugin.json 2.0.5
获取已发布插件的摘要信息,通过插件 ID 标识,可指定版本(默认为最新版本)。
bashdocker run \ -e GITHUB_TOKEN=$GITHUB_TOKEN \ grafana/integration-plugin-publisher:latest \ grafana-publisher inforemote grafana-newrelic-datasource 2.0.5
执行本地插件到生产环境的发布,这是应用程序的主要功能。
bashdocker run \ -v $(pwd):/workspace \ -w /workspace \ -e GCOM_PUBLISH_TOKEN=$GCOM_PUBLISH_TOKEN \ -e GITHUB_TOKEN=$GITHUB_TOKEN \ -e GCLOUD_SERVICE_KEY=$GCLOUD_SERVICE_KEY \ grafana/integration-plugin-publisher:latest \ grafana-publisher publish grafana-newrelic-datasource 2.0.5 dist/plugin.json
通过指定仓库 URL 和版本号,无需本地检出代码即可将插件发布到生产环境。
bashdocker run \ -e GCOM_PUBLISH_TOKEN=$GCOM_PUBLISH_TOKEN \ -e GITHUB_TOKEN=$GITHUB_TOKEN \ -e GCLOUD_SERVICE_KEY=$GCLOUD_SERVICE_KEY \ grafana/integration-plugin-publisher:latest \ grafana-publisher publishremote [***] 1.0.0
设置插件的 grafanaDependency 属性,值的格式应为 >=7.0.0。
bashdocker run \ -e GCOM_PUBLISH_TOKEN=$GCOM_PUBLISH_TOKEN \ -e GCOM_ADMIN_TOKEN=$GCOM_ADMIN_TOKEN \ grafana/integration-plugin-publisher:latest \ grafana-publisher setdependency grafana-newrelic-datasource 2.0.5 '>=7.0.0'
bashdocker run \ -e GCOM_PUBLISH_TOKEN=$GCOM_PUBLISH_TOKEN \ -e GITHUB_TOKEN=$GITHUB_TOKEN \ -e GCLOUD_SERVICE_KEY=$GCLOUD_SERVICE_KEY \ grafana/integration-plugin-publisher:latest \ grafana-publisher validate
yaml# .circleci/config.yml 片段 jobs: publish-plugin: docker: - image: grafana/integration-plugin-publisher:latest environment: - GCOM_PUBLISH_TOKEN: $GCOM_PUBLISH_TOKEN - GITHUB_TOKEN: $GITHUB_TOKEN - GCLOUD_SERVICE_KEY: $GCLOUD_SERVICE_KEY steps: - checkout - run: name: Publish plugin to grafana.com command: grafana-publisher --auto --loglevel debug publish my-plugin-id $CIRCLE_TAG dist/plugin.json
bash# 测试发布(dryrun 模式) docker run \ -v $(pwd):/workspace \ -w /workspace \ -e GCOM_PUBLISH_TOKEN=$GCOM_PUBLISH_TOKEN \ -e GITHUB_TOKEN=$GITHUB_TOKEN \ -e GCLOUD_SERVICE_KEY=$GCLOUD_SERVICE_KEY \ grafana/integration-plugin-publisher:latest \ grafana-publisher --dryrun --loglevel debug publish grafana-newrelic-datasource 2.0.5 dist/plugin.json
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务