Jenkins管道 - Git分支

6

我正在编写流水线脚本,以实现我们项目中的持续集成流程。此过程是让用户在遵循命名约定的特定分支中完成工作,如test_id1test_id2等。一旦这些被推送到远程仓库,Jenkins就会启动,它检出带有test*的分支并执行剩余的构建流程。

根据我的最初想法,我编写了以下流水线脚本: stage 'build'

node {
    git url: 'git@hd1:testing', branch: test*
    sh "pwd"
    sh "cat simple.csh"
    sh "echo $PATH"
    sh "csh simple.csh"
    echo("end of pipeline")
}

顺便说一下,我尝试过 "test*",'test*'。

Jenkins 报错如下:

Caused by: hudson.plugins.git.GitException: Command "git checkout -b test* 264dc398372cba41c026568bd764d2656ebfc511" returned status code 128:

所以问题是我是否朝着正确的方向前进。我还查看了上面的错误,显然,使用通配符的git checkout不会起到作用。那么,以下方法是否有效:
1)像往常一样检出git主分支 2)检查是否存在名称为test*的新分支 3)如果存在,则检出该分支,然后进行其余构建
需要一些指导...

2
尝试使用流水线的 checkout 步骤,并使用 :<regex> 作为分支名称(这里冒号很重要,让 Jenkins 知道您正在使用正则表达式!)。在您的 Jenkins 实例中检查 Snippet Generator - 它可以帮助您处理步骤的语法。 - fishi0x01
1个回答

2
您可以使用SCM检出插件与正则表达式一起使用。我曾经用它来轮询格式为feature/US1234的特性分支。根据您的需要进行修改即可。
checkout([$class: 'GitSCM', 
branches: [[name: ':^(?i)origin/feature/[a-z|A-Z]{2}[0-9].*']], 
doGenerateSubmoduleConfigurations: false, 
extensions: [[$class: 'WipeWorkspace'], 
[$class: 'LocalBranch', localBranch: '**']], submoduleCfg: [], 
userRemoteConfigs: [[credentialsId: 'YOURID', url: 'GITURL']]]) 

使用管道语法生成器获取更多选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接