Mar*_*son 10 jenkins multibranch-pipeline
我有一个名为multibranch-test的github repo,有两个子目录Project1,Project2.
PS C:\Repos\multibranch-test> tree .
Folder PATH listing for volume Windows
Volume serial number is 2085-6D3D
C:\REPOS\MULTIBRANCH-TEST
????Project1
????Project2
每个子目录都有一个Jenkins文件和该项目的代码.
在Jenkins中,我有两个multibranch管道作业 - 一个用于Project1,另一个用于Project2.在Project1的配置中,如果在Project2的子目录中推送了提交,我不希望推送通知或轮询来构建Project1.
所以在Project1中我配置了附加行为:
正在发生的事情是,如果我把一个犯子目录掌握Project2中,既 PROJECT1和Project2的工作得到建造.我只想要构建Project2.有人可以指出我做错了吗?
两个项目的Jenkinsfiles类似,看起来像:
#!groovy
node {
stage ('checkout') {
checkout scm
}
stage ('build') {
dir ('Project1') {
bat 'powershell -Command gci'
bat 'powershell -Command gci env:'
bat 'powershell -File .\\Project1.ps1'
}
}
Run Code Online (Sandbox Code Playgroud)
小智 12
这对我们来说是一个很大的麻烦,但我们能够通过一些解决方法来解决它.
我们有一个由GitHub提交钩子触发的主Jenkins作业.它计算出自上次提交以来发生了哪些变化,然后触发其他特定于服务的 Jenkins作业.
我们还有一些我们正在使用的其他约定(比如服务,目录和Jenkins作业的命名约定),这里没有指定,但希望这会帮助某人.
以下是解决方案中每个组件的细分:
C:\REPOS\MULTIBRANCH-TEST\Project1\Jenkinsfile(你的构建逻辑在这里)
C:\REPOS\MULTIBRANCH-TEST\Project2\Jenkinsfile(你的构建逻辑在这里)
C:\REPOS\MULTIBRANCH-TEST\change-sets.sh
#!/usr/bin/env bash
changeSets=(`git diff-tree --name-status HEAD`)
for(( i=0; i<${#changeSets[@]}; i++))
do
if [ ${changeSets[$i]} == "M" ]
then
echo ${changeSets[$i+1]}
fi
done
Run Code Online (Sandbox Code Playgroud)
C:\REPOS\MULTIBRANCH-TEST\Jenkinsfile
#!/usr/bin/env groovy
pipeline {
agent any
stages {
stage('Define Services to Build') {
steps {
script {
def SERVICES_TO_BUILD = sh script:"./change-sets.sh", returnStdout: true
SERVICES_TO_BUILD.split("\n").each {
echo "Triggering build for ${it}"
try {
build job: "${it}", propagate: false, wait: false
} catch (ex) {
echo "Failed to trigger build for ${it}: ${ex.message}"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
默认的 Jenkins 行为是,如果项目的存储库获得提交,项目就会被重建,因此您在存储库中的提交会为两个 Jenkins 项目生成事件并触发两个构建。查看 Jenkins 文档:https ://jenkins.io/doc/book/pipeline/
从 Jenkins 的角度来看,很难判断项目 1 或项目 2 是否发生了变化 - 立即可见的是“对监视存储库的新提交”。
简单的解决方案是将存储库分为两个单独的存储库,每个项目一个。由于它们应该单独构建,因此不应该成为问题。
| 归档时间: |
|
| 查看次数: |
4860 次 |
| 最近记录: |