GitLab CI 踩坑
工具对比
自动部署的工具也比较多,自己尝试了几种
- codepipeline 阿里云的服务,比较靠谱。但是缺点是每次部署都会在 oss 上生成一个包,也没有自动清理之类的功能,时间一长,文件就比较多了。oss 存储也是按使用量收费的,清理起来比较麻烦,不清理钱包受不了,用了两天放弃了
- Travis-CI 大名鼎鼎,但是只能配合 github 使用,我们使用的是自己搭建的 gitlab ,只能放弃
- GitLab CI 都是 Gitlab 的工具,一家人配合起来应该效果不错,决定试试
开始动手
-
首先是安装 gitlab runner 没什么好说的,按文档来就行了 中文文档
需要注意的是安装完成后注册的时候,选择 Runner executor 的时候,根据自己需要选择,我没有使用 docker 就选择了 shell
如果 gitlab 中项目比较多的话,建议注册的时候使用指定项目的 token 注册,而不是使用管理员账号中的 token。使用管理员提供的 token 注册的是共享 runner,会导致每个项目都会触发部署任务。 token 可以在指定项目的 settings/ci_cd 页面中的 runner 选项找到。在 settings/ci_cd 页面的 runner 中看到 runner 即为注册成功。
这里我有一个大坑,push 之后代码 Pipelines 卡住了,提示没有可以使用的 runner 。如果出现这种情况,需要在 注册成功的 runner 中编辑一下设置,运行未标记的作业需要勾选
- 添加 .gitlab-ci.yml
stages:
- install_deps
- deploy_test
- deploy_production
variables:
WORK_DIR: 项目目录
cache:
paths:
- vendor/
- node_modules/
# 安装依赖
install_deps:
stage: install_deps
only:
- dev
script:
- composer install --no-ansi
# 部署测试服务器
deploy_test:
stage: deploy_test
only:
- dev
script:
- php artisan cache:clear
- rsync -rapq --exclude .git/ ./ ${WORK_DIR}
-
文件移动到项目目录之后,运行的是 laravel 项目,storage 目录会存在权限问题
- 删除 gitlab runner 服务
gitlab-runner uninstall
- 使用服务器用户重新安装
gitlab-runner install --user=www-data
- 重启服务
sudo service gitlab-runner restart
- 删除 gitlab runner 服务
本作品采用《CC 协议》,转载必须注明作者和本文链接
https://github.com/alicfeng/gogs-drone-doc...