gitlab 使用runner

230 阅读3分钟

什么是runner

runner是基于git的自动部署工具,可以监听到git的操作,然后配置对应的部署命令
本文是基于gitlab的

新建runner步骤

  1. 现在gitlab上找到setting -> CI/CD image.png
  2. 点击进入配置说明,要选择你自己的部署服务器(或者访问服务器)类型,然后到你的服务器命令行逐行运行提示代码(就是下载runner插件,然后配置拉取代码的地址。傻瓜式操作,不用修改
    注意报错信息,有可能是已经安装处理过了,只需要最后一步就行 image.png image.png
  3. 做完上述步骤之后,返回gitlab刷新就看到一个新的runner image.png
  4. 编写对应的yaml文件,默认是项目下.gitlab-ci.yml。 可以看gitlab中yml的定义
default:
  before_script:
    - echo "start deploy"
    - echo $CI_COMMIT_REF_NAME

# 阶段
stages:
  - install
  - build
  - deploy

cache:
  paths:
    - node_modules/

# 安装依赖
start-install:
  stage: install
  # 此处的tags必须填入之前注册时自定的tag
  tags:
    - install
  # 规定仅在dev、test、prod分支提交时才触发此阶段
  only:
    - dev
    - test
    - prod
  # # 规定仅在package.json提交时才触发此阶段
  # changes:
  #   - package.json
  # 执行脚本
  script:
    - echo "start install"
    - rm -rf ./node_modules
    - npm install

# 打包dev分支
buildDev:
  stage: build
  tags:
    - buildDev
  # 规定仅在dev分支提交时才触发此阶段
  only:
    - dev
  script:
    - echo "start dev build"
    - rm -rf ./dist
    - npm run build:dev
  # 将此阶段产物传递至下一阶段
  artifacts:
    paths:
      - dist/

# 打包test分支
buildTest:
  stage: build
  tags:
    - buildTest
  # 规定仅在test分支提交时才触发此阶段
  only:
    - test
  script:
    - echo "start test build"
    - rm -rf ./dist
    - npm run build:test
  # 将此阶段产物传递至下一阶段
  artifacts:
    paths:
      - dist/

# 打包prod分支
buildProd:
  stage: build
  tags:
    - buildProd
  # 规定仅在prod分支提交时才触发此阶段
  only:
    - prod
  script:
    - echo "start prod build"
    - rm -rf ./dist
    - npm run build:prod
  # 将此阶段产物传递至下一阶段
  artifacts:
    paths:
      - dist/

# 部署dev项目
deployDev:
  stage: deploy
  tags:
    - deployDev
  only:
    # 规定仅在dev分支提交时才触发此阶段
    - dev
  script:
    - echo "start deploy Dev"
    # 删除远端服务器的dist目录下的所有文件
    - ssh -p 43322 root@18.210.218.68 'rm -rf /home/web/appointment_h5/dist'
    # 把当前dist目录下的所有文件传输到远端服务器的dist目录
    - scp -r -P 43322 ./dist root@18.210.218.68:/home/web/appointment_h5
    - echo "deploy Dev successfully"

# 部署test项目
deployTest:
  stage: deploy
  tags:
    - deployTest
  only:
    # 规定仅在test分支提交时才触发此阶段
    - test
  script:
    - echo "start deploy Test"
    # 删除远端服务器的dist目录下的所有文件
    - ssh -p 43322 root@18.210.218.68 'rm -rf /home/web/appointment_h5/dist'
    # 把当前dist目录下的所有文件传输到远端服务器的dist目录
    - scp -r -P 43322 ./dist root@18.210.218.68:/home/web/appointment_h5
    - echo "deploy Test successfully"

# 部署prod项目
deployProd:
  stage: deploy
  tags:
    - deployProd
  only:
    # 规定仅在prod分支提交时才触发此阶段
    - prod
  script:
    - echo "start deploy Prod"
    - pwd
    # 删除远端服务器的dist目录下的所有文件
    - ssh -p 43322 root@18.210.218.68 'rm -rf /home/web/appointment_h5/prod'
    # 把当前dist目录下的所有文件传输到远端服务器的dist目录
    - scp -r -P 43322 ./dist/* root@18.210.218.68:/home/web/appointment_h5/prod
    - echo "deploy Prod successfully"

触发构建

  • 推送push
  • 打标签
  • 新建规则分支
    以上三个随便一个符合,都可以触发,触发之后就可以在gitlab下的Build菜单的Pipelines中看到对应的CICD
    有问题就看具体输出,点击statge
    正常情况下先保证本地是ok的,可以build成功的 image.png