【问题标题】:Jenkins - how to build a specific branch詹金斯 - 如何建立一个特定的分支
【发布时间】:2015-08-20 01:57:17
【问题描述】:

这并不像仅仅进行参数化构建那么简单。我已经有了一个特定的构建过程,只要将这些分支中的任何一个推送到 GitHub,它就会构建和部署:

所以如果我刚刚推送了develop 并且它构建成功,我如何触发手动构建并让它拉动feature/my-new-feature(不执行git push)?我尝试启用参数化构建,添加一个名为branch 的新字符串,然后添加一个新的分支说明符*/$branch。然后我运行构建并将branch 设置为feature/my-new-feature,它仍然从develop 中提取。

如果有任何帮助,我将不胜感激!

【问题讨论】:

  • 你说的是 github webhook 吗?这可能会解决您的问题。你想从 github 触发这个吗?
  • 不,GitHub 集成已经在工作。我需要知道如何手动构建一个特定的分支。
  • 我也有同样的问题。该作业被配置为构建不同的分支,并由 git 钩子触发。但是当我想手动构建一个特定的分支时(在 GIT 中没有新的更改),我单击“立即构建”,但它总是构建最新的签出分支。还尝试了各种构建属性。
  • 如果你的参数命名为branch,你只需要在branch specifier字段中指定$branch即可。
  • @Alexey,但是在自动启动的构建过程中,我想这个$branch 将导致一个空字符串。

标签: git github jenkins


【解决方案1】:

最好的解决办法是:

在现有作业中添加字符串参数

然后在Source Code Management 部分更新Branches to build 以使用您定义的字符串参数

如果您看到标有Lightweight checkout 的复选框,请确保它未选中。

图片中显示的配置将告诉 jenkins 作业使用 master 作为默认分支,对于手动构建,它会要求您输入分支详细信息(仅供参考:默认情况下它设置为 master)@987654323 @

【讨论】:

  • 默认情况下,构建大师不会为应该构建所有开发分支的通用开发构建而削减它。
  • 天哪,这太糟糕了。为什么 Jenkins 不将 Branches to build 部分与它适用的该死的 Git 存储库一起保留?必须这样做才能指定要构建的分支,这是一个愚蠢的 PITA。
  • 董这不起作用(对我来说)。我最终让 Jenkins 尝试检查一个显然无效的分支 git.exe fetch --tags --progress origin +refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH} --prune
  • 这被记录为bug on Jenkins,所以很难看出它是如何工作的?
  • @Liam 正如错误票中所建议的,您需要取消选中“轻量级结帐”才能使这项工作。
【解决方案2】:

我不认为你们可以在同一个 jenkins 工作中,你需要做的是配置一个新的 jenkins 工作,它可以访问你的 github 来检索分支,然后你可以选择手动构建哪个。

只需将其标记为参数化构建,指定名称,并将参数配置为git parameter

现在你可以配置 git 选项了:

【讨论】:

  • 那个git参数是一个jenkins插件??我没有看到添加该类型参数的选项。如果它是一个插件,您可以在答案中指出它吗?
  • @LeandroDavid 是的 Git Parameter 是一个需要安装的插件,你会在 Add Parameter 下看到这个选项。
【解决方案3】:

要通过 Jenkins 脚本签出分支,请使用:

stage('Checkout SCM') {
    git branch: 'branchName', credentialsId: 'your_credentials', url: "giturlrepo"
}

【讨论】:

  • 我知道这不是问题所在,但我一直在搜索此信息,谷歌一直建议使用此网站作为答案。
  • 这里也一样,兄弟。你能找到确切答案的答案吗
【解决方案4】:

我可以看到很多很好的问题的答案,但我仍然想分享这个方法,使用 Git 参数如下:

在构建管道时,系统会要求您选择分支:

之后通过 groovy 代码,您可以指定要克隆的分支:

git branch:BRANCH[7..-1], url: 'https://github.com/YourName/YourRepo.git' , credentialsId: 'github' 

请注意,我使用从 7 到最后一个字符的切片来缩小“origin/”并获取分支名称。

此外,如果您配置了 webhook 触发器,它仍然可以工作,并且它将采用您指定的默认分支(在我们的例子中为master)。

【讨论】:

【解决方案5】:

我终于解决了这个问题。您需要连接您的Git parameter 插件和Generic Webhook Trigger 插件。像这样:

【讨论】:

    【解决方案6】:

    This is extension of answer provided by Ranjith

    我建议您选择一个选择参数构建,并指定您想要构建的分支。 Active Choice Parameter

    然后,您可以指定要构建的分支。 Branch to Build

    现在,当您构建项目时,您将获得“使用参数构建,您可以在其中选择要构建的分支”

    您还可以编写一个 groovy 脚本来获取所有分支到活动选择参数中。

    【讨论】:

    • 请详细说明。 TeamCity 默认会这样做,但 Jenkins 甚至不能自己系鞋带!!!
    【解决方案7】:

    在构建触发器下的配置中会有一个选项

    检查 GitHub 分支

    将创建一个钩子,然后您可以在选择 github Branches 时从 Jenkins 构建您喜欢的任何分支

    希望对你有帮助:)

    【讨论】:

    • 我正在尝试将此插件与此设置一起使用,但我找不到启动工作的方法。是否有其他方法可以检查事件是否正确来自 gh?
    • 您是否获得了Run Branch Trigger 选项,它会扫描 git repo 中的所有可用分支...也只需查看 jenkins 日志 -> 在 Manage Jenkins... 下查看是否发生错误
    • 请详细说明,您的描述太小太短了。
    【解决方案8】:

    我遇到了同样的问题。 我的 jenkinsfile 有一些问题。 例如,在发布启动时,结帐分支是开发的。因此,无论我的输入如何,都在使用开发(并且我的分支尚未合并到开发) 另外,尝试像这样添加完整的分支名称。以下是帮助选项中的描述:

    "最安全的方法是使用 refs/heads/ 语法。这样 预期的分支是明确的。

    如果您的分支名称中包含 /,请确保使用完整参考 上面。”

    【讨论】:

      【解决方案9】:

      你也可以使用正则表达式 |代表“或”

      像下面的例子:

      (.*branch1|.*branch2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多