Передать параметры конвейера Jenkins из задания Jenkins? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть сценарий Jenkins Pipeline, используемый для развертывания лямбд.Прямо сейчас пользователь передает параметры в задание, чтобы запустить его.Я хочу еще немного автоматизировать задание и создать процесс, при котором задание запускается, а параметры передаются через файл JSON для запуска задания.

Мне не ясно, как действовать.Видно, что, возможно, можно использовать JsonSlurper, но не уверен, что это идеальное решение для этого процесса.

У кого-нибудь есть хорошее решение, которое я мог бы реализовать?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Я бы порекомендовал плагин GenericWebhook.

Вы можете определить токен, а затем использовать запрос POST для запуска задания с любым JSON, который вам нужен.Плагин позаботится о запуске задания и даже о распаковке переменных из JSON, если вы этого хотите.

0 голосов
/ 20 сентября 2019

Возможно, это не лучшее решение, но я часто его использую.Вы можете прочитать в файле JSON, например, так ..

node() {
    stage("Read JSON") {
        // This has to be done within a node() construct
        myObj = readJSON file: '/opt/app/jenkins/userContent/test.json'
    }
}

Вот простой файл JSON для проверки с помощью ..

{
  "Hosts": [
    { 
      "Hostname": "host1.foobar.com",
      "Purpose": "Web Server"
    },
    { 
      "Hostname": "host2.foobar.com",
      "Purpose": "DB Server"
    },
    { 
      "Hostname": "host3.foobar.com",
      "Purpose": "App Server"
    }
  ]
}

Вы можете ссылаться на него так ...

for (int hostnum=0; hostnum < myObj.Hosts.size(); hostnum++) {
   println "Hostname: " + myObj.Hosts[hostnum].Hostname
   println "Purpose: " + myObj.Hosts[hostnum].Purpose
}

Из журнала сборки ..

Hostname: host1.foobar.com
[Pipeline] echo
Purpose: Web Server
[Pipeline] echo
Hostname: host2.foobar.com
[Pipeline] echo
Purpose: DB Server
[Pipeline] echo
Hostname: host3.foobar.com
[Pipeline] echo
Purpose: App Server
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...