我正在尝试为 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/