【发布时间】:2018-06-09 07:14:26
【问题描述】:
我正在尝试通过 Jenkins 声明性管道将提交消息连接字符串传递给 shell 脚本。我可以得到连接的字符串,但我不知道如何将它传递给我的 shell 脚本。环境变量在我的 shell 脚本中是可读的,但我不能在我的阶段之外设置环境变量,因为我定义了我的 git 连接,如果我在阶段中设置它,它不会更新我调用的环境变量在我的帖子部分。如何将 changeString 的值传递给我的 bash 脚本(成功)?
pipeline {
agent any
environment {
CHANGE_STRING = 'Initial default value.'
}
stages {
stage('Build') {
environment {
CHANGE_STRING = 'This change is only available in this stage and not in my shell script'
}
steps {
echo 'Build stage'
git branch: 'develop',
credentialsId: 'blah',
url: 'blah.git'
sh """
npm install
"""
script{
MAX_MSG_LEN = 100
def changeString = ""
def changeLogSets = currentBuild.changeSets
for (int i = 0; i < changeLogSets.size(); i++) {
def entries = changeLogSets[i].items
for (int j = 0; j < entries.length; j++) {
def entry = entries[j]
truncated_msg = entry.msg.take(MAX_MSG_LEN)
changeString += " - ${truncated_msg} [${entry.author}]\n"
}
}
if (!changeString) {
changeString = " - No new changes"
}
//I would like to set CHANGE_STRING here
}
}
}
}
post {
success {
echo 'Successfull build'
sh """
bash /var/lib/jenkins/jobs/my-project/hooks/onsuccess
"""
}
}
}
【问题讨论】:
标签: jenkins groovy jenkins-pipeline