如何在詹金斯自由泳项目中使用码头集装箱?

lex*_*lex 3 jenkins jenkins-pipeline

我能够在 Jenkins 中创建一个“管道”项目,我在其中指定一个 Jenkinsfile 以使用 docker 容器来运行所有阶段,如下所示:

pipeline {
agent {
    docker { 
        image '<registry>:<port>/<image name>'
        registryUrl '<url>'
        registryCredentialsId 'ARTIFACTORY_CREDS'

    }
}
stages {
    stage ('Environment') {
        steps {
           sh "env | sort"
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常。但由于我希望将 Jenkins 发布管理流程用于 gradle 项目,因此我更愿意使用“自由式项目”项目。我不确定如何指定用于构建过程的 docker 镜像。似乎我们也无法提供 Jenkinsfile。任何指针都会有所帮助。我想复制与 Jenkinsfile 相同的行为。

詹金斯版本:2.107.3

Dan*_*ano 5

看看这个插件- 它对我有用。

如果您在容器中运行 Jenkins 本身-v /var/run/docker.sock:/var/run/docker.sock,则需要完成一些额外的工作。就我而言,我不得不:

  1. 确保在 Jenkins 中安装为 JENKINS_HOME 的卷可以通过我的构建器容器安装在相同的路径上。我正在使用 Docker 卷,必须迁移到外部卷才能工作。
  2. 确保 /tmp 目录 - 从 Jenkins 容器中看到的 - 与我的构建器容器看到的 /tmp 相同。我可以通过使用额外的-v /tmp:/tmp. 这是必要的,因为插件通过写入该位置的临时 shell 脚本传递构建指令。
  3. 如果您使用 selinux 运行,请在构建环境定义中启用“以特权模式运行”选项,否则生成的工件将不会写回作业的 Jenkins 工作区。