一段时间以来,我们一直在使用 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']
]
}
当手动触发管道作业时,一切正常,但是我们希望每次将新修订版签入SVN存储库时运行此管道。管道配置确实有一个“轮询 SCM”生成触发器选项,但没有“源代码管理”部分,您可以在其中指定存储库。我们如何才能做到这一点?
作为管道脚本不是项目的一部分或在作业中定义的替代方法,您可以添加 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']
])
}
第一次运行后,它将从该SCM开始轮询,如果是这种情况,也从管道所在的SCM开始轮询。
此选项记录在https://jenkins.io/doc/pipeline/steps/workflow-scm-step/#code-checkout-code-general-scm,在页面的末尾没有详细信息。
我发现有效的解决方案是:
这似乎是第4步,手动运行管道作业,导致轮询触发器选择要轮询的正确存储库。在此之前,它似乎不知道去哪里看。
使用Jenkins声明性管道脚本,您可以将作业配置为每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']
])
}
}
}
}
< code>pollSCM触发器应自动轮询与您的版本关联的所有SCM资源库URL,包括< code>checkout步骤指定的URL、SCM中声明性管道脚本的URL以及全局管道库的URL。但是,如果您真的想让管道为每一个版本运行,您将需要设置一个提交后挂钩。
问题内容: 我们一直在使用Jenkins进行持续集成。一个典型的构建作业在“源代码管理”部分中指定SVN存储库和凭据,然后在“构建触发器”部分中启用“轮询SCM”,轮询时间表为每10分钟(H / 10 * * ) 。我们已经更新到Jenkins的最新版本,并且正在寻求建立管道版本。典型的管道脚本如下所示: 当手动触发管道作业时,一切运行正常,但是,我们希望每次将新修订签入SVN存储库时都运行该管道
我正在使用jenkins dsl插件多分支管线作业(https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob)以创建多分支管道。我创建了jenkinsfile,它处理每个分支的构建作业。我不知道如何通过管道将github推送触发器作为代码启用。我能找到的所有示例都使用jenkins web UI或pollscm选
问题内容: elasticsearch :6.1.2 我有一个通过JSON进行的输入查询,并且想使用高级Java API 使用该查询数据来构建搜索请求。 我试图通过以下方式构造构建器: 但这会产生: 由以下原因引起:org.elasticsearch.ElasticsearchException:org.elasticsearch.common.xcontent.NamedXContentRegi
Netty4是否可以直接将写入通道,而不经过处理程序?
问题内容: 我正在尝试设置要触发的版本的版本说明,因为我正在启动该版本,到目前为止我还没有运气。 我遇到了一个解决方案将文本添加到由Jenkins远程API触发的构建页面中,我有点以这种方式工作(第一个命令将启动构建,第二个命令将设置最后一个的描述)建立): 但是,问题是,如果我刚刚启动的构建被排队/没有立即启动,“ lastBuild”将不引用我刚刚启动的构建,而是之前的那个(仍在构建中)。 所
问题内容: 我们正在使用标准的git flow分支模型(develop,master ,release- , hotfix- 等)。 作为我们工作流程的一部分,我们希望通过jenkins设置“一键式”发行版。 我正在看jgitflow-maven-plugin。我可以设置此插件以从jenkins一键发布吗?如果是这样,有哪些配置选项? 特别是,我可以做这样的事情吗? 并且有一种方法告诉它从最新的-