Я пытаюсь настроить плагин Hockeyapp для Jenkins, чтобы он брал токен API из переменной среды. Пока мне удалось получить что-то, что работает для загрузки исходный Jenkins, установив токен 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()
}
Может ли кто-нибудь объяснить, как получить существующую конфигурацию для Hockeyapp через Groovy, чтобы ее можно было редактировать, в идеале с помощью кода (моя Java не подходит)?
Я думаю, что ответ заключается в где-то в Jenkins.getInstance()
, а затем в извлечении конфигурации Hockeyapp, но я немного теряю свою глубину из-за незнания как Java / Groovy, так и программной конфигурации Jenkins.
Соответствующий JavaDoc:
Приведенный ниже сценарий 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()
}