这里就只演示单个项目的部署,如果是分布式项目或者在KubeSphere只需要将传统构建项目改成流水线即可,这边就简单实现一下拉取代码,maven打包,包体上传,重启jar包等。
jenkins安装可以查看我的另一篇blog,里面用了docker安装,快捷而且比传统tomcat+war或者yum安装少了不少坑。
注意:使用的maven是挂载进来的,下载maven:maven3.5.4,所以需要先在docker宿主机安装maven,并配置环境变量。
1.jenkins入门配置
1.获取初始密码
打开jenkins页面,默认端口是 ip:8080本地就是localhost:8080;
首先解锁jenkins,通过服务器进入到jenkins的容器
docker exec -it jenkins /bin/bash
jenkins@93f88d6ca212:/$ cat /var/jenkins_home/secrets/initialAdminPassword
a6f6d08fcc474178833001d1fc79be62
2.安装默认插件
然后安装默认的插件,如果你知道自己需要什么插件也可以选择指定安装。 如果不知道先安装默认,后续要使用什么安装什么。
3.创建管理员账号
接着安装完毕后创建第一个账号
4.实例配置
配置实例就默认服务器地址就好
这样jenkins默认配置就好了,但插件还是缺少的。
2.安装插件
1.进入系统管理
2.点击插件管理
系统配置中最常用的就是这三个配置,记住他们入口就好在左边齿轮进入就好。
3.安装所需插件
选择可选插件 搜索我们需要安装的,如果搜索不到确认是否已经在已安装内了。
1️⃣ Publish over ssh:ssh传输文件的插件,相当于我们平时使用的xftp,用于上传文件到服务器。 2️⃣ Maven Integration plugin:用于配置maven的,用于在jenkins中打jar包。 3️⃣ Role-based Authorization Strategy:用于控制权限的,可以给不同用户设置管理员、读、写权限。
安装好记得重启jenkins。
3.配置安装好的插件
回到系统配置
1.配置maven
在上一篇文章安装中,我挂载了一个maven文件夹,那个maven文件夹的作用就是为了在容器中使用。 然后在服务器找个文件夹解压就好,然后挂载到docker中使用。
进入全局工具配置->Maven name:随便填 MAVEN_HOME:挂载到docker中的路径,因为我还打包了一层文件夹所以我的maven是放在apache-maven-3.5.4/下
还要配置settings文件。同理找到文件夹中settings就好
2.配置ssh
进入到系统配置的第一个,系统配置 找到publish over ssh 然后点击高级打开设置端口+密码
最后测试连接情况,提示success就是能够连接上啦~
4.创建自动化任务
全部准备工作就绪,就开始创建自动化部署任务。
- 拉取代码。
- 打包。
- 上传对应服务器。
- 重启jar包。
1.拉取代码
注意:git地址如果选择ssh则需要配置公私钥,具体使用可查看jenkins配置git,这边使用账号密码的方式获取
git用户名和密码
2.打包
注意:这里的路径是在工作目录下的路径,我们代码拉取下来,pom.xml就在文件夹中,所以配置的是pom.xml,如果是微服务多层文件夹就需要指定 xxx微服务/pom.xml
// 跳过test也可以直接使用clean package
clean package -Dmaven.test.skip=true
3.把jar包上传服务器
这里因为我要上传服务器,所以选择了send files选项
重点讲一下post steps的配置
- name:之前在全局配置配置的服务器,选择具体配置即可。
- Source files:在jenkins Workspace打包后,要上传的文件,因为我们的包是会产生在 target/xxxxxx.jar,所以我们需要配成target/xxxx.jar
- Remove prefix:如果这个不配置,那么我们会将target文件夹+jar包上传到服务器,因为我们只要jar包,所以配置target/
- exec command:上传文件夹后,在目标服务器执行的脚本,脚本就是重启程序,如果需要备份还可以在pre步骤执行shell脚本备份。
- 如果目标服务器已经有该同名jar包,就会覆盖。
注意:脚本执行失败的原因
- 需要进入到脚本位置 sh restart.sh。
- 如果启动命令执行失败,在sh前加上 source /etc/profile。
cd /home/endwas/d
source /etc/profile
sh restart.sh
4.运行
ps:如果执行失败点击版本号,查看日志,确认哪步执行失败了
总结
jenkins自动化部署,加上可视化界面对于运维是很有帮助的,使得测试和前后端对接效率提高,但有时候配置会让人抓狂,比如环境中配置了,但一直用不了mvn、node等命令。在远程主机执行shell却项目没启动等。
评论