GitLab CI 踩坑

工具对比

自动部署的工具也比较多,自己尝试了几种

  • codepipeline 阿里云的服务,比较靠谱。但是缺点是每次部署都会在 oss 上生成一个包,也没有自动清理之类的功能,时间一长,文件就比较多了。oss 存储也是按使用量收费的,清理起来比较麻烦,不清理钱包受不了,用了两天放弃了
  • Travis-CI 大名鼎鼎,但是只能配合 github 使用,我们使用的是自己搭建的 gitlab ,只能放弃
  • GitLab CI 都是 Gitlab 的工具,一家人配合起来应该效果不错,决定试试

开始动手

  1. 首先是安装 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 中编辑一下设置,运行未标记的作业需要勾选

图片

  1. 添加 .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}
  1. 文件移动到项目目录之后,运行的是 laravel 项目,storage 目录会存在权限问题

    • 删除 gitlab runner 服务 gitlab-runner uninstall
    • 使用服务器用户重新安装 gitlab-runner install --user=www-data
    • 重启服务 sudo service gitlab-runner restart
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!