Дженкинс: конвейерная работа с SCM и статическим скриптом

#github #jenkins-pipeline #jenkins-job-dsl

#github #дженкинс-конвейер #дженкинс-задание-dsl

Вопрос:

Я бы хотел использовать Jenkins job-dsl pipelineJob для создания задания сборки для репозитория GitHub со статическим (и централизованно поддерживаемым) конвейером.

Но, глядя на документацию (https://jenkinsci.github.io/job-dsl-plugin/#path/javaposse.jobdsl.dsl.DslFactory.pipelineJob-definition) Я могу создать либо cps со статическим скриптом, либо cpsScm с SCM и ссылкой Jenkinsfile на репозиторий.

Требование определения SCM исходит от gitParameter плагина, который я хочу использовать для выбора редакции git.

Есть ли способ, как я могу использовать статический скрипт для конвейера вместе с SCM?


Обновление: это конкретно то, что я хотел бы сделать:

  • определение конвейерного задания
  • использование параметра git для выбора редакции
  • объявить конкретный скрипт встроенным
     pipelineJob("test") {
            parameters {
                gitParameter {
                    name('revision')
                    type('PT_BRANCH_TAG')
                    defaultValue('origin/master')
                    selectedValue('DEFAULT')
                    description('')
                    branch('')
                    branchFilter('')
                    tagFilter('')
                    useRepository('')
                    quickFilterEnabled(true)
                }
            }
            logRotator {
                numToKeep(50)
            }
    
            definition {
                cpsScm {
                    scm {
                        git {
                            remote {
                                github("<my-repo>")
                                credentials('github')
                            }
    
                            branch('$revision')
                        }
                    }
    
                    script("""
    @Library(value='pipeline-lib@master', changelog=false) _
    myPipeline projectName: 'test-name' 
    """)
                }
            }
        } 

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

1. Чтобы ответить на ваш вопрос буквально: да, вы можете вставить Jenkinsfile в консоль заданий, а затем использовать checkout класс для извлечения кода. Однако это может быть не то, что вы на самом деле спрашиваете. В таком случае, пожалуйста, приведите пример того, что вы пытаетесь выполнить здесь.

2. Привет, Мэтт, я добавил еще несколько деталей. Это помогает?

3. Да, тогда мой комментарий имеет отношение к тому, что вы хотите.

4. Извините, я что-то здесь пропустил. Вы имеете в виду, что я должен просто создать конвейер с приведенным выше pipelineJob определением? Это не сработает, поскольку script доступно только для cps определений, а не для cpsScm . Последнее я должен использовать, чтобы параметр gitParameter мог извлекать доступные теги и имена ветвей. Знаете ли вы альтернативу gitParameter ?