Jenkinfile DSL как указать целевой каталог

Я исследую конвейеры Jenkins 2.0. Пока что мой файл довольно прост.

node {
    stage "checkout"
    git([url:"https://github.com/luxengine/math.git"])

    stage "build"
    echo "Building from pipeline"
}

Кажется, я не могу найти способ установить каталог, в котором git будет проверять. Я также не могу найти никакой документации по этому поводу. Я нашел https://jenkinsci.github.io/job-dsl-plugin/ но похоже, что это не соответствует тому, что я вижу в других уроках.


person Community    schedule 29.03.2016    source источник


Ответы (5)


Разъяснение

Похоже, вы пытаетесь настроить задание Pipeline (ранее известное как Workflow) . Этот тип работы сильно отличается от Job DSL.

Целью работы по трубопроводу является:

Организует длительные операции, которые могут охватывать несколько ведомых устройств сборки. Подходит для построения конвейеров (ранее называвшихся рабочими процессами) и / или организации сложных действий, которые не вписываются в произвольный тип работы.

Где как Job DSL:

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

Решение

Если вы хотите проверить свой код в конкретном каталоге, замените шаг git на более общий шаг checkout SCM. Окончательная конфигурация конвейера должна выглядеть так:

node {
    stage "checkout"
    //git([url:"https://github.com/luxengine/math.git"])
    checkout([$class: 'GitSCM', 
        branches: [[name: '*/master']], 
        doGenerateSubmoduleConfigurations: false, 
        extensions: [[$class: 'RelativeTargetDirectory', 
            relativeTargetDir: 'checkout-directory']], 
        submoduleCfg: [], 
        userRemoteConfigs: [[url: 'https://github.com/luxengine/math.git']]])

    stage "build"
    echo "Building from pipeline"
}

В качестве будущей ссылки на Jenkins 2.0 и Pipeline DSL используйте встроенный генератор фрагментов или документация.

person luka5z    schedule 05.04.2016
comment
Поскольку этот вопрос не о Job DSL, пожалуйста, измените его текст и обновите его теги (jenkins, jenkins-pipeline). - person luka5z; 05.04.2016

Это можно сделать с помощью директивы dir:

def exists = fileExists '<your target dir>'
if (!exists){
    new File('<your target dir>').mkdir()
}
dir ('<your target dir>') {
  git url: '<your git repo address>'
}
person Cross    schedule 08.05.2017
comment
На самом деле, по моему опыту, нет необходимости проверять, существует ли папка, похоже, что dir () создает ее, если отсутствует. Это гораздо более приятное решение, чем переделывать кассу с помощью свойств. - person Oliver; 18.09.2018

Сначала убедитесь, что вы используете Jenkins Job DSL.

Сделать это можно так:

    scm {
        git {
            wipeOutWorkspace(true)
            shallowClone(true);
            remote {
                url("xxxx....")
                relativeTargetDir('checkout-folder')
            }
        }
    }

Этот адрес выше дает вам возможность просто ввести в верхнем левом поле, например, «scm», и тогда он покажет, в каких отношениях можно использовать «scm». Затем вы можете выбрать «scm-freestylejob», а затем щелкнуть «***», чтобы увидеть детали.

Общая отправная точка для Jenkins Job DSL находится здесь:

Вы, конечно, можете спросить здесь, в SO или на форуме Google:

person khmarbaise    schedule 29.03.2016

Вы используете Pipeline Plugin, а не Плагин Job DSL. В подключаемом модуле конвейера, если вы хотите определить что-то там, где еще нет функции, доступной в синтаксисе конвейера, вы можете определите его самостоятельно.

person crasp    schedule 30.03.2016

person    schedule
comment
Я использовал приведенный выше сценарий для создания каталога и проверки кода в этом подкаталоге. - person user3458845; 27.11.2019