开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情
一、Jenkins是什么
Jenkins是一款开源CI/CD软件,用于自动化各种任务,包括构建、测试和部署软件。
CI/CD是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法它的核心概念是持续集成、持续交付和持续部署。
二、Jenkins安装
我这边使用centos7安装Jenkins,Jdk版本是1.8
- 下载jenkins
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.346.1-1.1.noarch.rpm --no-check-certificate
- 安装jenkins
rpm -ivh jenkins-2.346.1-1.1.noarch.rpm
- 修改jenkins配置
vim /etc/sysconfig/jenkins
修改内容:
JENKINS_USER="root"
JENKINS_PORT="8888" #根据端口实际使用情况修改
然后修改 jenkins启动配置 vim /etc/init.d/jenkins
配置jenkins的jdk(路径根据自己机器的jdk安装情况自行更改)
最后
vim /usr/lib/systemd/system/jenkins.service
修改为与上面一样的端口
Environment="JENKINS_PORT=8989"
重新加载配置文件,记得systemctl daemon-reload一下
如果没有建立jdk的软链接,需要建立一下,不然启动报错:
ln -s /tools/module/jdk1.8.0_321/bin/java /usr/bin/java
- 启动jenkins并加入开机启动
systemctl start jenkins && systemctl enable jenkins
systemctl status jenkins
防火墙和云服务器安全组记得开放!!
- 解锁Jenkins
使用服务器IP:上面的端口进行访问
当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。
密码默认位置:cat /var/lib/jenkins/secrets/initialAdminPassword
解锁完成后,让安装插件,可以现在安装,也可以之后再进行安装。
需要创建第一个管理用户及密码.
补充:jenkins完全卸载
# rpm -e jenkins ## 卸载jenkins服务
# rpm -ql jenkins ## 检查是否卸载成功
# find / -name jenkins | xargs rm -rf ## 彻底删除残留文件
三、Jenkins配置
想要正常使用,需要先进行一些相关配置和插件的安装
- 插件安装: Maven插件: Maven Integration
- 动态部署插件: Deploy to container
系统管理-->全局工具配置
- JDK配置
- GIT配置
- Maven配置
- 添加ssh凭证
因为使用服务器上自己安装的git,原来在服务器上配置git的时候生成了.ssh文件,一般在 /root/.ssh,需要把下面的内容拷贝到 /var/lib/jenkins/.ssh 下面,不然使用git源码管理的时候会报错
四、Jenkins自动构建部署
创建项目
配置项目
只进行配置git源码管理去运行,就相当于把demo克隆到 /var/lib/jenkins/workspace下面打了个包,这是我进行手动构建
当然他还有其他构建方式:
- 使用轮询需要满足2个条件,1是时间到了,2是github源码有发生改变
- 定时则是时间到了就进行构建
轮询&定时表达式:
每隔5分钟构建一次 H/5 * * * *
每两小时构建一次 H H/2 * * *
每天中午下班前定时构建一次 0 12 * * *
每天下午下班前定时构建一次 0 18 * * *
想运行发布还需要做其他配置,此时就来到了构建后阶段,比如,使用shell脚本发布部署:
安装插件 publish over ssh
插件安装完成,去 系统管理 设置服务器相关配置,找到 Publish over ssh ,点击 新增 设置远程服务器配置,然后点击 高级 配置远程服务器密码
有个Test按钮,可以点击一下,如果出现SUCCESS ,然后应用、保存即可。
然后进入工程配置页面
进行如下配置:
-
Name: SSH Sverver的名字列表
-
Source files: jenkins本机上的文件,相对workspace的路径,如上图中表示的是/var/lib/jenkins/workspace/keep-learn/ruoyi-admin下的jar包
-
Remove prefix: 文件复制时要过滤的目录,要不然会创建多层目录
-
Remote directory: 远程机上的目录,此目录是相对于【SSH Server】中的【Remote directory】的,如果不存在将会自动创建,设置为/根目录的话,这里可以用绝对路径
-
Exec command: 远程机器上执行的命令或脚本
1.创建接收jar包的目录 /tools/project/jar
2.创建jar启动脚本ruoyi-admin.sh
#!/bin/bash
source /etc/profile
echo "------start---------"
pid=$(ps -ef | grep -i ruoyi-admin.jar | grep -v "grep" | awk '{print $2}')
echo "获取pid成功"+$pid
if [ -n "$pid" ]; then
kill -9 $pid
echo '解除端口占用'
fi
sleep 2s
echo "启动......"
export BUILD_ID=dontKillMe
nohup /tools/module/jdk1.8.0_321/bin/java -jar /tools/project/jar/ruoyi-admin.jar > /tools/project/ruoyi.log 2>&1&
echo "脚本执行完毕"
sleep 2s
pid=`ps -ef|grep ruoyi-admin.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "部署后的pid进程 :$pid"
echo "启动成功"
else
echo "进程没有启动"
fi
服务启动成功
错误: