前端项目基于GitLab-CI的持续集成/持续部署(CI/CD)

栏目: 服务器 · 发布时间: 6年前

内容简介:个人理解,说白了就是把代码测试、打包、发布等工作交给一些工具来自动完成。这样可以提高效率,减少失误,开发人员只需要关心开发和提交代码到

个人理解,说白了就是把代码测试、打包、发布等工作交给一些 工具 来自动完成。这样可以提高效率,减少失误,开发人员只需要关心开发和提交代码到 git 就可以了。

怎么做?

  • 方式一: 使用 web hooks ,这种方式的原理就是在 gitlab 项目的 Setting-Integrations 设置中增加一个请求 url 和一个 secret ,如下图

    前端项目基于GitLab-CI的持续集成/持续部署(CI/CD)
    当触发钩子条件时,(一般是 git push 之后), gitlab 会主动把 secret 带在请求头中去请求前面的 url ,后端服务接受到这个请求后并验证 secret 后,就可以为所欲为啦。这种方式不需要配置持续集成工具,但是需要自己单独专门写一个后端服务。由于今天主要使用下面的方式二,所以方式一的具体做法就不展开了,可以参考 Gitlab Webhooks自动化部署实战
  • 方式二: 使用工具如 gitlab-CI ,这种方式的原理就是为项目在自己的服务器安装上注册 gitlab-runner ,注册会有一个 token ,服务器上运行 gitlab-runner 后, runner 会轮询的发送带 tokenhttp 请求给 gitlab ,如果 gitlab 有任务了,(一般是 git push ),那么会把任务信息返回给 runner ,然后 runner 就开始调用注册时选的 Executor (我是用的 shell )来执行项目根目录下的配置文件 .gitlab-ci.yml ,执行后把结果反馈给 gitlab 。详细的工作原理请移步 当谈到 GitLab CI 的时候,我们该聊些什么 。对 GitLab-CI,GitLab-Runner 等概念有点混乱的同学,可以看看这篇文章。下面说说我个人的使用步骤:

    1. 在开发环境(如自己的windows上)开发前端项目(该项目我命名为 ci-test ),并推送到 gitlab 远程仓库中。这里是用 vue-cli 3.0 生成的 vue 项目,我个人习惯增加如下自定义配置

      //vue.config.js
      module.exports = {
          outputDir: 'app-page',          //自定义打包后的目录名,注意在.gitnore文件中也要忽略掉该目录
          baseUrl: './'                   //打包时使用相对路径
      }
      复制代码
    2. 服务器上配置 nginx ,并配置默认访问目录,例如我自己的配置是 /app 文件夹。具体做法请自行搜索。

    3. 安装 nodegit ,并在 /app 目录下克隆 gitlab 仓库中的代码,这时候服务器上就存在 /app/ci-test 目录了

    4. 服务器上安装 gitlab-runner ,具体方法请参考官方文档

    5. 服务器上注册一个 Runner ,具体方法参考官方文档,注意这里要填的 url(一般是 https://gitlab.com)token ,都在 gitlab 项目下的 setting-CD/CD-Runners-Specific Runners 里面找(如下图),

      前端项目基于GitLab-CI的持续集成/持续部署(CI/CD)
      而且要填的 tags 也是有用的,后面的 .gitlab-ci.yml 里面的 tag 选项必须是这里的 tags 里面的子项,最后 executor 这里我是填的 shell
    6. 注册后修改 gitlab-runner 的权限

      sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner
      sudo chmod -R 777 /home/gitlab-runner
      复制代码
    7. 开启 gitlab-runner 服务

      gitlab-runner run
      复制代码

      成功的话,会有一个绿点,如下图

      前端项目基于GitLab-CI的持续集成/持续部署(CI/CD)
    8. vue 项目根目录下配置 .gitlab-ci.yml 文件,具体配置选项请看文档。我的配置如下:

      #当Runner通过轮询检测到gitlab上有任务时,就会执行这个文件
          #个人不是很熟yml的语法以及详细配置,都是找猫画虎的,求各位大神提出优化意见
      
          stages:
              - update
              - test
              - build
      
          #更新代码并且安装依赖
          update:     
              stage: update
              script:
                  - cd /app/ci-test       #先进入到项目目录下,下面同理
                  - git pull
                  - sudo npm install
              tags:                       #这里的tags一定要属于注册时填的tags中,下面同理
                  - update
          
          #执行单元测试
          test:
              stage: test
              script:
                  - cd /app/ci-test
                  - npm run test:unit
              tags:
                  - unitTest
          
          #打包
          build:
              stage: build
              script:
                  - cd /app/ci-test
                  - npm run build
              tags: 
                  - build
      
      复制代码
    9. .gitlab-ci.yml 文件推送到 gitlab 仓库中,在 gitlab 项目页面中打开 CI/CD-Pipelines ,即可看到效果,如下图

      前端项目基于GitLab-CI的持续集成/持续部署(CI/CD)
      status 那一列如果是绿色的 passed 则说明大功告成,以后每次只需要提交代码即可,再也不用手动测试部署了。这个时候去浏览器中打开相应的地址,就可以看到部署成功。我的是这样的:
      前端项目基于GitLab-CI的持续集成/持续部署(CI/CD)
      如果是红色的 failed 则说明执行某一个命令的时候出错了,这时候就会收到一封邮件告知失败原因。

以上所述就是小编给大家介绍的《前端项目基于GitLab-CI的持续集成/持续部署(CI/CD)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

删除

删除

[英] 维克托•迈尔-舍恩伯格(Viktor Mayer-Schönberger)著 / 袁杰 译 / 浙江人民出版社 / 2013-1 / 49.90元

《删除》讲述了遗忘的美德,为读者展现了大数据时代的取舍之道。 《删除》从大数据时代信息取舍的目的和方法分别诠释了“被遗忘的权利”。维克托首先回溯了人类追寻记忆的过程,之后提出数字技术与全球网络正在瓦解我们天生的遗忘能力。对此,他考察了促进遗忘终止4大驱动力——数字化,廉价的存储器,易于提取,全球性访问。之后,他提出了当前数字化记忆的两大威胁——信息权力与时间,并给出了应对威胁的6大对策——数......一起来看看 《删除》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具