如何在詹金斯自由泳项目中使用Docker容器?

时间:2018-08-04 00:14:24

标签: 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"
        }
    }
  }
}

这很好。但是,由于我希望对gradle项目使用Jenkins发布管理过程,因此我宁愿使用“自由式项目”项目。我不确定如何在此处指定用于构建过程的docker映像。似乎我们也无法提供Jenkinsfile。任何指针都会有所帮助。我想复制与Jenkinsfile相同的行为。

Jenkins版本:2.107.3

1 个答案:

答案 0 :(得分:0)

看看这个plugin-对我有用。

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

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