当前位置:  开发笔记 > 编程语言 > 正文

Jenkins管道在不同的文件夹中工作

如何解决《Jenkins管道在不同的文件夹中工作》经验,为你挑选了1个好方法。

好的,所以我只是在学习Jenkins中的管道,并且遇到了一个小问题。它正在将我的war文件构建在一个目录中,但尝试在另一个目录中构建docker映像,这当然会失败。

因此速记日志很好地描述了该问题:

[Pipeline] stage
[Pipeline] { (build war)
[Pipeline] node
Running on Jenkins in /root/.jenkins/workspace/Wunderbaren@2
[Pipeline] {

[Pipeline] stage
[Pipeline] { (build dockerimage)
[Pipeline] script
[Pipeline] {
[Pipeline] dir
Running in /root/.jenkins/workspace/Wunderbaren/backend
[Pipeline] {

Jenkins文件:

pipeline {
    agent any
    stages {
        stage('build war') {
            agent {
                docker { image 'gradle:latest' }
            }
            steps {
                sh 'gradle war -b backend/build.gradle'
            }
        }
        stage('build dockerimage') {
            steps {
                script {
                    dir('backend/') {
                        def image = docker.build("munhunger/wunderbaren")

                        docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
                            image.push("${env.BUILD_NUMBER}")
                            image.push("latest")
                        }
                    }
                }
            }
        }
    }
}

我感到奇怪的是,我有一个几乎完全相同的配置的相似项目。只是文件夹名称和docker标签不同。而且这似乎在100%的情况下都有效,所以我对此感到非常迷茫!



1> munHunger..:

原来您需要重用该节点:

stage('build war') {
    agent {
        docker { 
            image 'gradle:latest'
            reuseNode true
        }
    }
    steps {
        sh 'gradle war -b backend/build.gradle'
    }
}

从我在https://go.cloudbees.com/docs/cloudbees-documentation/use/reference/pipeline/中找到的文档中

redirectNode 一个布尔值,默认为false。如果为true,请在同一工作空间的管道顶层指定的节点中运行容器,而不要在新的节点上完全运行容器。此选项对docker和dockerfile有效,并且仅在单个阶段的代理上使用时才有效。

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有