一、安装:
1、
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins
2、
vi /etc/sysconfig/jenkins
# 修改端口号:
JENKINS_PORT="8088"
3、
systemctl start jenkins.service
4、打开浏览器,输入ip:port,等待初始化完成,输入密码:
#查看密码
cat /var/lib/jenkins/secrets/initialAdminPassword
5、安装推荐的插件
6、创建账号输入密码,完成
二、配置git服务器更新后自动触发Jenkins构建
1、安装gogs(git服务器)插件
管理-》插件管理
点击可用的标签页,输入gogs搜索,点击安装,安装后在页面点击restart
2、进入git服务器gogs某个git仓库的页面,点击右上角“设置”,点击“webhooks”,添加一个url:
http://192.168.1.100:8088/gogs-webhook/?job=test
如果改了密码,输入secret
点击右下角的 测试推送 ,Jenkins就会自动构建一个版本。
三、Jenkins配置连接到远程服务器(跑代码的服务器)
先安装插件:搜索安装: Publish Over SSH
在本地服务器执行:
ssh-keygen -f rsakey
输入密钥passphrase,回车
生成的rsakey是密钥,rsakey.pub是公钥
把rsakey.pub内容复制到远程服务器的vi ~/.ssh/authorized_keys
里面,并放开远程服务器的远程登录权限。
点击系统管理 -> 系统设置 -> 找到 Publish Over SSH 配置项:
输入passphrase和rsakey密钥内容,添加远程服务器,点击测试,保存
四、新建自动化构建project
配置:
-
Gogs Webhook(来自于Gogs 插件)
Use Gogs secret选项勾上表示git服务器的Webhook调用Jenkins需要输入secret(默认是用户密码)。
Disable this project选项勾上表示git仓库更新操作不会触发该project的构建。
-
配置从git仓库拉取更新
选择git,输入仓库地址,需要账号密码就加上,默认是master分支:
-
构建的触发规则Trigger
在什么情况下触发构建,是按时间间隔还是其他project构建好,等等
-
构建环境
Send files or execute commands over SSH after the build runs
:这个表示在构建之后,执行向指定远程服务器发送文件或者在远程服务器执行脚本命令
add timestamps to the Console Output
表示构建控制台的日志加上时间戳
-
选择构建方式(shell命令还是其他script脚本等等)
静态文件构建
1、直接选择
Send files or execute commands over SSH after the build runs
选择上面Publish Over SSH 插件添加好的某个远程服务器,
Source files选项是相对于project workspace的,输入**/*
表示所有目录下的所有文件
Remote directory选项是配置的远程服务器相对路径(或者服务器的绝对路径?)
Exec command选项是在文件传输完成后,在远程服务器执行的脚本命令。
前后端分离,前端文件构建
安装nodeJs插件
自动部署springboot
Jenkins 通过shell脚本调用mvn 命令的时候,是从/usr/bin 文件夹中找命令的,这个时候需要做个软链接
ln –s /opt/maven/bin/mvn /usr/bin/mvn
新建自由风格的project
配置git源,自动从git拉取文件
Build
- Execute shell
Command
mvn clean package
Post-build Actions
-
Send build artifacts over SSH
SSH Publishers
SSH Server
Name远程服务器ip
Source files
target/*.jar
Remove prefix
target/
Remote directory
/opt/web/
Exec command
cd /opt/web/
jar_name=$(ls |grep .jar)
ps -ef | grep $jar_name | grep -v grep | awk '{print $2}' | xargs kill -9
java -jar $jar_name >/dev/null &
部署脚本:
打包:
clean package -Dmaven.test.skip=true
去掉springboot中的jar包:
cd /var/lib/jenkins/workspace/www.a.com-java-home/target/
jar xf home-1.0.jar
rm -rf BOOT-INF/lib
rm -rf home-1.0.jar
jar cfM home-1.0.jar BOOT-INF org META-INF
rm -rf BOOT-INF org META-INF
备份下服务器上的jar(为了快速恢复。使用软链接更好,不用复制。):
cd /opt/web/
[ -f home-1.0.jar ] && mv -f home-1.0.jar home-1.0.bak
把不含依赖的jar上传到服务器,合并依赖jar包,杀死进程,启动应用,查看日志输出:
cd /opt/web/
jar uf0 home-1.0.jar BOOT-INF
ps -ef | grep home-1.0.jar | grep -v grep | awk '{print $2}' | xargs kill -9
echo "search home-1.0.jar again..."
ps -ef | grep home-1.0.jar
sleep 0.5
nohup java -jar home-1.0.jar &
sleep 0.5
echo "+++++++++++++starting+++++++++++++++++++"
tail -f nohup.out & sleep 15
echo " ===============successed====================="