jenkins - 在 Jenkins 管道作业中使用包含区域进行 SCM 轮询
问题描述
我正在使用 GitLab。给定多个目录,例如文件夹 1、文件夹 2、文件夹 3。我希望仅在 folder1 下有任何更改时才运行该作业。有没有人能够让包含区域在 Jenkins 管道工作中工作。
checkout(
[
$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'PathRestriction', excludedRegions: '', includedRegions: 'folder1/.*']],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'user', url: 'ssh://something/experiment.git']]
]
)
解决方案
我设法让它工作。由于结帐将在我们的 Jenkins 中跨项目使用,因此我编写了共享库以使其易于使用。
示例:strToSparseCheckout.groovy
#!/usr/bin/env groovy
import hudson.plugins.git.extensions.impl.SparseCheckoutPath
def call(paths) {
def list = paths.split('\n')
def sparsePaths = []
def isDefaultAdded = false
list.each {
def path = it - '/.*'
def sparsePath = new SparseCheckoutPath(path)
sparsePaths.push(sparsePath)
}
return sparsePaths
}
示例:sparseCheckout.groovy
#!/usr/bin/env groovy
def call(Map namedargs) {
checkout(
[
$class: 'GitSCM',
branches: [[name: "${namedargs.branch}"]],
extensions: [
[$class: 'LocalBranch', localBranch: '**'],
[$class: 'RelativeTargetDirectory', relativeTargetDir: "${namedargs.target_dir}"],
[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: strToSparseCheckout("${namedargs.included_regions}")],
[$class: 'PathRestriction', excludedRegions: """${namedargs.excluded_regions}""", includedRegions: """${namedargs.included_regions}"""]
],
userRemoteConfigs: [[credentialsId: 'user', url: "${namedargs.url}"]]
]
)
}
在管道中,我们可以调用 sparseCheckout 共享库。
pipeline {
stage('Checkout') {
sparseCheckout(
[
url: 'ssh://path.to.git/something.git',
branch: 'refs/heads/master',
target_dir: 'something',
excluded_regions: "${params.excluded_regions}",
included_regions: "${params.included_regions}"
]
)
}
}
推荐阅读
- manim - 为什么这部动画持续时间这么短?
- angular - Angular:错误:将 ngFor 绑定到数组(管道参数无效)
- powerbi - Power BI 在列上使用 $expand
- git - 使用 Git 部署时 Heroku 中的错误 H14
- asp.net - 在 VB.NET 中动态添加的事件处理程序未触发
- javascript - 为什么 "asdf".replace(/.*/g, "x") == "xx"?
- java - 使用视图模型将数据从活动发送到片段
- java - z/OS 上 Java 程序的用户指定 ABEND 代码
- java - 我正在尝试摆脱空格并将文本文件转换为单行
- powershell - 位置绑定和参数集