【问题标题】:Jenkins SCM Sync Configuration Plugin In Docker Won't Talk to GithubDocker 中的 Jenkins SCM 同步配置插件不会与 Github 对话
【发布时间】:2016-02-11 23:15:14
【问题描述】:

我正在从Jenkins Docker image 创建一个映像并尝试安装 SCM 同步配置插件。我创建了一个密钥,我将其复制到映像中,该映像也复制到 Github 存储库的 ssh 密钥中。我尝试在/root 和/var/jenkins_home 中创建.ssh/ 文件夹。我关注this example 并尝试将两个密钥都添加到/etc/ssh/ssh_config。这没有用。我还尝试关注另一个答案(丢失了指向它的链接),您可以在其中添加一个 config 文件到 .ssh/ 包含类似这样的内容:

Host github
    HostName github.com
    User git
    IdentityFile "/var/jenkins_home/.ssh/id_rsa"

这也不起作用。我正在使用凭证插件 + Git 插件和 /var/jenkins_home/.ssh/id_rsa file 处的凭证入口点。

有没有人得到这个插件或 git 集成在 Docker 映像中与 Jenkins 一起工作?我得到的错误如下:

INFO:为 url 创建 SCM 存储库对象:git@github.com:MY_REPO/scm-sync.git 2014 年 11 月 25 日上午 4:20:30 hudson.plugins.scm_sync_configuration.scms.SCM getConfiguredRepository 严重:创建 ScmRepository 时出错:没有这样的提供者:'github.com'。 2014 年 11 月 25 日上午 4:20:30 警告:空 java.lang.RuntimeException:ScmSyncConfiguration 初始化期间出错! 在 hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin.init(ScmSyncConfigurationPlugin.java:154) 在 hudson.plugins.scm_sync_configuration.extensions.ScmSyncConfigurationItemListener.onLoaded(ScmSyncConfigurationItemListener.java:24) 在 jenkins.model.Jenkins.(Jenkins.java:864) 在 hudson.model.Hudson.(Hudson.java:82) 在 hudson.model.Hudson.(Hudson.java:78) 在 hudson.WebAppMain$3.run(WebAppMain.java:222) 引起:java.lang.NullPointerException 在 org.apache.maven.scm.manager.AbstractScmManager.getProviderByRepository(AbstractScmManager.java:180) 在 hudson.plugins.scm_sync_configuration.SCMManipulator.scmConfigurationSettledUp(SCMManipulator.java:60) 在 hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness.initializeRepository(ScmSyncConfigurationBusiness.java:69) 在 hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness.init(ScmSyncConfigurationBusiness.java:64) 在 hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin.init(ScmSyncConfigurationPlugin.java:152) ... 5 更多

【问题讨论】:

  • 如果你愿意,可以投反对票,但是带有解释的评论会很好吗?

标签: git jenkins docker


【解决方案1】:

只是想指出,接受的答案不是这个问题的答案。 SCM 同步插件不使用凭证插件。因此,为了能够访问您的 SCM 同步存储库,您需要...

  1. 使用ssh-keygen生成一个ssh密钥
  2. 转到您的 github 存储库设置并添加一个 部署密钥。复制之前生成的公钥id_rsa.pub 步骤。
  3. 如果您已经设置了 SCM 同步设置,则需要取消选择当前的 git 存储库,然后重新添加它。

感谢这篇博文:https://cburgmer.wordpress.com/2013/01/02/tracking-configuration-changes-in-jenkins/

注意:在 docker 容器中,步骤是相同的​​。我只是通过将主机系统的.ssh 文件夹挂载为卷来将id_rsa 添加到容器中。

例如docker run -v /my-user/.ssh:/root/.ssh my-container

【讨论】:

    【解决方案2】:

    我们广泛使用我们的 docker jenkins container 和 github。我们没有遇到过这个问题。 我们不需要在容器中手动设置密钥,只需使用凭据插件即可。试试这个容器,让我知道你遇到了什么错误?

    在 UI 中设置的步骤如下:

    1. 安装凭据插件和 Github 插件
    2. 单击管理 Jenkins 页面中的管理凭据
    3. 添加您的私钥并为其命名
    4. 在作业中按名称引用密钥

    【讨论】:

    • 感谢您的回答!我有一种感觉,我可能在凭据插件中设置了错误的密钥,这很有意义。不幸的是,我要到周末才能尝试这个,但我会告诉你进展如何。
    • 我的主要问题是我的一个配置文件中有一点垃圾,所以没有任何工作并且默默地失败,但接受这个答案,因为它指出了我做错的事情。跨度>
    【解决方案3】:

    这是我的解决方案,它适用于 SURE。

    去github设置一个个人token,你会得到一个token,比如123456abc。

    在 SCM 同步插件中输入https://123456abc@github.com/EXAMPLE/EXAMPLE.git

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 2015-10-23
      • 1970-01-01
      相关资源
      最近更新 更多