我有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()
}
}
答案 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