我正在尝试从使用自由式詹金斯构建切换到管道项目。
我喜欢它的许多方面,但我希望我可以使用多分支管道,因为它更适合我们公司,但目前这不是一个选择。
我们目前所做的是创建一个名为的新构建作业
所以我现在需要继续下去。我有一个脚本的基本大纲,我可以将其复制并粘贴到框中,或者更好的是使用scm中的jenkins文件。
我最喜欢这个,这也是我目前在我的本地Jenkins上使用的。
如果我在scm的脚本中对解决方案文件和我想要的环境进行硬编码,它构建得很好。
我不喜欢这个选项,因为这意味着我必须有很多名称相似的脚本,只是更改分支。如果我用解决方案名称和环境添加构建参数,我可以很容易地让脚本也处理这些,但是我不喜欢的是,当我单击构建按钮时,它会确认这些是我想要使用的参数。
那么,有没有一种方法可以让我硬编码/获取一个插件,让我将这些参数添加为常量或环境变量或其他任何东西,这样它只是工作的一部分?
作为一个更新,以显示我昨天尝试过并满足我们的需求是这样的。首先,我安装了多分支默认插件,并按照github页面上的步骤概述进行操作。安装并配置后,我添加了一个新的多分支项目,并将其指向我的git存储库。它现在找到了2个分支(如预期的那样),并使用默认的配置文件。到目前为止,这似乎适用于我们大约90%的案例。我能看到的唯一问题是,如果有些人在他们现有的自由式项目中有自定义步骤。但就目前而言,这些总是可以保持自由式项目。
如果我正确地理解您,那么您正在寻找的是一种为构建提供默认参数的方法。
在我的一个版本中,我做了类似的事情:
stage ('Setup') {
try {
timeout(time: 1, unit: 'MINUTES') {
userInput = input message: 'Configure build parameters:', ok: '', parameters: [
[$class: 'hudson.model.ChoiceParameterDefinition', choices: 'staging\nproduction\nfree', description: 'Choose build flavor', name: 'BUILD_FLAVOR'],
[$class: 'hudson.model.ChoiceParameterDefinition', choices: 'Debug\nRelease', description: 'Choose build type', name: 'BUILD_TYPE'],
[$class: 'hudson.model.ChoiceParameterDefinition', choices: 'NONE\ndevelop\nmaster\nrelease/core_0.5.0\nrelease/core_0.1.8.1\nrelease/core_0.1.9', description: 'Product core branch', name: 'CORE_BRANCH'],
[$class: 'hudson.model.ChoiceParameterDefinition', choices: '4.1.12\n4.1.11\n4.1.10\n4.1.9\n4.1.8\n4.1.4\n3.5.5\n3.1.8\ncore\nOldVersion', description: 'Version Name', name: 'VERSION_NAME'],
[$class: 'hudson.model.ChoiceParameterDefinition', choices: 'origin/develop\norigin/hotfix/4.1.11\norigin/release/4.1.8\norigin/hotfix/4.1.7\norigin/hotfix/4.1.9\norigin/hotfix/4.1.10\norigin/release/4.1.6\norigin/release/4.1.5\norigin/hotfix/3.5.5', description: 'Git branch', name: 'GIT_BRANCH'],
[$class: 'BooleanParameterDefinition', defaultValue: false, description: 'Enable Gradle debug?', name: 'DEBUG']
] // According to Jenkins Bug: https://issues.jenkins-ci.org/browse/JENKINS-26143
}
} catch (err) {
userInput = [BUILD_FLAVOR: 'staging', BUILD_TYPE: 'Debug', CORE_BRANCH: 'NONE', VERSION_NAME: '4.1.12', GIT_BRANCH: 'origin/develop'] // if an error is caught set these values
}
}
解释:
我使用Try/Catch方法来处理异常,然后在“Try”部分中,我配置了要向启动构建的用户显示的问题和可能的答案。
然后,在“捕获”部分,我将我想要设置的默认值放在每个变量中,以防捕获异常,这意味着1分钟过去了,没有选择相关项目。
以下是一些有用的链接:
管道:如何管理用户输入
管道插件/TUTORIAL.md
问题内容: 我有一个名为的MySQL脚本文件,其中包含: 我在MySQL控制台中,如何将参数传递给脚本?这不会转发变量: 问题答案: 您可以使用用户变量来实现您描述的行为。在将变量用作模式标识符而不是数据值时,必须使用准备好的语句,以便可以动态组成查询。 : 调用为
问题内容: 我正在使用具有集成交付管道功能(https://jenkins.io/solutions/pipeline/)的Jenkins v2.1 来编排两个现有构建(构建和部署)。 在我的参数化构建中,我有3个用户参数设置,也需要在管道中选择该参数。 管道脚本如下: 除以外,此方法均正常运行。当我构建管道时,会引发以下错误: 如何解决此类型转换错误?甚至更好的是,有没有一种麻烦的方式可以将所有
问题内容: 我创建了一个新的詹金斯管道。(当前)使用单个名为的布尔选项对管道进行参数化。我的管道脚本是: 当我手动创建带有选中项的项目时,将按预期回显“ true”。但是,环境变量列表未显示。 我能够显示是否将呼叫包装在一个块中: 我将拥有比这更多的参数,因此不需要单独指定每个参数。 有没有办法将所有构建参数传送到节点的环境? 问题答案: 关键是,在管道脚本中,作业参数不会像常规作业一样自动注入到
问题内容: 我们如何在Jenkins管道的Groovy脚本中传递参数? 我已经写了xyz.groovy,它可以很好地加载和执行,但是我想在其中传递参数而不是重复工作。我尝试传递负载’../xyz.groovy’param1param2但没有运气。 xyz.groovy 问题答案: 您是否在用参数调用的Groovy中创建方法?
问题内容: 我有一个名为 buildall 的管道作业,如下所示: 该 buildall 作业有25个参数。我想将所有 buildall 的参数传递给 job1 。有没有一种简单的方法可以代替手动指定每个参数呢? 在此问题中:向下游作业传递管道参数是一个子问题,但从未得到回答: 甚至更好的是,有没有一种麻烦的方法可以将所有管道参数传递给下游作业。 我有同样的问题。 问题答案: 以下似乎有效(尽管我
问题内容: 是否可以通过命令行将参数传递给MySQL脚本? 在此示例中,类似于@start_date的内容: 问题答案: 发现在网络上的答案在这里。 基本上,假设我们要运行以下查询: 我们可以这样传递“ start_date”和“ end_date”: