mke*_*z00 60 git parameters branch choice jenkins
我有一个参数化的Jenkins作业,需要在特定的Git仓库中输入特定的Git分支.目前,此参数是字符串参数.
有没有办法让这个参数成为一个选择参数,并用Git分支动态填充下拉列表?我不希望有人通过在每次创建新分支时手动配置下拉列表来维护此选项参数.
Rav*_*jar 79
我尝试了这个链接中提到的几个答案,但无法弄清楚如何告诉Jenkins有关用户选择的分支.正如我在上面的线程中的前一条评论中所提到的,我将分支选择器字段留空了.
但是,在进一步的调查中,我找到了另一种方法来做同样的事情 - https://wiki.jenkins-ci.org/display/JENKINS/Git+Parameter+Plugin 我发现这个方法简单得多,而且事情少了配置!
这是我配置的 -
添加了以下值: 
然后在作业的git SCM部分,我添加了"名称"部分中提到的相同值,就好像它是一个环境变量.(如果你仔细阅读了这个git参数插件的帮助,你会意识到这一点)

在此之后我刚刚运行构建,选择了我的分支(Jenkins在构建之前检查了这个分支)并且它成功完成了构建,并选择了我指定的分支.
mal*_*cot 20
扩展选择参数插件允许您从文件中读取选项.
当然,现在您还有另一个问题:如何确保文件是最新的(可以使用提交后挂钩完成)并传播给所有用户(可以通过将其放在共享上来完成)文件服务器).但可能有更好的解决方案.
ver*_*ius 14
我能够使用Jenkins动态参数插件实现此结果.我使用了动态选择参数选项,对于选择脚本,我使用了以下内容:
proc1 = ['/bin/bash', '-c', "/usr/bin/git ls-remote -h ssh://user@server.com/path/to/repo.git"].execute()
proc2 = ['/bin/bash', '-c', "awk '{print \$2}'"].execute()
proc3 = ['/bin/bash', '-c', "sed s%^refs/heads%origin%"].execute()
all = proc1 | proc2 | proc3
String result = all.text
String filename = "/tmp/branches.txt"
boolean success = new File(filename).write(result)
def multiline = "cat /tmp/branches.txt".execute().text
def list = multiline.readLines()
Run Code Online (Sandbox Code Playgroud)
小智 10
使用"Git Parameter Plug-in"非常简单.
添加名称,如"SELECT_BRANCH"##确保此变量,因为稍后将使用此变量.然后参数类型:分支
然后联系SCM:选择:Git和分支说明符:$ {SELECT_BRANCH}
要验证,请在jenkins中执行以下shell:
echo $ {SELECT_BRANCH}
env.enter这里的图像描述

对于我,我使用输入阶段参数:
当用户启动管道时,这个管道将等待他在列表选项中进行选择。
pipeline{
agent any
stages{
stage('checkout scm') {
steps {
script{
git credentialsId: '8bd8-419d-8af0-30960441fcd7', url: 'ssh://jenkins@git.company.com:/usr/company/repositories/repo.git'
sh 'git branch -r | awk \'{print $1}\' ORS=\'\\n\' >>branch.txt'
}
}
}
stage('get build Params User Input') {
steps{
script{
liste = readFile 'branch.txt'
echo "please click on the link here to chose the branch to build"
env.BRANCH_SCOPE = input message: 'Please choose the branch to build ', ok: 'Validate!',
parameters: [choice(name: 'BRANCH_NAME', choices: "${liste}", description: 'Branch to build?')]
}
}
}
stage("checkout the branch"){
steps{
echo "${env.BRANCH_SCOPE}"
git credentialsId: 'ea346a50-8bd8-419d-8af0-30960441fcd7', url: 'ssh://jenkins@git.company.com/usr/company/repositories/repo.git'
sh "git checkout -b build ${env.BRANCH_NAME}"
}
}
stage(" exec maven build"){
steps{
withMaven(maven: 'M3', mavenSettingsConfig: 'mvn-setting-xml') {
sh "mvn clean install "
}
}
}
stage("clean workwpace"){
steps{
cleanWs()
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
然后用户将与构建交互:
小智 5
我在这里面临类似的问题。我们的用户正在将他们的工作从自由式迁移到流水线。他们不希望 Jenkinsfile 存储在他们的存储库中(历史原因)并且仍然想使用“Git Parameter”插件
所以我们必须使用“管道脚本”并开发一个不同的插件,它的工作原理类似于“Git Parameter”。
这个新插件没有与项目中的 SCM 设置集成。该插件位于https://plugins.jenkins.io/list-git-branches-parameter
希望对你也有帮助
| 归档时间: |
|
| 查看次数: |
91683 次 |
| 最近记录: |