本文记录一次持续集成、持续部署实施过程。
安装docker后,gitlab和jenkins可以选择docker部署,本文采用docker compose部署。
jenkins首次登陆密码可以通过下面的命令查看:
docker logs jenkins
本文是在docker宿主机的jdk和maven通过卷映射到了jenkins容器中。
也就是docker宿主机的ssh相关配置,以便在jenkins中可以通过ssh远程操作docker宿主机build和run容器。
选择创建maven项目。
- 源码管理
- 构建触发
- 远程构建
Q: 项目源码配置时,在gitlab中正确配置ssh public key后,发现在jenkins中还是无法远程clone gitlab上的project。
A: jenkins和gitlab都是在docker容器中部署的,且给gitlab服务还映射了hostname,虽然在外界可以通过宿主机ip+对应port访问服务, 但其实这些都是通过宿主机netfilter完成的,jenkins和gitlab容器启动时,会被分配自己的ip地址,所以jenkins想远程clone gitlab上 源码时,要么在jenkins hosts中配置gitlab的ip映射、要么通过gitlab真实ip clone。
Q: docker build自动构建后的project时,无法COPY或是ADD项目jar文件。
A: 原因是没有完全理解COPY或是ADD操作所对应的context,docker构建镜像时,会将docker上下文中的所有文件上传到镜像临时目录下, directory中的文件,会被提取放到和directory同级目录下。