前言
前端部署的方式有很多种,可以使用docker镜像,可以使用阿里云css部署,也可以使用apex部署,以及使用其他华为云的obs部署;我使用的是docker镜像;
先说一下部署流程
在无容器的情况下:我们会生成dist文件夹之后,把它压缩,然后通过scp发布到远程服务器上;
在有容器的情况下:我们会生成dist文件,通过dockerfile生成本地镜像,然后推送到远程仓库上;
使用容器的优点就在于: 我在一个服务器上部署前端项目之后,假设我另一个服务器也想要部署这个前端项目,我执行docker pull 镜像就可;
顺便补充一下我自己对镜像的理解【防止日后忘记haha】
在服务器上容器就相当于虚拟机;可以有多个虚拟机;
多个容器可以依赖一个镜像启动;
runner是gitlab负责cicd的服务;
我们想要在gitlab上跑cicd就需要注册runner;需要在服务器上安装runner服务,注册到gitlab仓库上【设置- CI/CD下】,runner有很多模式shell、docker等;
gitlab.yml编写
使用docker模式的时候,一个stage生成一个容器【依赖于gitlab.yml的image定义的镜像 启动】,运行之后就被删掉;这里我们使用的docker in docker 模式【容器里面使用了docker命令,默认是不可以使用docker命令的】;
先来讲讲gitlab.yml的常用参数吧
参考视频
参数 | 含义 |
---|---|
image | 指定基础运行环境的docker镜像 |
stages | YML中的数组写法 stages定义在YML文件的最外层,它的值是一个数组,用于定义一个pipeline不同的流程节点 |
cache | 重复运行pipeline的时候不会重复安装 1在不同pipeline之间重用资源 2在同一pipeline的不同Job之间重用资源 |
variables | 定义全局变量 |
stage | 是一个字符串,且是stages数组的一个子项,表示的是当前的pipeline节点。 |
script | 当前pipeline节点运行的shell脚本(以项目根目录为上下文执行) |
tags | 当前Job的标记 这个关键字是很重要,因为gitlab的runner会通过tags去判断能否执行当前这个Job,我们在gitlab的面板中能看到当前激活的runner的信息Gitlab项目首页=> setting => CI/CD => Runners. 如果一个Job没有tag或者tag不是sss,那么即使这个Runner是激活且空闲的,也不会去执行! |
only | 指定当前Job仅仅只在某些tag或者branch上触发 |
refs | 基于分支名称或者pipeline类型运行 |
paths | 哪个文件或目录 |
policy | 更改缓存操作 开始时下载缓存pull 结束时上传更改push,默认是pull-push |
artifacts | 将生成的资源作 |