【问题标题】:Jenkins pipeline - git branchJenkins 管道 - git 分支
【发布时间】:2017-01-26 11:47:08
【问题描述】:

我正在编写管道脚本,以便在我们的项目中实现持续集成流程。该过程是让用户在遵循命名约定的特定分支中工作,test_id1test_id2 等。一旦将这些推送到远程仓库,Jenkins 就会启动,它会使用 test* 签出分支并执行其余部分构建过程。

基于我最初的直觉,我编写了如下管道脚本: 阶段“构建”

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 master 2) 检查是否存在任何名为 test* 的新分支 3)如果是,检查分支,然后进行其余的构建

在这方面需要一些指导......

【问题讨论】:

  • 尝试管道的checkout 步骤并使用:<regex> 作为分支名称(冒号在这里很重要,让jenkins 知道您正在使用正则表达式!)。在您的 Jenkins 实例中检查 Snippet Generator - 它可以帮助您了解该步骤的语法

标签: git jenkins branch jenkins-pipeline


【解决方案1】:

您可以使用带有正则表达式的 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']]]) 

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多