【问题标题】:Jenkins doesnt retrieve git references using git parameter pluginJenkins 不使用 git 参数插件检索 git 引用
【发布时间】:2016-12-23 17:45:20
【问题描述】:

您好,我正在尝试将我们的 jenkins 构建服务器配置为使用 git 分支。

我的配置如下:

如果我点击带有参数的构建,我会得到一个像这样的空列表:

我已经在没有参数的情况下构建了这个项目并且它有效。在 Source-Code-Management 部分,我添加了我们的服务器,其中包含没有 ssh 的正确信用。 (只有用户名和密码)

但是我在列表中没有 git 引用。我搜索了一下,发现如果您使用 ssh 但我们不使用 ssh,这是一个常见问题。我不想通过可扩展选择参数插件来解决问题。

那么这里的问题是什么?我不敢相信这在 jenkins 中很难配置...

我们使用最新的 jenkins 版本和带有 maven id 的 git 参数插件: org.jenkins-ci.tools:git-parameter:0.4.0

【问题讨论】:

  • 你的 git repo 是否可以从你的 jenkins 服务器访问。当我使用代理与 github 存储库通信时,我遇到了同样的情况
  • 您好 DevD 感谢您的帮助。我很确定可以从 jenkins 服务器访问 git repo,因为我可以使用字符串参数分支来解决问题,该分支选择使用 $branch 变量构建的分支。这个解决方案有效,但这不是我们想要的。如果我用 git 参数尝试它仍然没有加载列表。
  • 我需要一些时间来试试这个,因为现在 git 插件中有很多问题.. 抱歉耽搁了。我明天会更新你
  • 任何更新@DevD?我在同一条船上。
  • @Kingalione 非常抱歉.. 由于个人承诺,目前无法处理.. 今天我会处理它。

标签: git jenkins jenkins-plugins


【解决方案1】:

我遇到了同样的问题,我遵循了在讨论中找到的建议:从 Github (https://github.com/jenkinsci/git-parameter-plugin) 获取最新版本的插件 (0.4.1-SNAPSHOT),编译并安装它。

该插件的新版本可以在 Linux 环境中的作业 SCM 配置中使用 SSH URL/凭据。

【讨论】:

  • 你能分享你的 0.4.1-SNAPSHOT hpi 包吗?
  • 我已经将它存储在这里drive.google.com/file/d/… 这是我使用和测试过的版本。
  • 这解决了我所有的问题@JonathanVanderick 谢谢!
【解决方案2】:

这是我的 bitbucket 解决方案:(也应该对 gitlab/github 的 URL 稍作修改)

您可以使用 Bitbucket Rest API 和 Scriptler 来做到这一点: (这里以“标签”端点为例。它也适用于其他端点,例如“分支”)

  1. 转到管理 Jenkins -> Scriptler -> 添加新脚本

    您必须为 组织, 存储库, 用户 和密码。 最好的方法是使用 scriptler 中的“定义脚本参数”选项

```

    String organization="${ORGANISATION}"
    String repository="${REPOSITORY}"
    String endpoint="tags"
    String baseUrl = "https://api.bitbucket.org"
    String version = "1.0"
    // Create authorization header using Base64 encoding
    //HERE YOU CAN GET THE AUTH CREDENTIALS OVER THE CREDENTIALSID INSTEAD 
    String userpass = "${USER}:${PASSWORD}"
    String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());
    println basicAuth
    String url = [baseUrl, version, "repositories", organization, repository, endpoint].join("/")
    println "URL " + url
    // Create URL
    URL apiUrl = url.toURL()
    // Open connection
    URLConnection connection = apiUrl.openConnection()
    // Set authorization header
    connection.setRequestProperty("Authorization", basicAuth)
    InputStream inputStream = connection.getInputStream()
    HashMap tags = new groovy.json.JsonSlurper().parseText(inputStream.text)
    inputStream.close()
    Set keys= tags.keySet();
    List<String>  list=new ArrayList<String>()
    keys.each { key ->
        println key
        list.add(key)
    }
    return list

```

  1. 然后你应该添加“动态选择参数(Scriptler)” 参数到您的工作并选择您添加的脚本程序 前。注意:您必须安装Dynamic+Parameter+Plug-in 之前

【讨论】:

    【解决方案3】:

    解决方法。对我来说很好。希望插件尽快修复。

    1. 创建新项目,即“git_repo”。添加 Git 存储库。构建此项目一次。
    2. 在您需要使用分支/标签的项目中,只需从第一步添加带有工作空间的“file://”存储库:example (file:///var/lib/jenkins/jobs/git_repo/workspace)

    在这种情况下,我的项目可以获取构建项目所需的所有数据。

    【讨论】:

      【解决方案4】:

      如果您在 Windows 上使用 Jenkins,Git Parameter Plug-In 0.4 可能无法工作并一直显示“正在检索 Git 引用”。

      我认为原因是插件没有使用 Jenkins 的凭据,而是以系统的登录用户身份运行 git 命令。您可以通过将 JenKins 的 Windows 服务的登录用户更改为已登录并将密码保存在 Windows 凭据中的真实用户来修复它。

      【讨论】:

        【解决方案5】:

        我在没有 Git 标签的情况下遇到了同样的“检索 Git 引用”问题,但这不是权限问题。我把这个留在这里,以防其他人偶然发现这个链接(谷歌的第一个问题)并且可能和我有同样的问题。

        当我查看 Jenkins 日志时,我看到 Git 参数插件中出现 Java 数字格式错误 (java.lang.NumberFormatException) 的错误。这是因为我使用构建时间戳来创建我的标签,它最终是一个非常长的数值。该插件必须将其识别为数字,然后尝试将其转换为 int (我假设稍后进行排序),但随后因为它太长而爆炸。为了解决这个问题,我必须删除我的所有标签并将我的构建更改为带有作业名称和构建号的标签(例如,DEV-233)。在我这样做之后,标签列表被正确填充。

        【讨论】:

          【解决方案6】:

          我得到了相同的“检索 git 引用”,但没有分支。网上有几种解决方案。

          1. 运行 chron 作业,创建分支列表,将它们保存到文件系统并读取它以显示。
          2. 运行 groovy 脚本获取分支列表并显示。

          我的解决方案(对我有用)是从 github 下载 git-parameter 插件的源代码,构建插件并移至 jenkins/WEB-INF/plugins。开始显示 repo 上可用的分支列表。

          步骤:

          1. git 克隆https://github.com/jenkinsci/git-parameter-plugin.git
          2. cd git-parameter-plugin
          3. mvn clean package -DskipTests=true
          4. 将 git-parameter.hpi 从 git-parameter-plugin\target 复制到 jenkins/WEB-INF/plugins
          5. 重启詹金斯。

          你现在应该可以看到所有的分支了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-09-22
            • 2018-06-06
            • 2018-05-08
            • 1970-01-01
            • 2010-10-07
            • 1970-01-01
            • 1970-01-01
            • 2016-10-18
            相关资源
            最近更新 更多