Декларативный конвейер Jenkins с агентом Docker / Dockerfile из SCM - PullRequest
0 голосов
/ 08 мая 2018

С помощью Jenkins, использующего Declarative Pipeline Syntax, как получить Dockerfile (Dockerfile.ci в этом примере) из SCM (Git), поскольку блок agent выполняется перед всеми этапами?

pipeline {
    agent {
        dockerfile {
            filename 'Dockerfile.ci'
        }
    }
    stage ('Checkout') {
        steps {
            git(
                url: 'https://www.github.com/...',
                credentialsId: 'CREDENTIALS',
                branch: "develop"
            )
        }
    }
    [...]
}

Во всех примерах, которые я видел, Dockerfile, похоже, уже присутствует в рабочей области.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

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

0 голосов
/ 08 мая 2018

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

pipeline {
    agent none
    stage ('Checkout') {
        agent any
        steps {
            git(
                url: 'https://www.github.com/...',
                credentialsId: 'CREDENTIALS',
                branch: "develop"
            )
        }
    }
    stage ('Build') {
        agent {
            dockerfile {
            filename 'Dockerfile.ci'
        }
        steps {
            [...]
        }
}
    }
    [...]
}
...