将源代码从github复制到Jenkins中的docker容器
我的github中有一个源代码。我在jenkins中构建了一个自由风格的作业,并在SCM部分给出了git存储库。我需要编写一个shell脚本,将此源代码复制到外部运行的容器中。谁能帮忙吗 提前谢谢。问得好 在几乎所有实际情况下,Jenkins都必须需要与目标服务器(如tomcat、jboss、containers等)进行某种类型的通信 在tomcat或jboss for java应用程序的情况下,该服务器公开了一个http端点,该端点允许远程客户端(如jenkins)或插件上传构建工件以部署它们 对于docker解决方案,jenkins必须能够连接到docker主机,以便执行docker命令,如docker build、run等 对于像heroku、openshift等saas解决方案,所有的基础设施都由他们管理。开发者用户只需要推送源代码 这里有一些方法 方法1:将文件从jenkins主机复制到容器 这是一个如何将文件从主机复制到活动容器的示例将源代码从github复制到Jenkins中的docker容器,git,shell,jenkins,build,pipeline,Git,Shell,Jenkins,Build,Pipeline,我的github中有一个源代码。我在jenkins中构建了一个自由风格的作业,并在SCM部分给出了git存储库。我需要编写一个shell脚本,将此源代码复制到外部运行的容器中。谁能帮忙吗 提前谢谢。问得好 在几乎所有实际情况下,Jenkins都必须需要与目标服务器(如tomcat、jboss、containers等)进行某种类型的通信 在tomcat或jboss for java应用程序的情况下,该服务器公开了一个http端点,该端点允许远程客户端(如jenkins)或插件上传构建工件以部署它们
docker cp/file/in/host/foo.txt mycontainer:/foo.txt
从jenkins到本地docker(如果您的jenkins位于docker容器的同一主机中)或远程linux中的remote(如果jenkins和docker位于不同的机器中)
在第二种情况下(远程docker),所有代码也必须在远程机器中克隆
也许您可以在将源代码复制到容器之前压缩源代码
Jenkins必须有权访问docker才能执行docker命令
方法2:部署端点
- 开发一个容器,公开一个名为/deploy的端点。该端点接收您的工件(如java)或文件(如php、nodejs等)
- 从jenkins发送工件,执行http请求到/deploy
- 其他想法:/deploy必须返回成功或失败,以便检测部署状态
- 使用诸如ssh代理、git、语言(java、节点等)等现成配置创建docker映像
- 在构建或运行阶段克隆容器内的源代码
- 构建或启动映像时,按以下顺序执行此任务:克隆源代码、构建和启动李>
- Jenkins将创建或启动此映像
发送git_url等参数docker run…
- 实施方法3
- 使用jenkins:()中的webhook配置检测git推送事件
- 当检测到推送事件时,jenkins必须检测存储库的编程语言,并将启动方法3的酷docker映像
- 通过电子邮件或类似的方式通知部署结果
- 让它开源
- 您有一个conteiner,其中有一个git裸存储库(a)
- 您有一个conteiner,其中有jenkins安装(B)
- 您希望从(B)中的(A)克隆/签出代码
- 创建ssh密钥对
- 设置后,通过执行
git clone来克隆代码ssh://username@containerA/path/to/repo.git
- 创建用户
username
- 将B上生成的公钥复制到
用户名
~/.ssh/authorized\u keys
- 暴露22端口