Я пытаюсь автоматизировать создание сборки Jenkins Pipeline из конвейера.

У меня есть конвейер, который создает репозиторий Bitbucket и фиксирует в нем некоторый код, включая файл Jenkins.

Мне нужно добавить еще один шаг к этому конвейеру, чтобы затем создать для него сборку конвейера, которая будет запускать шаги в файле Jenkins.

Я думаю, что DSL Jobs должен справиться с этим, но документации, которую я нашел для этого, было очень мало, и я до сих пор не совсем уверен, возможно ли это и как это сделать.

Любая помощь будет оценена по достоинству. Сгенерированная сборка конвейера, как мне кажется, просто должна иметь ссылку на репозиторий и запускать там Jenkinsfile?

0
James 19 Ноя 2018 в 12:53

2 ответа

Лучший ответ

Да, Job DSL - это то, что вам нужно для вашего случая использования.

См. this и this, чтобы помочь вам начать работу.

ИЗМЕНИТЬ

pipeline {
agent {
        label 'slave'
    }
    stages{
        stage('stage'){
            steps {
                // some other steps

                jobDsl scriptText: '''pipelineJob(\'new-job\') {

                    def repo = \'https://xxxxx@bitbucket.org/xxxx/dummyrepo.git\'

                    triggers {
                        scm(\'H/5 * * * *\')
                    }

                    definition {
                        cpsScm {
                            scm {
                                git {
                                    remote { 
                                        url(repo) 
                                        credentials('bitbucket-jenkins-access')
                                    }
                                    branches(\'master\')
                                    scriptPath(\'Jenkinsfile\')
                                    extensions { } 
                                }
                            }
                        }
                    }
                }'''                    
            }           
        }
    }
}

Документация - https://jenkinsci.github.io/job -dsl-plugin / # путь / pipelineJob-scm-git

1
ben5556 19 Ноя 2018 в 21:37

Используя эту библиотеку python jenins-job-builder, вы можете легко создать свой ожидаемый конвейер или задание свободного стиля из другого конвейера или из любого другого удаленного места.

Примере:

Шаги-1

python3 -m venv .venv
source .venv/bin/activate
pip install --user jenkins-job-builder

Шаги-2

После того, как вы сделали выше, создайте 2 файла, один с именем config.ini, а другой - job.yml. Обратите внимание - строгих правил в отношении имени файла нет. Все зависит от вас.

Файл config.ini может выглядеть так:

[job_builder]
allow_duplicates = False
keep_descriptions = False
ignore_cache = True
recursive = False
update = all
[jenkins]
password = jenkins-password
query_plugins_info = False
url = http://jenkins-url.net
user = jenkins-username

Если вы создаете задание конвейера, ваш файл job.yml может выглядеть так:

- job:
      name: pipeline01
      display-name: 'pipeline01'
      description: 'Do not edit this job through the web!'
      project-type: pipeline
      dsl: |
        node(){
          stage('hello') {
            sh 'echo "Hellow World!"'
          }
        }

Шаги-3

После всего вышеперечисленного. Вызвать команду ниже

jenkins-jobs --conf config.ini update job.yml

Примечание. Команда jenkins-jobs может быть доступна только в том случае, если вы выполнили шаги 1.

1
Samit Kumar Patel 12 Июл 2020 в 13:08