我们有一个包含多个项目的仓库,每发布一个版本,我们的脚本就会更改特定版本的所有快照。
这可能会导致Triger建立詹金工作。
当前,我正在使用作业,并在项目列表中导航并通过以下shell脚本进行限制。
如果我手动运行,声明式程序是否能够识别出代码已更改?
用于cat projects-list.txt中的文件;如果测试-d $ file;然后
echo "Checking project $file"
AUTHOR=$(git log -1 --format='%an' -- "$file")
if [ "${AUTHOR}" != "release" ]; then
echo "Detected changes in project $file"
cd $file
echo "Building project $file"
mvn clean install -U`
我也尝试了以下脚本,但是变量显示为null,我正在通过管道插件的“管道脚本”选项进行测试。(内联脚本)
pipeline {
agent any
stages {
stage ('checkout') {
steps {
git url: 'https://my.com/scm/java/my.git'
}
}
stage('Build') {
steps {
echo 'Building.. branch'+env.BRANCH_NAME
echo env.CHANGE_AUTHOR
echo env.CHANGE_AUTHOR_DISPLAY_NAME
}
}
}
}
答案 0 :(得分:0)
我逐步介绍了以下脚本,如果有人有更好的解决方案,请更新
script {
def changeLogSets = currentBuild.changeSets
def commitAuthor =""
def commitMsg =""
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]
commitAuthor = "${entry.author}"
commitMsg = "${entry.msg}"
echo "${entry.commitId} by ${entry.author} on ${new Date(entry.timestamp)}: ${entry.msg}"
}
}
if(commitAuthor == 'release' || commitMsg.contains("INTERIM") ) {
echo "condition meet"
}
}