将单个 Jenkins 发布作业配置为使用 Perforce 作为 SCM 从主干或分支发布
Posted
技术标签:
【中文标题】将单个 Jenkins 发布作业配置为使用 Perforce 作为 SCM 从主干或分支发布【英文标题】:Configuring a single Jenkins release job to release from trunk or branches with Perforce as SCM 【发布时间】:2013-08-05 17:23:21 【问题描述】:这个问题类似于How to configure a single Jenkins job to make the release process from trunk or branches? 提出的问题,但在这种情况下,Perforce 是 Jenkins 中使用的 SCM。目前在詹金斯我有以下几点:
-
每个分支/主干一个发布作业。
每个作业都有一个单独的 Perforce 工作区,映射必要的分支/主干
运行作业时,jenkins-perforce-plugin 会同步整个工作区,然后运行 maven 发布插件。
理想情况下,我希望有一个可以指向任何分支的发布作业,同步到该分支的代码并执行 maven 发布。但是,对于 Perforce 工作区,我需要为每个分支/主干进行视图映射。有没有办法告诉 jenkins-perforce-plugin 只同步到工作区视图中的特定视图?这样,我可以使用传递到分支路径的参数构建发布作业,并且 jenkins-perforce-plugin 将作业 perforce 工作区仅同步到该路径,然后从那里进行构建。
【问题讨论】:
【参考方案1】:如果我试图按照描述实现这一点,我将创建一个参数化构建,我可以在其中提交 Perforce 标签名称。 Perforce Jenkins 插件可以同步到标签;我会为每个版本创建标签,指定应该同步的路径和#head的修订说明符。
然后,Jenkins 应该只同步该构建所需的文件。工作区当然会映射一切;标签将指定要获取的文件。
【讨论】:
谢谢马特。我认为我将解决这个问题的方法是设置一个具有 perforce 工作区的 Jenkins 作业,该工作区可以查看所有分支和主干。我将使作业成为参数化作业,其中分支名称或主干名称被解析为作业,并使用作业的高级 perforce 插件设置中的“使用视图掩码”设置将代码同步到作业 perforce 的特定区域工作区。标签对我不利,因为这意味着我必须在构建发布之前创建发布标签。 这听起来是个不错的解决方案!我没有玩过视图蒙版设置;听起来很方便。以上是关于将单个 Jenkins 发布作业配置为使用 Perforce 作为 SCM 从主干或分支发布的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jenkins ECS 插件生成多个代理(等待下一个可用的执行程序)
Jenkins Per Slave Pipeline Build Enforcement