通过 Groovy 脚本配置 Jenkins Hockeyapp 插件

Configure Jenkins Hockeyapp plugin via Groovy script

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

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

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 的编程配置。

相关Java文档:

下面的 groovy 脚本对我有用 - 在使用 getExtensionList 获取当前配置后,可以更改令牌。

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()
}