配置Jenkins作业以从SVN选择应用程序和主干/标签/分支

我们要使用一个詹金斯工作来构建应用程序。

如何配置单个Jenkins作业以从主干或分支进行释放过程中的解决方案?

并没有工作,因为我们的SVN结构是不同的(从历史的原因,我们不能改变它):

http://my-svn-repo/projects/

├───branches

│ ├───app1

│ │ ├───BRANCH_A

│ │ ├───BRANCH_B

│ │ └───BRANCH_C

│ ├───app2

│ │ ├───BRANCH_D

│ │ ├───BRANCH_E

│ │ └───BRANCH_F

│ └───app3

│ ├───BRANCH_G

│ ├───BRANCH_H

│ └───BRANCH_I

├───tags

│ ├───app1

│ │ ├───BRANCH_D

│ │ ├───BRANCH_E

│ │ └───BRANCH_F

│ ├───app2

│ │ ├───TAG_D

│ │ ├───TAG_E

│ │ └───TAG_F

│ └───app3

│ ├───TAG_G

│ ├───TAG_H

│ └───TAG_I

└───trunk

├───app1

├───app2

└───app3

所描述的解决方案如何配置单个Jenkins作业以进行

从主干或分支的释放过程?选择显示

  • trunk
  • branches/app1
  • branches/app2
  • branches/app3
  • tags/app1
  • tags/app2
  • tags/app3

我们希望拥有以下内容:

Selection 1:

  • app1
  • app2
  • app3

选择2(自动基于选择1,例如针对app2):

  • trunk
  • BRANCH_D
  • BRANCH_E
  • BRANCH_F
  • TAG_D
  • TAG_E
  • TAG_F

回答:

使用活动选择参数和Groovy脚本。

  1. 创建参数APP以选择应用程序。Groovy脚本应返回选择列表,因此只需返回硬编码列表(或从文件或所需的任何位置读取它)

  2. 创建参数VERSION以选择版本。

    • 现在使用Active Choice Reactive Parameter,因此您可以对参数APP的更改做出反应。
    • Groovy脚本逐渐构建了可供选择的选项列表。首先是中继,然后是标签,然后是分支。
    • 使用命令行svn列表以以下形式获取数据: svn list

svn list http://my-svn-repo/projects/tags/appX --username some_name--password some_password

* _Referenced parameters_ must be set to `APP`. Whenever the value of `APP` is updated, the Groovy script will re-evaluate the choice list using the updated values of referenced parameters.

这是用于复制和粘贴的脚本:

def svnBaseUrl = 'http://my-svn-repo/projects/'

def versions = ['trunk/' + APP]

def svnTagsUrl = svnBaseUrl + 'tags/' + APP

def command = ['svn', 'list', svnTagsUrl,'--username', 'some_name', '--password', 'some_password']

def proc = command.execute()

proc.waitForOrKill(10000)

if ( proc.exitValue() == 0 ) {

proc.text.eachLine { versions.add('tags/' + APP + '/' + it) }

}

def svnBranchesUrl = svnBaseUrl + 'branches/' + APP

command = ['svn', 'list', svnTagsUrl,'--username', 'some_name', '--password', 'some_password']

proc = command.execute()

proc.waitForOrKill(10000)

if ( proc.exitValue() == 0 ) {

proc.text.eachLine { versions.add('branches/' + APP + '/' + it) }

}

return versions

  1. 在“ 构建触发器”部分中,设置另一个变量(以提高可读性): BASE_SVN_URL=http://my-svn-repo/projects

  2. 现在,您已经准备好所有变量,可以将它们打印到Jenkins作业控制台:

用于复制和粘贴的脚本:

#!/bin/bash

echo "================================================"

echo "Parameters for the build:"

echo "Application: $APP"

echo "Base SVN URL: ${BASE_SVN_URL}"

echo "Version: ${VERSION}"

echo "SVN URL: ${BASE_SVN_URL}/${VERSION}"

echo "================================================"

在测试过程中,您可以在脚本的末尾添加一行以立即

终止您的作业,并只看到以下值:

exit 1

  1. 最后,调用另一个JenkinsjobBuild-application-core-job,它将执行实际的构建。将所有必要的参数传递给作业

  2. 运行作业时,您将获得一个带有两个参数的屏幕,其中第二个参数始终取决于第一个参数的值而包含有效值

  3. 最后但并非最不重要的一点是:遵循标准是好的:)如果您遵循标准,那么您可以按照清单(如果您对詹金斯不太熟悉,只需在彼得的答案中添加一些注释。

Subversion插件默认安装在最新版本中(截至2015年9月)。

然后,应按以下方式配置项目:

  1. 检查“此构建已参数化”(此项目已在最新版本中参数化)
  2. 选择“列出子版本标签(以及更多)”
  3. 在名称字段中,设置一个可变名称,以后可以在svn url中引用。我在这里选择svnbranch。
  4. 在“存储库URL”字段中,为其提供项目URL(该URL必须包含主干,分支和标签)
  5. 根据需要填写其他字段
  6. 在源代码管理中,引用您的存储库URL中之前定义的变量。)的描述使用开箱即用的List Subversions标签(及更多)插件。

以上是 配置Jenkins作业以从SVN选择应用程序和主干/标签/分支 的全部内容, 来源链接: utcz.com/qa/431229.html

回到顶部