安装与配置

下载地址 https://www.jenkins.io/download/
下载稳定版war包
war包运行在web容器中,可以先安装tomcat,或者用java命令运行
迁移jenkins的home目录,默认的home目录在用户目录下
vim /etc/profile
# 添加配置
export JENKINS_HOME=/opt/app/jenkins/.jenkins
# 配置生效
source /etc/profile
启动jenkins,把war放入tomcat webapps目录下或使用命令
浏览器进入jenkins页面 http://ip:8080/jenkins
Jenkins自动化构建使用笔记 - 图1

使用cat命令查看初始密码
Jenkins自动化构建使用笔记 - 图2

Jenkins自动化构建使用笔记 - 图3

等待他安装完
Jenkins自动化构建使用笔记 - 图4


Jenkins自动化构建使用笔记 - 图5

Jenkins自动化构建使用笔记 - 图6

常用插件及基本配置


Jenkins自动化构建使用笔记 - 图7

配置jekins的maven、git、jdk

这三个需要提前安装好
Jenkins自动化构建使用笔记 - 图8

注意这里配置的是git可执行文件的路径
Jenkins自动化构建使用笔记 - 图9

Jenkins自动化构建使用笔记 - 图10

保存
安装Maven Integration和Publish Over SSH插件
Maven Integration 这个是jenkins的maven集成插件 , 安装后可以在创建任务里面创建maven项目
Publish Over SSH 这个是jenkins的ssh发布插件 ,可以将构建好的程序包通过ssh远程发布到指定服务器插件安装完成后重启生效 , 重启后在系统设置中
Jenkins自动化构建使用笔记 - 图11

在可选插件里搜索然后下载

配置Publish over SSH

Jenkins自动化构建使用笔记 - 图12
点击进入之后,滚动条滚到最下面
Jenkins自动化构建使用笔记 - 图13
Passphrase:如果私钥设置了密码就是私钥的密码,私钥没设置密码可以不填
Path to key:私钥的位置
Key:私钥的内容。如果此处填入了值,则以此处的值为准,会忽略掉Path to key的配置
SSH Servers:服务器的配置
Name:名称(自定义)
Hostname:服务器地址
Username:用户名
Remote Directory:默认远程服务器的路径
准确的说就是配置ssh连接服务器的ip和用户名密码,以及要把打包的项目拉取到服务器上的目录路径

点change password输入连接linux的密码
Jenkins自动化构建使用笔记 - 图14

然后点下面的Test Configuration测试是否连接成功,显示success就表示成功
这里配置远程服务器连接ssh可以配置多个服务器

Jenkins + git + maven 自动化构建

构建一个maven项目

Jenkins自动化构建使用笔记 - 图15

Jenkins自动化构建使用笔记 - 图16

Jenkins自动化构建使用笔记 - 图17

配置git仓库及账号

添加git仓库和账号,这里我用github账号
Jenkins自动化构建使用笔记 - 图18
触发器可以设置定时构建

Jenkins自动化构建使用笔记 - 图19

image.png

maven打包设置

Goals and options一栏填maven的打包命令:
clean package -Dmaven.test.skip=true -U clean install
image.png

部署脚本设置


Jenkins自动化构建使用笔记 - 图22

Jenkins自动化构建使用笔记 - 图23

Source files : 源文件地址,相对地址
Remove prefix : 忽略前缀路径
Remote directory : 远程服务器要保存的文件目录
Exec command : 执行脚本命令
Jenkins自动化构建使用笔记 - 图24

脚本代码

  1. #! /bin/sh
  2. echo "授予权限...."
  3. # 与上面publish over ssh 配置的Remote Directory路径对应
  4. chmod 755 /opt/app/code/boottest.jar
  5. echo "执行..."
  6. export BUILD_ID=dontKillMe
  7. # 要指定java可执行文件全路径 在后台运行 指定输出的log文件名
  8. nohup /usr/local/jdk/bin/java -jar /opt/app/code/boottest.jar > boottest.log 2>&1 &

这里jar包名值得提一下,如果不在maven里面配置jar就会带有版本号,这样配置了jar包就只是项目名了

Jenkins自动化构建使用笔记 - 图25


之前我发现虽然部署成功,但是发现没有帮我启动项目,通过大量百度发现是脚本的问题
jenkins会杀进程
一定要写让进程在后台执行的脚本!!!

配置完了点保存,然后运行看控制台输出,构建成功了

Jenkins自动化构建使用笔记 - 图26


再次构建时可以基于一个存在的项目复制创建
Jenkins自动化构建使用笔记 - 图27

列出一个部署springboot项目的脚本案例

  1. #!/bin/bash
  2. echo "==================start deploy project========================="
  3. echo "Stopping SpringBoot Application"
  4. app_name=boottest
  5. app_version=2.0.0-SNAPSHOT
  6. jar_name=$app_name-$app_version.jar
  7. pid=$(ps -ef|grep -i $jar_name |grep -v "grep"|awk '{print $2}')
  8. echo "获取pid成功"+$pid
  9. if [ -n "$pid" ];
  10. then kill -9 $pid
  11. echo '解除端口占用'
  12. fi
  13. echo "授予当前用户权限"
  14. chmod 755 /opt/app/code/$jar_name
  15. echo "执行....."
  16. cd /opt/app/code/
  17. BUILD_ID=dontKillMe nohup /usr/local/jdk/bin/java -Xms1g -Xmx1g -jar /opt/app/code/$jar_name \
  18. --spring.profiles.active=dev \
  19. --eureka.instance.hostname=192.168.12.103 \
  20. --spring.redis.host=192.168.12.103 \
  21. --spring.redis.port=6379 \
  22. --spring.redis.password=1234 \
  23. --spring.rabbitmq.host=192.168.12.103 \
  24. --spring.rabbitmq.username=guest \
  25. --spring.rabbitmq.password=guest \
  26. --spring.datasource.address=192.168.12.103:3306/istorm-automation \
  27. --spring.datasource.password=1234 \
  28. --security.address=192.168.12.103:8040 \
  29. --remoteServerFile=http://192.168.12.103:8040/api/file/file/ \
  30. --seata.address=192.168.12.103:8091 > $app_name.log 2>&1 &
  31. echo "==================deploy project success========================="