java - 通过 Groovy 脚本配置 Jenkins Hockeyapp 插件

标签 java jenkins groovy jenkins-plugins hockeyapp

我正在尝试为 Jenkins 配置 Hockeyapp 插件,以从环境变量中获取 API token 。到目前为止,我已经设法获得适用于 Jenkins 初始加载的东西,设置 API token ,但如果我更改环境变量并重新加载 Jenkins,则不会应用新 token 。

我对发生的事情的理解是我的脚本正在为 Hockeyapp 创建一个新的描述符,并保存它 - 它在初始 Jenkins 负载上工作,因为该描述符不存在。在更改 token 并重新启动时,描述符确实存在,但我没有更改它,这就是为什么从第二次启动开始就出现问题的原因。

import hockeyapp.*

def env = System.getenv()
def hockeyappConfig = new HockeyappRecorder.DescriptorImpl()

String apiToken = env['HOCKEYAPP_API_TOKEN'] ?: ''

if (apiToken?.trim()) {
    hockeyappConfig.setDefaultToken(apiToken)
    hockeyappConfig.save()
}

有谁能够解释如何通过 Groovy 获取 Hockeyapp 的现有配置,以便可以对其进行编辑,最好使用代码(我的 Java 不好)?

我认为答案就在Jenkins.getInstance()中的某个地方然后取出 Hockeyapp 配置,但我对 Java/Groovy 和 Jenkins 的编程配置不熟悉,有点超出了我的深度。

相关JavaDoc:

最佳答案

下面的常规脚本对我有用 - 使用 getExtensionList 获取当前配置后,可以更改 token 。

File: $JENKINS_HOME/init.groovy.d/hockeyapp.groovy

/*
    Set the default API token for Hockeyapp in global configuration

    Environment Variables:
    - HOCKEYAPP_API_TOKEN: Hockeyapp API Token
*/ 
import hockeyapp.*
import jenkins.model.Jenkins

def env = System.getenv()

Jenkins jenkins = Jenkins.getInstance()
def hockeyappConfig = jenkins.getExtensionList(HockeyappRecorder.DescriptorImpl.class)[0]

String apiToken = env['HOCKEYAPP_API_TOKEN'] ?: ''

if (apiToken?.trim()) {
    hockeyappConfig.setDefaultToken(apiToken)
    hockeyappConfig.save()
}

关于java - 通过 Groovy 脚本配置 Jenkins Hockeyapp 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52311381/

相关文章:

java - Maven/Nexus - 自动依赖更新

github - 如何使用 Jenkins 管道将测试覆盖率发布到 Github 拉取请求?

java - 处理超出需要的属性

java - 如何将文件的内容添加到数组列表中

java - 即使删除后对象也会重新绘制

java - 将 out.println 转换为 c :out

Groovy - 使用迭代器添加映射条目

java - MultipartFile 到字节数组

jenkins - 如何将 Jenkins 节点列表添加到事件选择参数中,并只为当前登录用户显示这些节点

groovy - Geb:页面内容列表