【问题标题】:Docker containers as Jenkins Slave (build agents)Docker 容器作为 Jenkins Slave(构建代理)
【发布时间】:2018-04-28 19:41:50
【问题描述】:

我有一个在容器内运行的詹金斯大师...... 我很想将我的构建容器化,使用 Docker 容器作为 Jenkins Slave(构建代理),在单独的 vm 上运行我的 CI 管道。 这个 Docker 容器(构建代理)将在 CI 管道运行时创建; .构建完成后,Docker 容器将被销毁。 要实现这一点:

  • 我使用 docker 插件如下:

enter image description here

  • 这是我的 jenkinsfile 代码:

    node('docker') { 
      stage('Checkout Code') { 
          checkout scm  }
      stage('Build') {
        withMaven {
            sh 'mvn clean install' }
      }
    }

当我运行我的 peline 时,一切都顺利:

但问题是关于构建结果 (.war)
这些档案是转移到主工作区还是与容器一起销毁? 如果是第二种情况,那么我该如何将构建结果恢复到 jenkins master 以进行 CI 流程??

[INFO] Installing /home/jenkins/workspace/Build_pipeline_team/target/Teams.war to /home/jenkins/.m2/repository/teams/Teams/1.0-SNAPSHOT/Teams-1.0-SNAPSHOT.war
[INFO] Installing /home/jenkins/workspace/Build_pipeline_team/pom.xml to /home/jenkins/.m2/repository/teams/Teams/1.0-SNAPSHOT/Teams-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:12 min
[INFO] Finished at: 2017-11-15T03:40:13+00:00
[INFO] Final Memory: 21M/51M
[INFO] ------------------------------------------------------------------------
[jenkins-maven-event-spy] INFO generated /home/jenkins/workspace/Build_pipeline_team@tmp/withMaven673f8d6e/maven-spy-20171115-033800-6375412806014049683204.log
[Pipeline] }
[withMaven] artifactsPublisher - Archive artifact pom.xml under teams/Teams/1.0-SNAPSHOT/Teams-1.0-SNAPSHOT.pom
[withMaven] artifactsPublisher - Archive artifact target/Teams.war under teams/Teams/1.0-SNAPSHOT/Teams-1.0-SNAPSHOT.war
[withMaven] junitPublisher - Archive test results for Maven artifact teams:Teams:1.0-SNAPSHOT generated by maven-surefire-plugin:test (default-test): target/surefire-reports/*.xml

【问题讨论】:

    标签: docker jenkins build continuous-integration devops


    【解决方案1】:

    当您将舞台封装在一个节点内时,一切都将在该节点上运行。因此,当构建完成时,战争将与容器一起被摧毁。

    你有几种选择来维持战争。

    maven 方式是将工件部署到存储库,例如 nexus。

    另一个 Jenkins 替代方案是在构建完成后将战争隐藏在奴隶身上,然后将其释放回主人身上。这将有效地将隐藏的文件从从节点复制回主节点。

    【讨论】:

    • 请您根据上面的构建结果给我一个关于我的案例中的 stash/unstash 结构的例子吗?
    猜你喜欢
    • 2018-07-18
    • 2023-03-03
    • 2015-10-06
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多