如何将阶段内的步骤移动到Jenkins管道中的函数

sy5wg1nm  于 2023-01-25  发布在  Jenkins
关注(0)|答案(1)|浏览(169)

我有一个这样的Jenkins档案

pipeline {
        agent { label 'master' }
        stages {
            stage('1') {
                steps {
                    script {
                        sh '''#!/bin/bash
                        source $EXPORT_PATH_SCRIPT
                        cd $SCRIPT_PATH
                        python -m scripts.test.test
                        '''
                    }
                }
            }
            stage('2') {
                steps {
                    script {
                        sh '''#!/bin/bash
                        source $EXPORT_PATH_SCRIPT
                        cd $SCRIPT_PATH
                        python -m scripts.test.test
                        '''
                    }
                }
            }
        }
    }

正如你所看到的,在这两个阶段我都使用相同的脚本,调用相同的文件。我可以把这一步移到Jenkinsfile中的一个函数,然后在脚本中调用这个函数吗?就像这样

def execute script() {
         return {
           sh '''#!/bin/bash
           source $EXPORT_PATH_SCRIPT
           cd $SCRIPT_PATH
           python -m scripts.test.test
           '''  
    }
    }
uplii1fm

uplii1fm1#

是的,这是可能的,如下面的例子:
Jenkins菲尔

def doIt(name) {
    return "The name is : ${name}"
}

def executeScript() {
    sh "echo HelloWorld"
}

pipeline {
    agent any;
    stages {
        stage('01') {
            steps {
                println doIt("stage 01")
                executeScript()
            }
        }
        stage('02') {
            steps {
                println doIt("stage 02")
                executeScript()
            }
        }
    }
}

相关问题