美文网首页
gitlab-ci 前端项目自动部署

gitlab-ci 前端项目自动部署

作者: 王乐城愚人云端 | 来源:发表于2018-03-08 18:01 被阅读0次

    通过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

    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
    

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

    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 前端项目自动部署

          本文链接:https://www.haomeiwen.com/subject/bvwyfftx.html