使用Pipeline Job和Groovy脚本创建新的Jenkins作业

时间:2018-03-20 10:00:47

标签: jenkins groovy jenkins-pipeline

我有Jenkins管道作业参数(name,group,taskNumber)

我需要编写管道脚本来调用groovy脚本(这个?:https://github.com/peterjenkins1/jenkins-scripts/blob/master/add-job.groovy

我想在每次构建主管道作业时创建新作业(名称为name_group_taskNamber)。

我不明白: 我需要在哪里放置groovy脚本? Pipeline脚本应该如何? :

node{
    stage('Build'){
        def pipeline = load "CreateJob.groovy"
        pipeline.run()
    }
}

2 个答案:

答案 0 :(得分:0)

我们使用https://wiki.jenkins.io/display/JENKINS/Jobcopy+Builder+plugin来做,尝试在管道脚本中构建另一个步骤并传递要考虑的parms

答案 1 :(得分:0)

您可以像这里一样使用和配置shared library(git repo):https://github.com/lvthillo/shared-library。您需要在Jenkins全局配置中配置它。

它包含一个文件夹vars/。在这里,您可以管理我的slackNotifier.groovy之类的管道和常规脚本。该脚本只是一个groovy脚本,用于在Slack中打印构建结果。

在jenkins管道工作中,我们将导入我们的共享库:

@Library('name-of-shared-pipeline-library')_

mavenPipeline {
  //define parameters
}

在上面的情况中,管道也在共享库中,但这不是必需的。

您可以在作业本身编写管道,只调用管道中的函数,如下所示: 这是共享库中的脚本:

// vars/sayHello.groovy
def call(String name = 'human') {
    echo "Hello, ${name}."
}

在你的管道中:

final Lib= library('my-shared-library')

...
  stage('stage name'){
    echo "output"
    Lib.sayHello.groovy('Peter')
  }
...

修改 在新的声明性管道中,您可以使用:

pipeline {
    agent { node { label 'xxx' } }

    options {
        buildDiscarder(logRotator(numToKeepStr: '3', artifactNumToKeepStr: '1'))
    }

    stages {
        stage('test') {
            steps {
                sh 'echo "execute say hello script:"'
                sayHello("Peter")
            }
        }
    }

    post {
        always {
            cleanWs()
        }
    }
}

def sayHello(String name = 'human') {
    echo "Hello, ${name}."
}

输出:

[test] Running shell script
+ echo 'execute say hello script:'
execute say hello script:
[Pipeline] echo
Hello, Peter.
[Pipeline] }
[Pipeline] // stage