GitLab CI/CD

GitLab CI/CD

在之前的github上搭建静态资源网站的基础上有了新的提升。把原来在本地机器编译的工作,通过gitlab实现自动化编译部署及发布,我只用专注于写作及将写好的内容上传到gitlab上即可。这也是现在最流行的CI/CD理念(持续集成持续发布)。

下面着重来说明下我在部署过程中主要过程及填的坑等等,主要是提供一个部署思路和学习路径。

注册gitlab账号

在进行此次迁移资源之前,我是没有接触过gitlab的,自己这一块也是现用现学,所以说都是自己需要才会真正去接触它和学习它,好了继续~

官方Pages

在gitlab上,有专门的pages页面,这里目前总共有三十种不同的模板,种类还是一应俱全。下面是首页的内容
gitlab pages

我们的目的是通过官方hexo pages来学习快速入门及部署我们自己的静态网页。

学习YAML

通过gitlabYAML官方文档来学习YAML格式,这里我展示下在我的项目中的YAML文件

image: longsl/hexo2simiki

pages:
  cache:
    paths:
    - blog/node_modules/

  script:
    - HOME=/builds/longshilin/longshilindotcom
    - cd blog
    - npm install
    - hexo deploy
    - cp -r blog $HOME/public
    - cd $HOME/wiki
    - simiki g
    - cp -r wiki $HOME/public/
  artifacts:
    paths:
    - public
  only:
  - master

这里还是比较清晰,容易理解的。上面的YAML文件主要进行的操作时通过longsl/hexo2simiki镜像作为基础环境,并在上面进行项目构建,并将指定的文件目录public作为发布资源进行发布。详细说明:

  1. image是本次构建所使用的镜像,这里我使用的是包含hexo和simiki构建工具的自定义镜像,详见hexo2simiki
  2. pages表示是一个默认的任务
  3. cache表示在该任务下将指定的路径下的文件进项缓存(其实就是在构建开始的时候将上次打包并保存的文件再次拿来用),这样在每次构建并发布时,可以省去很多固定资源的构建开销。
  4. script下面是编写shell脚本,这些脚本命令直接就是在docker容器中执行的,因此如果你的镜像时以linux为基础,可以直接执行。
  5. artifacts是发布项,可以指定本次构建出的哪部分内容会被保留下来,并作为该pipline的发布源文件。
  6. only指的是本次job任务只会涉及到master分支上的内容。

更多信息详见 GitLab Continuous Integration

部署及发布

编写自己的.gitlab-ci.yml文件,并放在项目的根目录下,这样在每次有新的更新提交到gitlab上时,会自动触发进行项目构建。