Docker-CD
安装Jenkins
docker-compose.yml
version: "3.1" services: jenkins: image: 10.0.134.175:5000/jenkins:2.235 restart: always container_name: jenkins ports: - 9999:8080 - 50000:50000 volumes: - ./data:/var/jenkins_home
写完yml文件启动,第一次启动会失败,查看日志,数据卷data目录权限不足:chmod 777 data。
重启jenkins容器。这次启动速度较慢,知道可以访问到jenkins首页
需要在首页输入日志中提供的一个密钥
选择自动安装插件还是手动指定安装插件,选择后者。
- 必须要安装的内容有2个:Publish Over SSH,Git Parameter
- 开始安装。(网不好,会漫长的等待,并且伴随着不断的失败,不断的重试。)
直到可以访问到指定管理员信息的界面。- 指定用户信息。
- 指定默认URL。
- 进入到Jenkins的首页。
还需要再Jenkins中再次安装一个插件(Persistent Parameter)
CD 流程
当程序员将代码推送带GitLab上后,会再GitLab仓库版本中打标签,指定版本号。
GitLab —> Jenkins ----> 目标服务器(测试环境,生产环境)
Jenkins绑定目标服务器。
- 系统管理:系统配置:拉到最下面能看到Publish over SSH:
Name:随便起名字
Hostname:指定目标服务器的名称
Username:目标服务器的用户名
Remote Directory:目标服务器的操作目录,这个目录必须提前创建(存在)
选择高级,勾选第一个口
Passphrase/Password:输入用户名对应的密码
测试成功后点击保存
Jenkins链接GitLab。(采用SSH无密码链接的方式)
- 进入到Jenkins容器内部,先跳转到用户目录~,执行ssh-keygen -t rsa -C “邮箱(随便写)”
- 在~目录下,会生成一个.ssh隐藏目录,进入.ssh目录。
- 能查看到私钥和公钥,将公钥复制到GitLab的settings配置中。
进入Gitlab中,点击头像—》settings—》SSH Keys—》将公钥放入key中—》点击Add key- 需要在指定好GitLab无密码链接后,使用git clone 下载一次项目。
- 第一次使用SSH登录时, Git会询问yes/no。输入yes
在Jenkins中安装JDK和Maven
- 在宿主机中映射Jenkins的数据卷目录下,解压JDK和Maven的压缩包。
- 在Jenkins页面中配置:系统管理—全局工具配置—JDK安装—Maven安装
CD 前期测试
Jenkins 可以去GitLab中拉去代码,并且在Jenkins内部将项目打成war包。
Jenkin首页点击新建任务—输入名字,选择"构建一个自由风格的软件项目"—确定
General—在源码管理中勾选Git—在Repository URL中写入Git远程仓库的SSH链接路径—构建触发器—增加构建步骤—选择调用顶层Maven目标—Maven版本:指定之前配置的Maven环境;目标:package(将src和pom.xml打包)
配置Jenkins通过tag标签实现操作
给GitLab中的项目打标签(tag)。
配置Jenkins信息:
- General:参数化构建:Git参数
- 名称:tag
- 参数类型:标签
- 默认值:master
再次build with parameter时,就可以看到GitLab中项目的标签信息了。
为了指定标签构建的同时,可以选择指定标签下的项目代码,需要重新配置打包方式:
构建:执行shell去构建项目echo $tag pwd git checkout $tag git pull origin $tag /var/jenkins_home/apache-maven-3.6.3/bin/mvn clean package -DskipTest
为了可以将war包,部署到目标服务器上,需要指定配置信息:
General—选择构建后操作:Send build artifacts over SSH:
Name:之前指定的名称
Source files:**/*.war,docker-compose.yml,Dockerfile
Remote directory:在绑定的目标服务器目录下再次创建一个目录,将内容存放。
Exec command:
cd /usr/local/jenkins/testcd
cp target/test-cd-1.0-SNAPSHOT.war ./testcd.war
docker-compose down
docker-compose up -d --build
docker image prune -f
在IDEA项目中准备与src统计目录的docker-compose.yml文件,以及Dockerfile文件自定义镜像