将单个 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

如何配置 Jenkins 作业以将文件从 git 复制到服务器

Jenkins - 同时运行单个构建的实例

Jenkins作业DSL参数被配置块覆盖

是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?