配置Gitlab pages和Gitlab CI

摘要:
首先,Gitlabpage非常简单,至少比Gitlabpages简单得多。GitlabPages的原理如下:首先,当您创建一个新的Gitlab项目时,您还需要构建一个存储库。Gitlabpages将始终位于该存储库的公共目录中。开发人员提交代码后,runner将检索名为的文件。gitlab-ci.yml,并执行文件中的脚本。脚本内容包括项目运行、打包、缓存和打包文件,以及将文件传输到公共目录供gitlabpages使用。而gitlabpages将静态文件解析为公共目录中的页面。

  首先,Gitlab pages是很简单的,至少比起github pages要简单很多。

  Gitlab Pages的原理这是样的:首先,当你新建一个Gitlab项目的时候,你同时也建了一个存储库。

  只要你的工程目录的根目录下有.gitlab-ci.yml文件,注意必须严格起这个名字。gitlab runner就会执行这个脚本文件。

  脚本的最终目的很简单:把静态文件放入名为public目录下的文件夹内。Gitlab pages会一直去这个存储库的public目录找。注意:这个public是指存储库的public,与项目结构无关。换言之,这个public目录不可见。

  也就是说:当你在项目的根目录下添加了.gitlab-ci.yml,且在脚本中将静态文件正确地放入了public文件夹,gitlab page就会自动打开并部署,部署的域名将会默认分配。

  当然,如果你不想使用默认的配置,而是想部署到特定的域名和服务器,则需要在yml文件中进行一些docker的配置。

  开发者提交代码后,runner检索项目根目录下名为.gitlab-ci.yml的文件,并执行文件中的脚本,脚本内容包括项目的运行,打包,缓存打包文件,转移文件到public目录以供gitlab pages使用。而gitlab pages会到public目录中解析静态文件成页面。

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

  配置Gitlab pages和Gitlab CI第1张

  下面是代码注释版版的:

  

building: //自己随便命名的
  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运行的速度

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

  下载一个工件下来看看:

  配置Gitlab pages和Gitlab CI第2张

  可以发现我所言非虚。这时候我们把这个提交推到远程。

配置Gitlab pages和Gitlab CI第3张

  等待这个流水线跑完,在 项目 --> 设置 --> pages 中,可以看到线上页面已经生成了。

  配置Gitlab pages和Gitlab CI第4张

免责声明:文章转载自《配置Gitlab pages和Gitlab CI》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数据持久化之sqlite基本用法Ubuntu12.04 配置KVM,使用网卡桥接模式。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

H5 缓存机制解析

在web项目开发中,我们可能都曾碰到过这样一个棘手的问题: 线上项目需要更新一个有问题的资源(可能是图片,js,css,json数据等),这个资源已经发布了很长一段时间,为什么页面在浏览器里打开还是没有看到更新? 有些web开发经验的同学应该马上会想到,可能是资源发布出了岔子导致没有实际发布成功,更大的可能是老的资源被缓存了。说到web缓存,首先我们要弄...

Linux命令:chown

说明: 将指定文件的拥有者改为指定的用户或组。 语法: chown [-cfhvR] [--help] [--version] user[:group] file... 参数: user : 新的文件拥有者的使用者 ID group : 新的文件拥有者的使用者组(group) -c : 显示更改的部分的信息 -f : 忽略错误信息 -h :修复符号链接 -...

Java基础-Long简析

Long 是long类型的包装类型。 Long默认零值为null, long的默认零值为 0. Long类中有个静态的内部缓存类,用来缓存 -128 ~ 127 之间的long包装对象实例,类加载的过程中会对LongCache的静态代码块进行初始化,后面自动装箱的 -128 ~ 127 之间的Long会直接返回缓存数组里面的对象引用。Long i = 1...

STM32自己的封装库

以前一直使用STM32的标准库,需要一步步地将代码加进去,将编译选项设置好,然后再编译整个工程。 这个编译过程是一个相当慢的过程!完全编译大约需要一支烟的时间。每次建立工程都这么编译,是一个相当浪费时间和香烟的过程。 于是,我有了将库编译成lib文件的想法。本博文就是我将STM32F4的标准库编译成lib文件并在工程中使用的过程。 适用对象: 1、熟悉库...

【转载】Linux系统下源代码包方式安装PHP开发环境

########节选自《细说PHP》################ 2.2 Linux系统下源代码包方式安装环境 在Linux平台下安装PHP有几种方法:使用配置和编译过程,或是使用各种预编译的包。在Linux上安装软件,用户最好的选择是下载源代码包,并编译一个适合自己的版本。LAMP组合中每个成员都是开源的软件,都可以从各自的官方网站上免费下载安装程序...

使用instruments工具调试性能

Instruments     Instruments是Xcode套件中没有被充分利用的一个工具。很多iOS开发者从没用过Instruments,或者只是用Leaks工具检测循环引用。实际上有很多Instruments工具,包括为动画性能调优的东西。     你可以通过在菜单中选择Profile选项来打开Instruments(在这之前,记住要把目标设置成...