【问题标题】:Gitea and Jenkins setup in DockerDocker 中的 Gitea 和 Jenkins 设置
【发布时间】:2018-09-09 12:43:50
【问题描述】:

我正在尝试设置 Gitea 和 Jenkins 在单独的 Docker 容器中运行并设置一个简单的管道。

我遇到的问题是将 Jenkins 连接到 Gitea。在我的设置中,Gitea 在容器的 22 端口上侦听 SSH,我将其映射到本地主机上的 3001 端口(目前用于测试目的)。

在创建新管道界面中,我被要求向 Gitea 存储库提供 SSH url。我确实提供了这个:

git@localhost:3001/repo/project.git

但 Jenkins 似乎无法连接说我需要一个有效的 URL。我已经将 Jenkins 生成的密钥添加到我的 Git 用户配置文件中。

然后我尝试从我的 localhost 进行 git clone,所以我生成了一对密钥,将公钥添加到同一个 Git 配置文件中,然后执行命令

git clone ssh://git@localhost:3001/repo/project.git

但是结果是:

Cloning into 'project'...
ssh_exchange_identification: Connection closed by remote host
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

所以我不确定我错过了什么。我确实将本地机器生成的密钥添加到了 GitHub,并且能够从那里很好地克隆,所以我很确定这与 Docker 环境中的 Gitea 有关。

我已经验证了 Jenkins 容器可以看到 Gitea 容器并且它们加入了同一个网络。

我在这里遗漏了什么,以便我可以从在 Docker 中运行的 Gitea 进行 git clone ?我相信这也是解决 Jenkins 问题的关键。

谢谢

【问题讨论】:

    标签: git docker jenkins gitea


    【解决方案1】:

    看起来你给 Jenkins 的 URL (git@localhost:3001/repo/project.git) 暗示 Jenkins' localhost,即它运行的容器,而不是 docker host localhost,即3001端口转发到Gitea容器22端口的服务器。

    首先尝试使用基于 HTTP 的 git repo URL,例如http://:3000/username/mypetproject,前提是您还将 Gitea 的 UI 端口 3000 转发到 docker 主机上的同一端口。

    我有一个类似的设置工作:Gitea 和 Jenkins 都在同一个网络上的自己的容器中运行,整个事情都由 docker-compose 管理。 Gitea 容器将端口 3000 导出为主机端口 3000,将端口 22 导出为 22022。此外,Gitea 托管在子路径 /gitea/ 中:我在 compose 文件中有很多其他内容,希望避免显式指定端口,所以我添加了一个 nginx 实例作为反向代理,将 /jenkins/* 请求路由到 Jenkins 的容器,并将 /gitea/* 请求路由到 Gitea 的。

    在 Jenkins 作业设置中,我使用 http://<hostname>/gitea/username/repo.git 作为 repo URL。 <hostname> 显然是 docker host 的名字。

    最后一件事:尝试docker execing 进入一个正在运行的 Gitea 容器并使用端口 22 在本地克隆 repo(基本上与您从 localhost 尝试的相同)。如果此操作成功,您可以合理地确定 Gitea 没有问题,您应该检查您的网络/端口转发设置。

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 2019-03-10
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 2015-06-27
      • 2019-06-24
      相关资源
      最近更新 更多