use*_*458 5 jenkins jenkins-pipeline
目前,我有以下问题。我已经编写了一个Jenkinsfile来在管道中构建我的存储库。每个存储库在多分支管道中都有自己的管道。每当我推送存储库时,管道就会开始工作。
对于建筑物,我有一个具有两个节点的Agent。当多分支管道正在运行时,多分支管道使用一个节点来执行单个管道,而当前正在执行的管道使用第二个节点来运行单个作业。
当两条管道同时运行时,两条管道都使用一个节点。但是现在的问题是,由于所有节点都被占用,两个管道都无法启动任何作业。由于两个管道都在等待一个空闲节点来执行任务,因此这时我陷入了僵局。
我尝试设置“ disableConcurrentBuilds()”,但这只会阻塞名称相同的管道。多分支管道中具有不同名称的管道可以同时运行。
第二次尝试是使用Jenkinsfile中的此代码设置Build Blocker Plugin。
properties([
[$class: 'BuildBlockerProperty',
blockLevel: 'GLOBAL',
blockingJobs: '*pipeline_Test*',
scanQueueFor: 'ALL',
useBuildBlocker: true],
disableConcurrentBuilds()
])
Run Code Online (Sandbox Code Playgroud)
但是,然后我收到此错误消息。
WorkflowScript:30:无效的选项类型“属性”。有效选项类型:[buildDiscarder,catchError,checkoutToSub目录,disableConcurrentBuilds,disableResume,耐久性提示,锁,newContainerPerStage,overrideIndexTriggers,重试,脚本,skipDefaultCheckout,skipStagesAfterUnstable,超时,waitUntil,withContext,withCredentials,withEnv,ws] @第30行,第4列
如何在整个管道的Jenkinsfile中设置BuildBlockerProperty?只要管道正在运行,还有其他方法可以阻塞所有其他管道吗?
谢谢你的帮助。
这是我的解决方案,我最终实现了它。
下图是我的Windows节点。管道必须在 bildserver3 上运行,作业必须在 buildserver2 上运行。Buldserver1 是主服务器。
这是 jenkinsfile 管道 {
options {
/*--- prevents the same branch from being built again at the same time ---*/
disableConcurrentBuilds()
}
agent {
node {
/*--- define the pipeline to run on the buildserver3 ---*/
label 'buildserver3'
}
}
stages {
stage('Set Build Name') {
steps {
script {
...
}
}
}
stage('Checkout/Compile') {
steps {
node('buildserver2'){
script {
...
}
}
}
}
stage('JUnit and Package') {
steps {
parallel(
JUnit: {
node('buildserver2'){
script {
...
}
}
},
Package: {
node('buildserver2'){
script {
...
}
}
}
)
}
}
stage('Install') {
steps {
node('buildserver2'){
script {
...
}
}
}
}
}
post {
success {
node('buildserver2'){
...
}
}
unstable{
node('buildserver2'){
...
}
}
changed {
....
}
always{
...
}
}
Run Code Online (Sandbox Code Playgroud)
}
重要的是,构建 server2 具有与 jenkinsfile 中配置的并行作业一样多的节点。此外,并行作业的数量必须乘以 buildserver3 上的节点数量。
在这种情况下,最多并行运行两个作业,并且 build server3 有 3 个帐户,因此 build server2 必须有 6 个帐户。
如果创建的存储库具有更多并行作业,则必须相应调整节点数量。
对于同一系统上的第二个从站,需要第二个 Jenkins 服务。以下链接描述了如何配置它。
https://kimbouwman.wordpress.com/2014/07/14/multiple-slaves-on-same-machine-jenkins/
归档时间: |
|
查看次数: |
1206 次 |
最近记录: |