Как я могу определять и использовать функции в jenkinsfile? - PullRequest
0 голосов
/ 10 июля 2020

Я хочу получить вывод из сценария оболочки git diff в переменную, а затем запустить для нее определенную пользователем функцию. Как я могу объявить эти функции, которые я хочу написать, и как я могу их использовать?

pipeline{
agent any
parameters {
        string(name: 'branchA', defaultValue: 'master', description: 'Comapare which branch?')

        string(name: 'branchB', defaultValue: 'dev', description: 'Compare with which branch?')
}

stages {
    stage('Build') {
        steps{
            checkout([$class: 'GitSCM',
                branches: [[name: '*/master']],
                doGenerateSubmoduleConfigurations: false,
                extensions: [[$class: 'CleanBeforeCheckout']],
                submoduleCfg: [],
                userRemoteConfigs:  [[credentialsId: 'gitCreds', url: "https://github.com/DialgicMew/example.git"]]])
 
                sh "git diff --name-only remotes/origin/${params.branchA} remotes/origin/${params.branchB}"    
         }
    
    stage('Functions on the result') {
        steps{
            echo "Functions to be used here"
        }
    }
}
}
```




1 Ответ

1 голос
/ 11 июля 2020

Вы можете определять функции, как в любом сценарии Groovy, и вы можете записывать вывод любой команды оболочки, передав ей параметр returnStdout . Я думаю, вам нужна среда со сценариями для вызова функций и определения переменных. Это будет выглядеть так:

pipeline{
    // your pipeline
    scripted {
        def output = sh returnStdout: true, script: "git diff ..."
        def result = workWithOutput(output)
        println result
    }

}

def workWithOutput(text){
    return text.replace("foo", "bar")
}
...