Docker结合jenkins完成快捷打包部署

关注我更多精彩文章第一时间推送给你 Docker结合jenkins完成快捷打包部署
文章图片

安装jenkins 我这里选择的是docker方式安装,根据官方建议使用的额镜像是jenkinsci/blueocean

建议使用的Docker映像是 jenkinsci/blueocean image(来自 the Docker Hub repository)。 该镜像包含当前的 长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。
拉取镜像
docker pull jenkinsci/blueocean


运行镜像
docker run -d --name jenkins \ -p 8010:8080 -p 8011:8081 -p 50000:50000 \ -v /home/docker/jenkins/data:/var/jenkins_home \ --privileged=true --restart=always \ jenkinsci/blueocean:latest

此时docker ps查看容器运行状况发现一直在重启
jenkinsci/blueocean"/sbin/tini -- /usr/…"20 minutes agoRestarting (1) 17 seconds ago

查看日志docker logs jenkins 得到
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

需要修改下目录权限, 因为当映射本地数据卷时,/home/docker/jenkins/data目录的拥有者为root用户,而容器中jenkins user的uid为1000 执行如下命令即可
chown -R 1000:1000 /home/docker/jenkins/data # 重启jenkins容器 docker restart jenkins

启动成功之后的配置
  • 访问192.168.16.128:8010,即你的ip + 你docker启动时候映射的端口
Docker结合jenkins完成快捷打包部署
文章图片

  • docker安装的密码去哪里找呢?
  • 答案是去日志里是最快速的,当然也可以去容器内部docker exec -it 容器id /bin/bash 按照提示地址获取
# 查看日志 docker logs jenkins # 得到的日志中的密码 ************************************************************* ************************************************************* *************************************************************Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation:8c4bdd47724b4c1b82e726c7bfb62faeThis may also be found at: /var/jenkins_home/secrets/initialAdminPassword************************************************************* ************************************************************* *************************************************************

  • 安装推荐的插件
Docker结合jenkins完成快捷打包部署
文章图片

  • 如果需要重启则执行
docker restart jenkins

Docker结合jenkins完成快捷打包部署
文章图片

配置java和maven
  • 如下图所示:进入到jenkins容器内部查看,已经安装了jdk1.8,所以我们直接找到jdk1.8的地址配置上就行
Docker结合jenkins完成快捷打包部署
文章图片

# 进入jenkins容器内部 docker exec -it jenkins /bin/bash # 查看jdk版本 java -version # 查看jdk地址 echo $JAVA_HOME

Docker结合jenkins完成快捷打包部署
文章图片

  • jdk配置jenkins内部的,maven自动安装,3.6.3即可,之后保存。
【Docker结合jenkins完成快捷打包部署】Docker结合jenkins完成快捷打包部署
文章图片

  • 安装这个maven插件
Docker结合jenkins完成快捷打包部署
文章图片

  • 新建一个maven项目
Docker结合jenkins完成快捷打包部署
文章图片

  • 配置git地址
Docker结合jenkins完成快捷打包部署
文章图片

  • 添加构建命令
Docker结合jenkins完成快捷打包部署
文章图片

  • 这块建议跳过测试阶段,如下配置
Docker结合jenkins完成快捷打包部署
文章图片

  • 如下脚本:前四个怎么填写,先构建一次,查看控制台输出,时间可能比较久,可以配置一下maven的设置,在全局设置中如下配置:
Docker结合jenkins完成快捷打包部署
文章图片

  • 注意这里配置的settings.xml就是平时我们配置了阿里镜像源的配置,这里我配置到了容器内的/var/jenkins_home目录中,命令如下
# 进入容器 docker exec -it jenkins /bin/bash # 进入目录 cd /var/jenkins_home # 新建文件 vi settings.xml # 把配置好阿里镜像源的settings.xml中的内容复制进去 # :wq保存退出

Docker结合jenkins完成快捷打包部署
文章图片

  • 这块配置如下脚本
Docker结合jenkins完成快捷打包部署
文章图片

#!/bin/bash # 服务名称 SERVER_NAME=jenkins_test# 源jar名称,mvn打包之后,target目录下的jar包名称 JAR_NAME=jenkins_test-0.0.1-SNAPSHOT# 源jar路径,打包之后的生成的jar的路径 JAR_PATH=/var/jenkins_home/workspace/jenkins_test/target# 打包完成之后,把jar包移动到运行jar包的目录 JAR_WORK_PATH=/var/jenkins_home/workspace/jenkins_test/targetecho "查询进程id -->$SERVER_NAME"# 获取查询结果以空格为界的第一个字段,即PID端口号 PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $1}'`echo "得到进程id:$PID"echo "结束进程ing..."for id in $PID do kill -9 $id echo "killed $id" done# 等待三秒 echo sleep 3s sleep 1 echo sleep 2s sleep 1 echo sleep 1s sleep 1echo "结束进程完成"# 复制jar包到执行目录 echo "复制jar包到执行目录: cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATHecho "复制jar包完成"cd $JAR_WORK_PATH# 修改文件权限 chmod 755 $JAR_NAME.jar# 后台运行 BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &

  • 之后立即构建,即可成功
Docker结合jenkins完成快捷打包部署
文章图片

    推荐阅读