我正在尝试建立一个设置,Gitea和Jenkins在单独的Docker容器中运行,并设置一个简单的管道。
我遇到的问题是把Jenkins和Gitea联系起来。在我的设置中,Gitea正在侦听容器中端口22上的SSH,我将其映射到本地主机上的端口3001 (目前用于测试目的)。
从create新管道接口,我被要求向Gitea回购提供SSH url。我确实是这样说的:
git@localhost:3001/repo/project.git但詹金斯似乎无法联系上说我需要一个有效的URL。我已经将Jenkins生成的密钥添加到了我的Git用户配置文件中。
然后,我尝试从本地主机执行git克隆,因此生成了一对密钥,将公钥添加到同一个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容器,并且它们是在同一个网络上连接的。
我在这里遗漏了什么,这样我才能从Gitea那里克隆出在码头运行的克隆人?我相信这也是解决詹金斯问题的关键。
谢谢
发布于 2018-05-09 12:11:58
看起来,您提供给Jenkins的URL (git@localhost: 3001 /repo/project.git)意味着Jenkins的 localhost,即它在其中运行的容器,而不是停靠主机 localhost,即端口3001被转发到Gitea容器端口22的服务器。
尝试首先使用基于,例如http://:3000/username/mypetproject,前提是您还将Gitea的UI端口3000转发到您的码头主机上的同一个端口。
我有一个类似的设置工作: Gitea和Jenkins都在同一个网络上运行在他们自己的容器中,整个过程是由docker-组合管理的。Gitea集装箱出口港3000000个,港口22个22022个。另外,Gitea托管在子路径/gitea/中:我在撰写文件中有很多其他内容,希望避免显式地指定端口,因此我添加了一个nginx实例作为反向代理,将/jenkins/*请求路由到Jenkins的容器,/gitea/*请求路由到Gitea的容器。
在Jenkins作业设置中,我使用http://<hostname>/gitea/username/repo.git作为回购URL。<hostname>显然是主机的名称。
最后一件事:尝试将docker exec插入正在运行的Gitea容器中,并使用端口22在本地克隆回购(基本上与您从本地主机尝试的操作相同)。如果成功的话,您可以合理地确定Gitea没有错误,并且应该检查您的网络/端口转发设置。
https://stackoverflow.com/questions/49575024
复制相似问题