Файл Дженкинса, сценарий предварительной сборки

#jenkins #jenkins-pipeline #jenkins-plugins

#дженкинс #дженкинс-конвейер #дженкинс-плагины

Вопрос:

Я использую конвейер Дженкинса. Мой вариант использования заключается в том, что разработчик использует простой файл *.ini, который анализируется скриптом python, чтобы добавлять или удалять stage в файле jenkins, когда они захотят. Я не хочу, чтобы они вручную редактировали файл jenkins, потому что они не будут знать, как это работает.

Ожидаемое поведение: При запуске сборки я хотел бы сначала выполнить скрипт на python, который может записывать в файл jenkins для добавления / удаления этапа в соответствии с файлом *.ini.

Насколько я понимаю, когда событие запускает сборку jenkins, первое, что оно делает, это открывает jenkinsfile. Однако я хотел бы знать, возможно ли запустить какой-нибудь сценарий предварительной сборки перед этим?

Спасибо

Редактировать: вот простой вид запуска конвейера (пользовательский интерфейс blue ocean) Конвейер

Файл ini может, например, удалить на этапе компиляции пошаговый план сборки C, удалив groovy-код, выполняющий это в файле jenkins

Комментарии:

1. как насчет изменения модели на параметризованные конвейеры ? Я сам им не пользовался, но, похоже, он лучше подходит для вашего случая. Итак, вместо того, чтобы анализировать файл, чтобы решить, что делать, вы можете создать это на основе переданного параметра и все, что вы думаете?

2. Я собираюсь изучить это сегодня днем, чтобы увидеть, соответствует ли это моим потребностям, спасибо за ваш ответ

3. Хорошо, я также попытаюсь подготовить простой пример и опубликовать его в качестве полного ответа позже

4. Спасибо, мне удалось добавить параметр в свой конвейер благодаря вашей ссылке и следующей минуте Дженкинса . Однако мне не удалось использовать вызов API для запуска сборки с пользовательским параметром без взаимодействия с пользователем. В настоящее время я проверяю, подойдет ли такое поведение для каждого предполагаемого мной варианта использования, и я вернусь к вам позже.

5. Когда сборка запускается автоматически, параметром по умолчанию будет use, который у меня не будет работать. Например, при переходе к ветке будет использоваться параметр по умолчанию, но я мог бы использовать git-хук для запуска скрипта, который проанализирует файл *.ini, а затем сгенерирует правильный URL-адрес с параметром, необходимым для запуска Jenkins.

Ответ №1:

Приведите пример для справки.

     node {
    
    
      git url: '', branch: '', credentialsId: ''
    
    
      def parseStr = sh(script: 'python parser.py xxx.ini', returnStdout: true).trim()

      // the python parser expect to return a JSON string like: 
      // {'run_stage1': false, 'run_stage2': true}
    
      def parseObj = readJSON text: parseStr
    
      
    
        stage('stage 1') {
           if(parseObj.run_stage1) {
             echo 'stage1'
             ...
           }    
        }
       
        stage('stage 1') {
            if(parseObj.run_stage2) {
               echo 'stage1'
               ....
            }    
        }
    
    }
  

Конвейер Дженкинса предоставлял API: readJSON, readYaml, readProperties для чтения файлов JSON, YAML и Properties.

Если вы выберете любой из них для замены ini файла, вы можете удалить анализатор python, чтобы упростить свой конвейер

Комментарии:

1. Скрипт на python не нужен, мне нужно только предоставить определенный параметр конвейеру, похоже, что эти API тоже могут выполнить эту работу. Спасибо, я изучаю это