流水线 自动化部署jenkins maven 之github

本文的开头先说一下环境的准备:

运行环境:Centos 7

maven 安装  http://maven.apache.org/

java jdk 安装 推荐使用open jdk  http://openjdk.java.net/

 以上的安装和运行开发 需要有开发经验的老同志 可以无阻力的玩,如果是新手,我建议先吧上边搞通 后 在往下来

我们 打开  jenkins 官网  https://www.jenkins.io/   如果所在地区无法打开 请自行解决,懂得都懂。

 

 

如果上述 因为网络问题无法安装,则可以通过懂得都懂的方式自行解决

systemctl start jenkins 启动

临时关闭防火墙 systemctl stop firewalld.service(生产环境不建议使用)

上述安装完成后 默认的web服务端口为 8080端口

192.168.0.100:8080

vi /var/jenkins_home/secrets/initialAdminPassword 查看访问密码

Unlock Jenkins page

Copying initial admin password

 

可以创建一个管理员用户  也可以继续使用 admin账户 我这里为了验证流通性 所以直接使用默认的账户了

登录之后 

把需要的github maven 插件都给装上,这里  如果是新手  建议把所有插件都装上,防止后续配置过程中 出现功能缺少的问题。

 

 

 

找到全局凭据  添加凭据

我这里使用的github 所以需要你所在的github仓库来一个  sshkey 来支持

ssh-keygen -t rsa -C "your_email@example.com“ 三次回车键 会显示文件所在的路径

 

 

id和描述 随便填写  这里为了区分

username 你的  github 邮箱

输入 私钥

Passphrase 当前登录用户的密码 这里用来确认的  还有就是  保存好 你生成的sshkey 公钥和私钥

记得在你的 github 里也设置下 github端  公钥 本地私钥  具体github公钥添加方式 我这里就不多说了  自行 google 解决哈。

 

Manage jenkins >Global Tool Configuration

里边有  mvn 和 jdk 的目录配置    如果加到过环境变量可以执行的可以忽略

尽情的来吐槽吧 宝贝们

 

上图的步骤 非常重要 后续我们会用到这个凭据的。

接下来  我们开启  建立模式

 

dashboard 新建item

 

构建一个maven版本项目  点击  确认

打开编辑页面 

描述信息 相当于备注 自行填写

图中的 gitee链接 如果没有 可以忽略

源码管理:

Repository URL:github ssh git 链接

Credentials:选择凭据  我们在开始的时候  添加的全局凭据  记得在 github远程仓库里也设置好哦。

Branches to build: 构建分支  可选择的有  master develop main 现在 github的 主仓库为main 所以  我这里设置的是 */main 

 

 

上图为构建触发器:

GitHub hook trigger for GITScm polling 触发 git scm 

Poll SCM: H/2 * * * *(每两分钟 轮询一次 具体语法可以通过其他途径获知)

上述的两个选项 最终的运行是  定时去轮询 查看 当前 本地的代码 scm和 远程指定分支的scm一致不一致 如果一直 则不构建  继续下一下执行  以此类推。

构建环境 

构建前 删除工作目录 这里可以不用勾选  我是为了看文件变动才选择的。

 

Pre Steps  此处忽略

 

上图为  构建  文件和参数  跳过 test

 

这里先 点击保存  构建一下 看看情况。

先说一下 各种错误的情况吧

拉取 失败 检查 git远程仓库和 本地的配置 还有 凭据 建议使用 suername sshkey private 

另外一种错误是权限问题 给  文件夹加权限

还有一种问题是 mvn配置有问题 记得好好检查一下。还有 构建参数,建议在开发时的电脑上先跑一边 确保clean install package 等命令执行后都没有问题

切记  mvn springboot 项目  记得设置好包下的启动类 不然会提示 没有主体清单 导致跑不起来,很多问题再dev没问题,生产环境 error 警告一大堆.

http://192.168.0.14:8080/job/demomvn/11/console

demomvn 创建的项目名称 11 为构建的次数  cosnole 控制台输出,无论是你的构建成功  还是构建失败 console这里的输出会有很详细的错误信息的,多看多搜索 可以解决的,我这里折腾了  将近  20小时搞定了。构建次数50-60次 。

不要以为到这就结束了啊  还没有呢。

我以为构建成功就ok 了  可惜不是 构架成功  得让项目跑起来呀,是不是。

下面  我们设置 构建成功后 执行的脚本

post steps

Run only if build succeeds   构建成功后 执行

 

 

一定要按照上述格式填写脚本  不然你可能会遇到 构建无法结束 mvn jar 包 无法后台运行等问题

#!/bin/bash
/opt/web/demo/demomvnscript/stop.sh
/opt/web/demo/demomvnscript/replace.sh
echo "Execute shell Finish"
BUILD_ID=dontKillMe nohup /opt/web/demo/demomvnscript/startup.sh &

stop.sh 这里是  结束 进程的

#!/bin/bash
echo "Stop Procedure : demomvn.jar"
pid=$(ps -ef | grep java | grep demomvn.jar | awk '{print $2}')
echo 'old Procedure pid:'$pid
if [ -n "$pid" ]; then
  kill $pid
fi

结束demomvn.jar 这个进程

replace.sh  记得给目标文件夹权限 chmod 777 R dir

#!/bin/bash

 cp /var/lib/jenkins/workspace/hub/target/demomvn.jar /opt/web/demo/api

复制到 执行目录

replace.sh 

java -jar /opt/web/demo/api/demomvn.jar

运行 jar包。

到这里 我们的  构建成功后的脚本就成功了。

结合构建  可以再 构建成功后 自动运行项目

再 github 里  修改 删除  增加  等操作  轮询到代码有变动时  会自动拉取下来 

按照前边 的 构建文件和参数 构建可 执行的 jar 文件  

在构建完成后 执行我们编写好的脚本。

就这样子,自动化部署就完成了  我这里时因为 没有 服务器  所以  在 虚拟机里玩的

轮询  发现代码有变动 构建

也可以 使用 钩子函数 一旦有有变动 立马 触发 拉取代码   构建  然后 执行。

综合上述我们发现。只要部署好,后面的工作就好多了。摆脱了传统的 复制替换文件 手动 开启停止服务等操作。

到这里 就告一段落了,如有错误之处 希望在评论区里指出。

可以私信我 csdn  或者 博客园 或者 邮箱 xiaohe@chnhonker.com(不处理垃圾邮件)

posted @ 2021-06-10 09:35  小河vlog  阅读(287)  评论(0编辑  收藏  举报