流水线 自动化部署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  阅读(325)  评论(0)    收藏  举报