安装Jenkins
安装
建议去官网看安装方法,这里顺便给出Ubuntu和CentOS的,我这里没有服务器,接下来的全程都是在Deepin虚拟机搭配钉钉内网穿透进行操作
-
Ubuntu:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt-get update sudo apt-get install jenkins
-
CentOS:
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install epel-release # repository that provides 'daemonize' yum install java-11-openjdk-devel yum install jenkins
初始化
默认端口是8080,在自己电脑上打开浏览器通过ip:8080
即可访问,初次打开需要输入临时密码,按照指定路径复制过来即可
继续之后安装推荐的插件→创建管理员账户→***→初始化成功
上边都是一些简单的傻瓜式操作,安装成功之后只需要再安装一个gitee插件即可满足项目需求,照着下图安装即可
到这里是彻底初始化完成
自定义端口号和运行账户:
因为8080端口号容易被占用,所以这里把端口号改成9999
-
Ubuntu下配置文件是
/etc/default/jenkins
修改
# 修改用户为root是为了防止之后运行命令时缺少权限 JENKINS_USER="root" # 修改端口号防止默认8080端口被占用 HTTP_PORT=9999
-
CentOS则是
/etc/sysconfig/jenkins
,# 修改用户为root是防止之后运行命令缺少权限 JENKINS_USER="root" # 修改端口号防止默认8080端口被占用 JENKINS_PORT="9999"
修改完成后重启服务即可service jenkins stop
配置项目
在Dashboard中选择新建项目,新建项目时选择Freestyle project,项目名随便
General选项卡下边都可以空着
源码管理则需要选择
注意在Additional Behaviours中添加仓库的本地子目录,这个是设置项目拉到服务器上的目标文件夹
注意需要添加Gitee账号,我第一次的时候选择的是Gitee令牌,但是不知道什么原因没办法添加上去,之后就选择了账号密码的方式,ID我填的就是Gitee的用户名,不清楚填其他的可不可以
构建触发器,直接把说明写在图上了
Gitee上的WebHook设置,在仓库的管理选项卡→仓库挂件→WebHooks
构建环境选项卡不用管,空着就好
构建选项卡添加执行shell(Execute Shell),然后自己写自己项目的执行代码即可,下边给出我的执行代码
BUILD_ID=dontKillMe
# ↑↑↑这个是防止命令没有执行完,shell就被终止了
# jar包名字,改成你自己的
jarname='jar包-1.0.0'
# jar包所在目录!!!!不是项目路径!!!!
cd /home/项目的本地子目录/
# 判断jar包本次是否更新,如果更新则重新部署,否则不部署
if_jar_changed=`git diff --name-only HEAD~ HEAD $jarname.jar`
if [ -z "$if_jar_changed" ]; then
echo '本次更新没有重新打包jar,无需部署'
exit 0
fi
echo 'jar包变更记录:' $if_jar_changed
# 尝试获取当前正在运行的服务进程pid
pid=`ps aux | grep $jarname | grep -v grep | awk '{print $2}'`
echo $pid
# 若当前服务正在进行则kill掉
if [ -n "$pid" ]; then
kill $pid
fi
# 执行新的进程
nohup java -jar $jarname.jar >>server.log 2>&1 &
echo $! > server.pid
注意这里我写的并不是太好,只是针对我们的项目写的
只有在本次推送的代码中重新打包生成了jar才会去真正的部署,其他的情况下检测到jar文件没有变动则直接退出
当然这样的弊端就是如果某次删除了jar就会出现部署失败,但我写烦了,懒得改了
到这里就配置完成了,下次再提交代码就会触发自动部署
完全卸载Jenkins(顺便写在这)
# 服务,不建议这么用,我用了,卸了重装之后挺麻烦的
# apt remove jenkins
# 安装包
apt remove --auto-remove jenkins
# 配置和数据
apt purge jenkins
apt purge --auto-remove jenkins
题外话,钉钉内网穿透:Pierced
好用是真的好用,但文档是真的拉,甚至没说怎么运行,这里给出运行的命令
- Windows下:
cd windows_64
ding -config=ding.cfg -subdomain=abcde 8080
- Linux下
cd mac_64
chmod 777 ./ding
./ding -config=./ding.cfg -subdomain=abcde 8080
其中subdomain是子域名,后边跟的是映射到本地的端口号,如例子中就会转发↓↓↓
http://abcde.vaiwan.com → 127.0.0.1:8080