GitLab-Runner的使用
模拟一个正式的SpringBoot项目开发,使用Gitlab Runner进行流水线编译打包部署。
1. 远端导入项目
Gitlab提供一些正式的SpringBoot演示项目帮助我们了解Gitlab部署,比如其中一个项目地址为: https://jihulab.com/premium-plan/features/07Release/use-gitlab-runner-as-cd-agent ,使用从外面导入代码功能在Gitlab中生成项目,点击新建项目: 选择导入项目板块:
选择仓库(URL),输入仓库地址:
点击新建项目按钮后,项目开始进行导入:
导入完成后,在Gitlab上面的项目就生成好了:
2. IDEA拉取项目代码
使用jack账号登录Gitlab, 创建新分支feature1: 然后打开IDEA,选择刚才导入Gitlab的项目,点击clone下载按钮:
IDEA拉取完毕代码:
在IDEA中切换到feature1分支:
模拟在feature1上修改了代码:
推送到远程feature1分支上:
2. 流水线查看
点击CI/CD->作业菜单,发现流水线已经触发执行了: 初次执行需要进行下载jar包等操作,初次比较慢,点击进去可以看到整个流水线一共两个步骤:build->deploy
2.1 gitlab-ci.yml文件
可以看到deploy并没有执行,整个流水线控制是通过项目代码根路径下面的.gitlab-ci.yml文件控制的: 当然部署时使用的main分支,使用tudou账号登录,进行修改流水线控制文件:
可以看到整个流程分为build、deploy, build使用maven命令执行,打包成jar文件,deploy会在标签为production时触发,将文件复制到/var/www/html下面执行java.sh脚本,最后启动定时任务,定时任务配置在cronfile文件中。
使用root账号登录gitlab,点击管理员,在管理中心点击CI/CD-Runner菜单, 点击编辑Runner,配置Tags为production,点击保存:
这样就和我们项目中的gitlab-ci.yml文件tags对应上了就会被自动触发。
2.2 处理流水线问题
使用tudou账号登录gitlab,查看流水线,发现deploy步骤已经自动执行了,只不过报错了: 可以看到报错原因是没有这个文件夹导致的:
在hadoop103服务器上面,创建文件夹:
[jack@hadoop103 home]$ sudo mkdir -p /var/www/html/
[jack@hadoop103 www]$ sudo chown gitlab-runner:gitlab-runner /var/www/html/
gitlab-runner在服务器上面是使用gitlab-runner用户操作文件,避免权限不足,将/var/www/html/属主设置成了gitlab-runner用户。
点击流程编辑器菜单,修改流程文件,点击Commit changes按钮: 提交后,可以看到流水线马上又开始执行了,此时master分支开始编译和部署,需要注意的是此时master分支上并没有合并feature1的代码,端口默认没修改的话是8080:
流水线执行完毕后,发现访问hadoop103:8080打不开:
查看日志,日志是生成在/var/www/html下面的demo.log中,发现文件大小是0kb:
这种情况一般是java环境变量在java.sh脚本中失效,解决办法就是加入source /ect/profile即可:
提交的时候IDEA可能会弹出警告,再次点击Commit and push即可完成push。
在IDEA中,可以使用Gitlab插件新建一个MR,点击Git->Gitlab->View Merge Requests:
进入View Merge Requests面板后,点击+
创建MR: 填写完MR后,点击Create Merge Request按钮:
跳转到等待合并的面板:
使用tudou登录gitlab,发现当前有一个合并请求等待处理:
合并后,可以看到流水线又双叒叕进行编译打包部署了:
打开浏览器访问http://hadoop103:7080, 说明程序已经部署成功。