【问题标题】:Multi-Branch Pipeline project with Jenkinsfile and Docker best practise具有 Jenkinsfile 和 Docker 最佳实践的多分支管道项目
【发布时间】:2016-07-21 09:18:05
【问题描述】:

我是 Jenkins 和 Docker 的新手,并且已经构建了一个新的多分支管道项目,以独立于我们的构建服务器配置。我的应用程序包含一个包含多个阶段的 Jenkinsfile,并使用了两个 docker 镜像:一个是 DockerHub 的官方 Mongo 镜像,另一个是我自己创建的 docker 镜像,包括 Maven 和 Mercurial。

Dockerfile:

FROM maven:3.3.9-jdk-8
RUN apt-get update && apt-get install -y -q mercurial

我使用它在第一阶段检查我的项目,并在第二阶段使用 maven 构建它。

我的 Jenkinsfile 如下所示:

node {

    //...

    //CREATE A MONGO DOCKER IMAGE
    def dockerMongoImage = docker.image("mongo");

    // getting our maven container
    def maven = docker.build('my:docker', '../workspace')

    dockerMongoImage.withRun{ mongo ->
        maven.inside("--link=${mongo.id}:mongo") {
            stage "checkout branch '${env.BRANCH_NAME}'"

                def cloneUrl = createScmCloneUrl("https", scmUser, scmPassword, scmHref )
                sh "hg clone ${cloneUrl} -r ${env.BRANCH_NAME} ${workingDir} --insecure"

            stage "build - running clean install"
                runMvn(workingDir, mvnSettingsLocation, "clean install -U -V -DskipTests=true -X")

            // AND SO ON

整个配置运行良好,但我对容器内的结帐不太满意。 我的问题是,有没有比在容器内结帐更好的解决方案。这将防止我遇到的 DNS 出现一些问题。 有没有人有这方面的经验,可以告诉我最佳实践是什么。我通过谷歌搜索了很多次,但没有得到任何好的解决方案。 感谢您的帮助。

【问题讨论】:

    标签: maven jenkins docker mercurial jenkins-pipeline


    【解决方案1】:

    先查看节点上的代码,然后使用-v将该文件夹挂载到docker容器中

    (-v, --volume=[host-src:]container-dest[:]: 绑定挂载一个卷。)

    stage "checkout branch '${env.BRANCH_NAME}'"
    def cloneUrl = createScmCloneUrl("https", scmUser, scmPassword, scmHref )
    sh "hg clone ${cloneUrl} -r ${env.BRANCH_NAME} ${workingDir} --insecure"
    
    stage "build - running clean install"
    dockerMongoImage.withRun{ mongo ->
        maven.inside("--link=${mongo.id}:mongo -v ${workingDir}:/source") {
            runMvn("/source", mvnSettingsLocation, "clean install -U -V -DskipTests=true -X")
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多