gitlab-ci 前端项目自动部署

通过gitlab/gitlab-ci/gitlab-runner实现前端项目自动部署、发布

一、简单描述作用

开发者A在自己的电脑上写代码,提交代码到gitlab服务器上,gitlab服务器会根据项目根目录下的.gitlab-ci.yml,通知runner服务器执行相应命令,runner服务器克隆代码,按build、test、deploy等流程自动部署。

二、在服务端安装runner

1.安装runner命令

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
yum install gitlab-ci-multi-runner

2.在你的gitlab中打开相应项目,查看并复制url和token

路径为:项目>Setting>CI/CD>Runners settings

gitlab-ci 前端项目自动部署_第1张图片
undefined

3.用上面获得的url和token在runner服务器中注册runner

命令

gitlab-ci-multi-runner register

要求输入

  • 你的gitlab服务器地址:url
  • 你的项目token: token
  • 给当前runner定义标签,区分多个runner的名字,可指定标签的runner执行任务:tag
  • Whether to run untagged builds [true/false]: // 如果没写tag的也构建吗?
    [false]: true // 如果你不想写tag,就设置true。如果你这里设置了false, .gitlab-ci.yml 配置里又没写上tags:,那么就会一直pendding
  • executor 执行命令器,一般写shell 或docker之类的
  1. 注册runner,只是让runner存在了,还要让他运行起来,执行以下命令
gitlab-ci-multi-runner start
  1. 如果你权限问题,比如执行某个命令,脚本需要root权限,可以赋予gitlab-runner用户sudo执行权限
    在root权限下执行命令
visudo

最底部添加一行

gitlab-runner ALL=(ALL) NOPASSWD: ALL

之后你在gitlab-ci.yml中写脚本,如果涉及root权限,则可以使用sudo执行,比如

sudo ./start.sh
  1. 删除runner
gitlab-ci-multi-runner unregister --token xxxx --url xxxx

四、编辑.gitlab-ci.yml

在项目的根目录下创建并编辑.gitlab-ci.yml

stages: # 要执行的步骤
  - build
  - deploy
build: # 步骤 build
    stage: build
    script:
      - npm install # 要执行的命令
    only:
      - master # 当提交到master分支或tags时才触发此build命令
      - tags
    tags:
      - shell # 由shell执行
deploy:
    stage: deploy
    script:
      - npm build
      - npm start
    only:
      - master
      - tags
    tags:
      - shell

五、提交代码即可自动部署

gitlab-ci 前端项目自动部署_第2张图片
undefined

备注:

  1. 你可以在 项目>CI/CD>Pipelines中看到每次提交的自动部署工作执行的情况
  2. 如果你有build、test、deploy三个步骤,这三个步骤是先后执行,但每次执行都会git checkout . 被重置回去,所以deploy时不能依赖build时已经执行完毕的工作,依然要做一遍build的工作。
  3. 如果一直pendding,那么说明肯定有地方配置出错了,无法正常执行构建任务。failed是指能构建,但构建过程中出错,构建失败。pendding则是配置出错,或配置没错,但配置没有触发执行任务,没有执行构建任务。
    例如:Whether to run untagged builds [true/false]: 这里的true/false问题。例如:gitlab服务器地址写错等。

你可能感兴趣的:(gitlab-ci 前端项目自动部署)