当前位置: 首页 > 面试题库 >

如何配置单个Jenkins作业以从主干或分支进行释放过程?

乐正焕
2023-03-14
问题内容

我目前正在改善有关詹金斯(1.430)的项目的发布过程

当前发布的职位

今天,对于一个特定项目,我们只有一项工作专门用于发布过程。完整的过程如下:

  1. 负责发行的开发人员手动更改了所有pom.xml文件的版本(实际上使用mvn versions:set -DnewVersion=2.0)来摆脱-SNAPSHOT
  2. 然后,他在SVN中创建了一个标签(例如http:// my-svn-repo / project / tags / V_2_0)。
  3. 创建此标签后,他将登录我们的Jenkins服务器,并开始发布版本。
  4. 该版本将询问他要用于哪个标签。将该作业配置为带有参数 List Subversion标记Parameterized构建 。 __
  5. 然后,Jenkins将根据此标记构建工件,并将其部署在我们的Nexus实例上。
  6. 完成此操作后,开发人员将pom.xml版本设置为新的开发版本(即2.1-SNAPSHOT)。

这种方法的优点是我只有Jenkins的工作,因为构建仅依赖标签。

但是,此过程涉及过多的人工干预(pom.xml的更改,提交,标签等)。

新发布职位

现在,我使用Maven版本插件。我创建了一个工作,向启动构建的用户询问三个信息:

  • 发布版本(releaseVersion发布插件的参数);
  • 发行后的开发版本(developmentVersion发行插件的参数);
  • 标签的名称(tag发布插件的参数)。

这项工作可以正常进行,但要注意的一点是:该工作基于SVN中的主干或分支。这意味着,如果我有2个分支(除了主干),我将需要创建3个发布作业:每个分支一个。

保持两个世界中最好的一个想法(即使用mvn版本,但保留1个发布任务)是添加一个构建参数,该参数将询问用户主干/分支的路径。因此,我将设置,并要求用户输入参数,而不是在作业配置中设置http://my- svn-repo/project/trunk(或http://my-svn- repo/project/branches/BRANCH_V1)。http://my-svn- repo/project/$FROM_BRANCH``FROM_BRANCH

该解决方案的问题在于用户将不得不输入trunkbranches/BRANCH_Vx,这可能会导致错误。

理想情况下,我希望拥有一个构建参数,该参数可以让我选择分支(包括主干),因为存在用于选择标记的参数 List Subversion 标记…

所以我的问题是:有没有更好的方法来配置 一个 可以在所有分支上工作的詹金斯工作?

谢谢。

编辑 :我发现了Validating String
Jenkins插件,它很有趣,可以确保用户定义的值遵守某些正则表达式。这对我来说很有帮助…


问题答案:

您需要版本1.32的subversion插件。该版本中已实现了JENKINS-10678问题。

然后,只给它提供项目URL(它需要包含主干,分支和标签),它将为您提供主干以及分支。



 类似资料:
  • 问题内容: 我们要使用一个詹金斯工作来构建应用程序。 如何配置单个Jenkins作业以从主干或分支进行释放过程中的解决方案? 并没有工作,因为我们的SVN结构是不同的(从历史的原因,我们不能改变它): 所描述的解决方案如何配置单个Jenkins作业以进行 从主干或分支的释放过程?选择显示 trunk branches/app1 branches/app2 branches/app3 tags/ap

  • 我必须跳过一些基于git提交消息的jenkins构建。所以我搜索并找到了这个jenkins插件。但是我无法在多分支管道作业中配置启用ci-skip。此选项在多分支管线设置中不可用。 有没有办法在多分支jenkins管道中配置这个[ci skip]? 它在jenkinsfile中可用吗?或者是否可以防止jenkins基于jenkinsfile中的提交消息构建?

  • 我有一个詹金斯服务器50多个工作。我添加了一个新的要求与特定用户执行。因此,我创建了slave节点(具有特定配置的相同主机),并将其限制为slave。但我以前的工作都开始用主+从了。所以他们开始失败了(因为我使用了另一个用户)。 问候。

  • 我有一个管道Jenkins作业,它按预期工作,配置了“GitHub hook trigger for GITScm polling”选项,以便在任何推送到git存储库时自动构建。 我已经将这个Jenkins URL与多个git回购挂钩,比如< code>repo-A、< code>repo-B、< code>repo-B。< br> Jenkins作业在任何代码推送至这些回购时自动触发。 但是我想

  • 问题内容: 我正在使用三角帆Gradle插件创建docker映像并将其推送到Azure容器注册表。到目前为止,我已经向Jenkins添加了用户名/密码凭据,并且需要将它们传递给Gradle。访问或将凭据传递给Gradle,它们会被屏蔽。希望您能够帮助我。以下是代码片段: build.gradle(臂架配置): Jenkinsfile: 编辑:我的用户名中有错字 问题答案: 用户名中有错字。将Jen

  • 问题内容: 有没有办法告诉詹金斯(2.2)删除已删除分支的作业?目前,由于未删除作业,因此我的构建监视器填充了分支。是否有设置可以触发此行为,还是应该将其记录为错误? 问题答案: 由于您使用的是最新的Jenkins版本,请考虑将作业切换到多分支管道设置。 工作流多分支功能(由工作流插件提供)提供以下关键功能: 在仓库中,每个新分支都会在Jenkins中自动创建工作流(作业)(假设Webhook已从