我正在使用Jenkins声明性管道,并且仅在仅在指定目录中进行更改的情况下,我才尝试执行特定的构建阶段。
所以我的目录层次结构看起来像这样:
root
├─ some-directory
| ├─ sub-directory
| | └─ file-1
| ├─ file-1
| └─ file-2
├─ another-directory
| ├─ file-1
| └─ file-2
├─ file-x
└─ file-y
这是当前代码:
stage ("Deploy branches") {
agent any
when {
allOf {
not { branch 'master' }
changeset "some-directory/**"
}
}
steps {
// do stuff
}
}
无论何时在“ some-directory”中进行了某些更改,而且在“ some-directory”之外的某些内容也进行了更改,都会部署此选项。如果只更改了“ some-directory”的内容,我希望运行此步骤。
the Jenkins docs关于“ changeset”指令的内容是这样的:
变更集
如果构建的SCM变更集包含一个或多个与给定字符串或glob匹配的文件,则执行阶段。示例:当{changeset“ ** / *。js”}
默认情况下,路径匹配将不区分大小写,可以使用caseSensitive参数将其关闭,例如:when {changeset glob:“ ReadMe。*”,caseSensitive:true}
“如果变更集包含一个或多个与给定字符串或glob匹配的文件。”意味着管道按设计工作,但我需要的是
“如果变更集中的文件仅匹配 给定的字符串或glob。”
不幸的是,我在文档或互联网上的其他地方找不到任何有关此的信息。
您对我如何做到这一点有任何建议吗?
答案 0 :(得分:2)
我相信.on
无法做到您想要实现的目标;但是可以用tbody.append(
$('<tr class="table__row">')
.append($(`<td class="table__content" data-heading="De" style="font-weight: ${ Stat != '0' ? 'bold' : 'normal' }; font-size: 90%">`).append(data[i][1]).on("click", mar1ld))
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^^^^^^^^^^^^
.append($(`<td class="table__content" data-heading="Tipo" style="font-weight: ${ Stat != '0' ? 'bold' : 'normal' }; font-size: 90%">`).append(data[i][8]).on("click", mar1ld))
.append($(`<td class="td-info table__content" data-heading="Assunto" data-alerta="${ Ida }, ${ Paraa }" style="font-weight: ${ Stat != '0' ? 'bold' : 'normal' }; font-size: 90%">`).append(data[i][2]).on("click", mar1ld))
.append($(`<td class="table__content" data-heading="Conteúdo" style="font-weight: ${ Stat != '0' ? 'bold' : 'normal' }; font-size: 90%">`).append(data[i][3]).on("click", mar1ld))
.append($(`<td class="table__content" data-heading="Estado" style="font-weight: ${ Stat != '0' ? 'bold' : 'normal' }; font-size: 90%">`).append(data[i][4]).on("click", mar1ld))
.append($(`<td class="table__content" data-heading="Recebido" style="font-weight: ${ Stat != '0' ? 'bold' : 'normal' }; font-size: 90%">`).append(data[i][5]).on("click", mar1ld))
)
替换它来计算Git差异并进行相关过滤。我有一个类似的问题,对我来说很好。
以下内容适用于您的用例:
changeset
(这是与我的用例expression
进行硬编码的比较;如果不够复杂,则可以使用一些包含pull-request的目标分支的Jenkins变量。)
答案 1 :(得分:0)
一些旧的 jenkins 管道版本不支持 when 语句。
您也可以检查这样的更改:
def rc = sh(
script: "git status -s ${dir} | grep -q ${dir}",
returnStatus: true
)
if(!rc) {
doSomething(dir)
}