我的github中有一个源代码。我在jenkins中建立了一个自由风格的工作,并在SCM部分中提供了git存储库。我需要编写一个shell脚本以将此源代码复制到外部运行的容器中。谁能帮忙。
谢谢。
答案 0 :(得分:0)
此答案假设(根据您的评论):
在容器B上,您需要:
git clone ssh://username@containerA/path/to/repo.git
在容器A上,您需要:
username
username
的{{1}} 答案 1 :(得分:-1)
好问题。
在几乎所有实际情况下,詹金斯都必须要求与目标服务器(例如tomcat,jboss,容器等)进行某种类型的通信
对于用于Java应用程序的tomcat或jboss,此服务器公开一个http端点,该端点允许远程客户端(如jenkins)或插件上载构建工件以进行部署。
在使用docker解决方案的情况下,jenkins必须能够连接到docker主机才能执行docker build,run等docker命令
在使用诸如heroku,openshift等之类的saas解决方案的情况下,所有复杂的基础架构都由它们来管理。开发人员用户只需推送源代码即可。
这里有一些方法
方法1:将文件从jenkins主机复制到容器
这是一个如何将文件从主机复制到活动容器的示例
docker cp /file/in/host/foo.txt mycontainer:/foo.txt
执行从jenkins到本地docker(如果您的jenkins在docker容器的同一主机中)或在远程linux远程(如果jenkins和docker在不同的机器中)的这一行。
在第二种情况下(远程docker),所有代码也必须在远程计算机中克隆。
也许您可以先压缩源代码,然后再将其复制到容器中。
Jenkins必须有权访问docker才能执行docker命令。
方法2:部署端点
这种方法是干净的,因为您不需要疯狂的Shell脚本即可将工件或源代码传递给活动的Docker容器。
在这种情况下,Jenkins不需要与您的Docker容器进行低级通信(ssh)。甚至您的容器应用也可以部署在其他云中,例如亚马逊,天蓝色或谷歌。
方法3:在容器内克隆源代码
docker run ...
,并发送git_url等参数。Jenkins必须有权访问docker才能执行docker命令。
方法4:创建类似heroku或openshift的内容