Jenkins + Gitlab 配置项目自动发布
一、安装插件
系统管理 --> 插件管理:
安装:Git、Gitlab、Maven Integration、Publish Over SSH、中文插件
记得安装完成后,把最下方的重启复选框勾一下。
Jenkins 会自动重启。
手工重启如下:
在浏览器中输入 www.jenkins-ip/restart (例如http://localhost:8000/restart),点击重启 Jenkins后会自动重启并加载login页面。
二、配置全局工具
系统管理 --> 全局工具配置
配置 Maven 和 JDK,这个不细说了,看图:
我们的项目由于用到了公司的私服Maven仓库,所以必须用我们定制的 setting 文件。
注意:这个文件路径,是前面 Docker 安装 Jenkins 时,启动脚本中有设置过的映射目录,否则是找不到这个文件的。
配置JDK也是,我这边兼容一些老项目,所以用了JDK1.8。
和 Maven 一样,JAVA_HOME 的目录也是 Docker 的映射目录,在启动脚本中有配置过的。
三、系统配置
系统管理 --> 系统配置,页面拉到最后的 Publish over SSH 配置:
SSH Servers 的新增按钮:
填入相应的SSH服务器内容及账户信息,如我们这边是研发组的开发环境服务器,规范指定项目文件都在 /home 目录中,各项目再分项目目录,因此是如此配置。
选中使用密码授权的内容,填入对应账户的密码,这边使用了超管 root 的账号。
四、创建项目
新建任务,选择 maven 项目
配置对应 Gitlab 项目及账号信息,账号记得要点击箭头对应的添加按钮创建一下。
分支对应我们项目中的 dev 分支,开发环境分支。
构建触发器,把 Gitlab 的推送选上,然后点击下面箭头的高级
把最后的 Secret token 生成一下。
注意:上面 Gitlab推送地址,就是红框那行,最后那个 http 开头的地址,还有这个 Secret token 复制下来,后面要用。
Bulid栏输入对应 Maven 的内容:
点击高级按钮,配置项目对应的 setings.xml 文件。
PostSteps 点击 Add post-build step 按钮,选择发送文件到SSH服务器并执行命令:
填写项目相关打包后的文件目录信息及Shell脚本。
第一栏:是 Gitlab 获取到的目录对应其中打包编译好的 jar 文件相对地址。
第二栏:是 jar 文件前面那部分,是要去除的内容,不然会连前面的目录一起发送。
第三栏:是SSH服务器的远程目录,是在前面全局配置是SSH Server 中配置的远程目录之后,再增加子目录。
如:我这边什么都不填,那就是放置在 SSH 配置的远程目录 /home/ 的目录中。
五、Gitlab配置Webhooks:
用配置的Git账号,登录到Gitlab上,找到对应的项目,点击设置 --> Webhooks
把之前复制的那个 推送地址 和 Secret token 都填上,并选择推送事件。
这意味着只要 dev 分支有代码更新,就会让 jenkins 执行发布任务。
当然,你也可以选择分支合并事件来触发,看各项目的源码管理情况。
我们这边 dev 分支是指定专人才能进行代码更新的,负责 dev 环境的发布。
四、发布日志输出
控制台输出远程相关的日志需要打开‘Verbose output in console’。
在 Post Steps 栏 SSH Server 下面的高级按钮,点击展开,选上后保存。
至此,Jenkins 发布项目全部结束,大家可以试一下,对应脚本我放在最后,大家对应自己的项目,进行调整使用吧。
JAR_NAME=admin-x.x-RELEASE echo "查询进程id-->$JAR_NAME.jar" PID=`ps -ef | grep "$JAR_NAME.jar" | grep -v grep | awk '{print $2}'` #echo"得到进程ID: $PID" #echo"结束进程" for id in $PID do kill -9 $id echo "killed $id" done echo"结束进程完成" cd /home #修改文件权限 chmod 755 $JAR_NAME.jar echo"开始启动" BUILD_ID=nohup java -jar admin-x.x-RELEASE.jar --spring.profiles.active=dev >admin-x.x-RELEASE.log 2>&1 &
注:文强哥精品集,祝各位使用愉快!