我们要使用一个詹金斯工作来构建应用程序。
如何配置单个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作业以进行
从主干或分支的释放过程?选择显示
我们希望拥有以下内容:
Selection 1:
选择2(自动基于选择1,例如针对app2):
使用活动选择参数和Groovy脚本。
创建参数APP以选择应用程序。Groovy脚本应返回选择列表,因此只需返回硬编码列表(或从文件或所需的任何位置读取它)
创建参数VERSION以选择版本。
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
在“ 构建触发器”部分中,设置另一个变量(以提高可读性): BASE_SVN_URL=http://my-svn-repo/projects
现在,您已经准备好所有变量,可以将它们打印到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
最后,调用另一个JenkinsjobBuild-application-core-job
,它将执行实际的构建。将所有必要的参数传递给作业
运行作业时,您将获得一个带有两个参数的屏幕,其中第二个参数始终取决于第一个参数的值而包含有效值
最后但并非最不重要的一点是:遵循标准是好的:)如果您遵循标准,那么您可以按照清单(如果您对詹金斯不太熟悉,只需在彼得的答案中添加一些注释。
Subversion插件默认安装在最新版本中(截至2015年9月)。
然后,应按以下方式配置项目:
问题内容: 我目前正在改善有关詹金斯(1.430)的项目的发布过程。 当前发布的职位 今天,对于一个特定项目,我们只有一项工作专门用于发布过程。完整的过程如下: 负责发行的开发人员手动更改了所有pom.xml文件的版本(实际上使用)来摆脱。 然后,他在SVN中创建了一个标签(例如http:// my-svn-repo / project / tags / V_2_0)。 创建此标签后,他将登录我们
我有一个Jenkins管道作业,它被配置为“来自SCM的管道脚本”,指向SVN中的Jenkinsfile。例如,SVN URL是http://example.com/SVN/myproject/trunk/jenkins master执行浅表签出(仅限根文件),然后在根查找Jenkinsfile。 这个URL在Jenkinsfile中重复,在一个单独的jenkins代理上签出SVN工作区的步骤中。
问题内容: 为什么Jenkins有两种工作,即多配置项目和自由样式项目?我读过某个地方,一旦选择其中一个,就无法(轻松地)转换为另一个。为什么我不总是选择多配置项目以确保将来的更改安全? 我想为在Windows和Unix(以及其他平台)上构建的项目设置构建。我发现了这个问题),它提出了相同的问题,但我并没有真正找到答案。为什么我需要三个矩阵项目(而不是三个自由样式项目),每个平台一个?为什么不能将
问题内容: 我正在尝试让詹金斯(Jenkins)的多分支管道工作来以类似于分支的方式构建标签。在Jenkins 2.73(不确定何时添加功能)中,可以将Multibranch项目配置为从源存储库中检索分支和标签。最初,我认为这将非常适合我的需求(我的Jenkinsfile现在可以在Jenkins的同一位置进行开发或生产构建)。 配置了标签发现的多分支作业 我已经使用脚本管道成功构建并运行了构建过程
如果我们在这里配置了签名,相应的在module app的build.gradle文件中会自动添加下面的配置: // 签名配置 signingConfigs { MySigning { keyAlias 'myandroid' keyPassword '123456' storeFile file('/Users/quanke/myandroid.jks') storePassw
我正在尝试从application.yml的XML导入目标配置中配置我的回退。 当我在XML中设置静态目标时,一切都很好,但如果不是,我在启动时会出现这个异常: 我的依赖关系: Spring启动:“1.5.4.发布” net.logstash.logback:logstash-logback-encoder:4.9 logback-spring.xml applicaiton.yml 我试图避免将