手撸GitLab CI(阉割版)

释放双眼,带上耳机,听听看~!

  上一集我们说到如何从零开始搭建一个Vue-cli 3.0的项目,而这一集我们将说到如何手写一份阉割版的CI脚本。

  首先说一下GitLab部署到服务器的操作,一般有两种,一种是规范化分离的,包含runner+ci+gitlab pages。另外一种是高自由度的,只包含runner+ci

  这两种部署方式的区别在于,前者的ci只包含关于打包和文件移动的操作(阉割版),至于部署到哪个服务器,具体怎么部署,一般来说是由项目组的管理员去配置的,开发者只需要把打包后的文件丢到一个名为public的目录,gitlab pages就会将该目录下的所有文件部署到管理员配置好的服务器中,开发者没有配置服务器的权限。而后者是集打包、文件移动、配置docker镜像和服务器域名于一体的,开发者拥有所有权限。

  一般来说,比较规范的项目开发都会用前者,做到各端职责分离。

  总结一下gitlab关于规范化分离部署的操作流程:开发者提交代码后,runner检索项目根目录下名为.gitlab-ci.yml的文件,并执行文件中的脚本,脚本内容包括项目的运行,打包,缓存打包文件,转移文件到public目录以供gitlab pages使用。而gitlab pages会到public目录中拿到所有打包文件并传到服务器中。

  好,现在就来看一下我写的一份ci脚本,首先说一下,ci的代码风格类似于python这种,纯靠缩进来区分层级关系的,所以书写时,缩进是严格的

  手撸GitLab CI(阉割版)

  下面是代码注释版版的:

  

build site: //自己随便命名的
  image: node:latest //node镜像为最新版的,最好指定版本号
  stage: build //当前stage阶段为build
  script: //build阶段运行的脚本
    - npm install --progress=false --no-optional //根据package.json来安装依赖 progress设为false是为了不打印安装的具体进度,no optional是为了跳过npm推荐的但不是编译必须的,也没有写在package.json里一些依赖,比如说查看源代码等
    - npm run build //打包
  artifacts: //工件,可以缓存在gitlab的流水线记录中,供直接下载
    expire_in: 3 days //工件缓存的有效时间
    paths: //路径
      - dist //工件指向的目录,这里指整个dist目录

cache: //缓存
  paths: //路径
    - node_modules/ //缓存node_mudules将大大提高ci运行的速度

create pages: //随便起的名字
  stage: deploy //当前阶段为deploy
  script: //deploy阶段运行的命令
    - rm -rf public //linux命令,递归无询问删除public目录下所有文件
    - mkdir public //新建文件夹public
    - mv dist/* public //将dist目录下的所有文件都移动到public目录下
  artifacts: //工件缓存
    expire_in: 3 days //时效为3天
    paths: //路径
      - public //缓存整个public目录的文件
  only: 
    - dev //ceate pages下的所有操作只在dev分支上进行

  下载一个工件下来看看:

  手撸GitLab CI(阉割版)

  可以发现我所言非虚。

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

Spring Boot 定义系统启动任务,你会几种方式?

2020-11-9 4:23:27

随笔日记

4月15日国内四大证券报纸、重要财经媒体头版头条内容精华摘要

2020-11-9 4:23:29

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索