Jon*_*son 14 svn triggers jenkins jenkins-pipeline
我们一直在使用Jenkins进行持续集成.典型的构建作业在"源代码管理"部分中指定SVN存储库和凭证,然后在"构建触发器"部分中,我们启用"轮询SCM",其中每10分钟的轮询时间表(H/10****) .我们已经更新到最新版本的Jenkins,并且正在寻求建立管道构建.典型的管道脚本如下所示:
node {
stage 'Build'
build job: 'MyApplication Build'
stage 'Deploy to test environment'
build job: 'MyApplication Deploy', parameters: [
[$class: 'StringParameterValue', name: 'DatabaseServer', value: 'DatabaseServer1'],
[$class: 'StringParameterValue', name: 'WebServer', value: 'WebServer1']
]
stage 'RunIntegrationTests'
build job: 'MyApplication Test', parameters: [
[$class: 'StringParameterValue', name: 'DatabaseServer', value: 'DatabaseServer1'],
[$class: 'StringParameterValue', name: 'WebServer', value: 'WebServer1']
]
}
Run Code Online (Sandbox Code Playgroud)
当手动触发管道作业时,一切运行正常,但是我们希望每次将新版本签入SVN存储库时都运行此管道.管道配置确实具有"poll SCM"构建触发器选项,但没有"源代码管理"部分,您可以在其中指定存储库.我们怎样才能做到这一点?
我发现的解决方案是:
它似乎是第4步,手动运行管道作业,导致poll触发器选择正确的存储库进行轮询.在那之前它似乎不知道在哪里看.
小智 7
作为管道脚本不是项目的一部分或在作业中定义的替代方法,您可以添加poll: true到您的结帐阶段。
例子:
stage('checkout') {
checkout(
changelog: true,
poll: true, /*This is the important option*/
scm: [
$class: 'SubversionSCM',
filterChangelog: false,
ignoreDirPropChanges: false,
locations: [...], /*ommited for obvious reasons*/
workspaceUpdater: [$class: 'CheckoutUpdater']
])
}
Run Code Online (Sandbox Code Playgroud)
在第一次运行后,它将开始从这个 SCM 开始轮询,如果是这样的话,它也会从管道所在的 SCM 开始轮询。
此选项记录在https://jenkins.io/doc/pipeline/steps/workflow-scm-step/#code-checkout-code-general-scm,在页面的最后,没有详细信息。
使用Jenkins Declarative Pipeline脚本,您可以将作业配置为每10分钟轮询一次SVN存储库URL,如下所示:
pipeline {
agent any
triggers {
pollSCM 'H/10 * * * *'
}
stages {
stage('checkout') {
steps {
checkout([
$class: 'SubversionSCM',
additionalCredentials: [],
excludedCommitMessages: '',
excludedRegions: '',
excludedRevprop: '',
excludedUsers: '',
filterChangelog: false,
ignoreDirPropChanges: false,
includedRegions: '',
locations: [[
credentialsId: 'mySvnCredentials',
depthOption: 'infinity',
ignoreExternalsOption: true,
local: '.',
remote: 'http://example.com/svn/url/trunk']],
workspaceUpdater: [$class: 'CheckoutUpdater']
])
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该pollSCM触发器应自动轮询与您的构建相关联的所有SCM仓库的网址,包括由指定的URL checkout的步骤,从SCM您的声明管道脚本的URL,你的全球管道库的URL.如果您真的希望为每个修订版运行管道,那么您需要设置一个post-commit钩子.
| 归档时间: |
|
| 查看次数: |
33409 次 |
| 最近记录: |