Jenkins 声明式管道与来自 SCM 的 Docker/Dockerfile 代理

Jos*_*hua 4 jenkins docker dockerfile jenkins-pipeline

Jenkins 使用Declarative Pipeline Syntax如何Dockerfile.ci从 SCM (Git)获取 Dockerfile(在本例中),因为agent块是在所有阶段之前执行的?

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

在我看到的所有示例中,Dockerfile 似乎已经存在于工作区中。

小智 5

您可以尝试分别为每个阶段声明代理,对于结帐阶段,您可以为其他阶段使用一些默认代理和 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 {
            [...]
        }
}
    }
    [...]
}
Run Code Online (Sandbox Code Playgroud)