实现Jenkins docker部署,设置svn/maven/jdk/ssh,编写自动部署工程脚本

折腾了好几天,终于实现了自动化部署,废话不多说,直接上干货:

先说环境,服务器操作系统是centos8,docker版本19.03.5,所有容器文件放到/data。

因为要新建maven工程,需要提前安装好jdk和maven。

第一步:docker search jenkins,找到评星最多的官方镜像,pull后创建容器,没想到无法启动,无奈放弃,选用第二个jenkins/jenkins,此为第一个坑:-(

实现Jenkins docker部署,设置svn/maven/jdk/ssh,编写自动部署工程脚本

第二步:创建容器:

新建目录 /data/jenkins_home,然后

docker run -d -p 8080:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins

这里自己挖了一个坑,把/data和/var搞反了,然后成功跳出。

/etc/localtime也是一个坑,实际上使用的是/etc/timezone, 造成后面的容器时间与服务器时间不一致,此坑未填,因为已经安装了一堆插件,否则后面还有重来。

docker ps -a 查看容器:实现Jenkins docker部署,设置svn/maven/jdk/ssh,编写自动部署工程脚本

第三步:http://ip:8080, 开始安装初始化,

cat /data/jenkins_home/secrets/initialAdminPassword,复制密码后开始

插件安装时不要安装推荐插件,因为:连jenkins官方服务器太慢了!

但可以先安装一个中文本地化插件Localization Support Plugin,否则后面改成中文界面比较麻烦!

粗鲁的修改方法:

cd /data/jenkins_home/updates

sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

或者在系统设置里修改,但没什么卵用,速度变化不大。

第四步:安装插件

Folders,SSH,Subversion,maven插件都是必须的,遗漏也没关系,使用时会有文档提示你安装的。

安装后如果没有问题,这里不应该有下图中的红色图标: 

实现Jenkins docker部署,设置svn/maven/jdk/ssh,编写自动部署工程脚本

 

安装Credentials插件时,我降低了一下版本到2.2.0,否则会有冲突,不是所有插件都需要升级到最高版本。

第五步:进入系统管理-全局工具配置:

配置jdk和maven路径,jdk路径需要到容器里用$JAVA_HOME查看。

进入系统管理-系统配置-全局属性,新增SSH remote hosts,工程运行脚本时会用到。

第六步:新建一个maven工程,实现Springboot项目自动部署

这个网上的文章很多,无非就是设置一下svn地址账户密码,第一次构建时时间长一点,多等一会。麻烦的地方在于通过ssh远程执行脚本。在Post Steps步骤中选择Run only if build succeeds,添加

实现Jenkins docker部署,设置svn/maven/jdk/ssh,编写自动部署工程脚本

脚本内容:

jarfilename="iqms_test.jar"
pids=`ps -ef | grep $jarfilename | grep -v grep | awk '{print $2}'`
for pid in ${arr[@]}
  do
  exe_str=`kill -9 $pid`
  echo ${exe_str}":"${pid}" is killed."
  done
scp -P 9022 [email protected]:/data/jenkins_home/workspace/iqms-be-1/iqms-be-1/target/iqms.jar /iqms_beta/iqms_test.jar
/usr/bin/java -jar /iqms_beta/iqms_test.jar
echo "...end..."

第七步:开始构建吧,一般情况下,第一次不可能成功的,我搞了六次,祝大家顺利!

 

另外ssh需要配置免密码登录,注意是从jenkins服务器登录到被部署的服务器上运行,所以要在jenkins服务器上生成rsa**,做复制到被部署的服务器上。但我还是碰到一个问题,ssh无法用新建的用户名登录到被部署的服务器,命令行可以,在jenkins里测试怎么都不行,难道是密码太简单了?还是加密方式不一致?期待大咖帮我解决一下,先谢谢了!