流水线 自动化部署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 查看访问密码
可以创建一个管理员用户 也可以继续使用 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(不处理垃圾邮件)