介绍:基于 Gogs 代码管理系统下的 Jenkins 自动化部署方案,实现流程是本地开发后提交代码可以直接触发 Jenkins 的构建来完成部署。
前期准备:
安装 Jenkins 需要先安装 JDK、Git、Maven
这里有以上三个软件的安装教程
JDK 安装教程:https://www.jianshu.com/p/70af364701d7
Git 安装教程:https://www.jianshu.com/p/1e340f810aaf
Maven 安装教程:https://www.jianshu.com/p/41703cccac1d
1、下载 Jenkins 安装包
Jenkins 下载地址:https://www.jenkins.io/download/
打开如下图所示
下载以后是一个 .war 包
2、安装运行 Jenkins
把下载的 .war 包放在自己需要的位置(本人放在了:/usr/local/jenkins/)文件夹下
使用命令运行(运行方式喜欢的话,可以自己改哦,反正项目运行起来就好了)
# jenkins.war 是自己下的名字
nohup java -jar jenkins.war &
运行之后就可以使用 IP + 端口号进行安装
默认的就是 127.0.0.1:8080 (公网IP自己更换)
3、安装之后使用用户名和密码进行登录,登录成功以后需要进行 JDK、Git、Maven的配置
配置的地方在 系统管理→全局工具配置
Maven 的配置(红色地方为自己服务器的 Maven 安装地址)
JDK 的配置(红色地方为自己服务器的 JDK 安装地址)
Git 的配置(红色地方为自己服务器的 Git 安装地址)
配置完成之后点击下方的应用、保存即可。
由于是基于 Gogs 版本控制的,所以需要一个插件
4、安装插件 (Generic Webhook Trigger)
安装的地方在 系统管理→插件管理 然后搜索安装即可。
5、安装插件 (Maven Integration)
和上个步骤一样。此插件是用来构建 maven 项目的。
6、在 Jenkins 新建一个任务。
在上面两个地方要添加自己的Gogs的账号,然后 URL 输入自己在 Gogs 上的 Git 地址
构建环境这里我选择了 (Delete workspace before build starts)每次开始构建都删除之前的工作空间
Build 这里我输入了命令
构建完成后需要做的就是正确的启动项目了
# 将构建后的jar包复制到指定位置一份
cp /root/.jenkins/workspace/test01/target/test01-1.0.jar /www/wwwroot/testJenkins/test01.jar
# 进入指定目录
cd /www/wwwroot/testJenkins/
# 执行脚本命令
sh restart.sh
restart.sh 脚本命令也写出来了
# 重启应用
#!/bin/bash
APP_NAME=test01.jar
echo "Restart application"
echo "Find PID"
pid=`ps -ef | grep $APP_NAME | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "kill -9 ${pid}"
kill -9 $pid
fi
BUILD_ID=dontKillMe
echo "Start up"
nohup java -jar $APP_NAME >test01.log 2>&1 &
echo "Start success"
此时项目是可以在 jenkins 后台自动构建了,但是我们需要在 Git 提交的时候,让 Jenkins 自动构建部署则需要用到(Generic Webhook Trigger)这个插件了。
7、Gogs 配置
先在 Gogs 管理那里配置相应的内容。
Gogs → 仓库设置 → 管理Web钩子
推送的地址为:
# testJenkins 为自己设置的token,这里要记清楚了,其他的都是固定格式的了。
http://IP:端口号/generic-webhook-trigger/invoke?token=testJenkins
8、Generic Webhook Trigger 插件配置
需要在 Jenkins 的任务配置处修改对应配置
选择 触发远程构建 这里填写的 token 就是在上个步骤里面填写的 token
下方选择 (Generic Webhook Trigger)
配置到这里,应用、保存,即可通过每次的 Git 的 push 进行触发自动更新部署项目。