流水线创建好了:https://blog.csdn.net/wxt_hillwill/article/details/118725982

语法也学习完成:https://blog.csdn.net/wxt_hillwill/article/details/118730053

现在让我回到最开始要做的的事情,串联多个Job:

1、pipeline通过build方法触发Job

pipeline{
    stages{
        stage('JobA'){
            steps{
                build job: 'JobNameA'
            }
        }
    }
}

2、如果需要串联多个Job,只需要多次调用build方法即可:

pipeline{
    stages{
        stage('JobA'){
            steps{
                build job: 'JobNameA'
            }
        }
        stage('JobB'){
            steps{
                build job: 'JobNameB'
            }
        }
    }
}

3、再通过parameters实现参数化:

pipeline{
    agent{
        label '192.168.210.62'
    }
    stages{
        stage('JobA'){
            steps{
                build job: 'JobNameA', parameters: [string(name: 'ServerPackage', value: "${ServerPackage}"), string(name: 'Console_IP', value: "${Console_IP}")]
            }
        }
        stage('JobB'){
            steps{
                build job: 'JobNameB', parameters: [string(name: 'ServerPackageNew', value: "${ServerPackageNew}"), string(name: 'UpdatePackage', value: "${UpdatePackage}"), string(name: 'Console_IP', value: "${Console_IP}")]
            }
        }
    }
}

4、关于文件上传的问题

        因为我还有一个文件参数需要传递,所以上面的实现还存在一个问题。直接使用Jenkins Pipeline的File parameter,无法将文件上传到当前job的workspace下,需要通过调用第三方jenkinsci-unstashParam-library库实现。配置方法:

        ① 下载jenkinsci-unstashParam-library的zip压缩包,再将其解压并拷贝到Jenkins本机(我拷贝到了/opt/identity/Jenkins2Library/jenkinsci-unstashParam-library-master目录下)。下载地址:https://github.com/janvrany/jenkinsci-unstashParam-library

        ② 再以此执行几个命令:

git init
git add .
git commit -m "init"

        ③ 登录Jenkins界面,在系统管理->系统配置里面找到Global Pipeline Library,按照下面的方式进行配置并保存:

        ④ 最终优化完成的实现如下:

library "jenkinsci-unstashParam-library"
def json_upload
pipeline{
    agent{
        label '192.168.210.62'
    }
    stages{
        stage('JobA'){
            steps{
                build job: 'JobNameA', parameters: [string(name: 'ServerPackage', value: "${ServerPackage}"), string(name: 'Console_IP', value: "${Console_IP}")]
            }
        }
        stage('json_upload'){
            steps{
                script{
                    json_upload = unstashParam "abc.json"
                    sh "pwd ${json_upload}"
                    sh "mv ${json_upload} ../JobNameB/"
                    println "curr file is: ${json_upload}"
                }
            }
        }
        stage('JobB'){
            steps{
                build job: 'JobNameB', parameters: [string(name: 'ServerPackageNew', value: "${ServerPackageNew}"), string(name: 'UpdatePackage', value: "${UpdatePackage}"), string(name: 'Console_IP', value: "${Console_IP}")]
            }
        }
    }
}

5、运行一下,最后看一下效果 \^o^/

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐