GitLab CI/CD
在之前的github上搭建静态资源网站的基础上有了新的提升。把原来在本地机器编译的工作,通过gitlab实现自动化编译部署及发布,我只用专注于写作及将写好的内容上传到gitlab上即可。这也是现在最流行的CI/CD理念(持续集成持续发布)。
下面着重来说明下我在部署过程中主要过程及填的坑等等,主要是提供一个部署思路和学习路径。
注册gitlab账号
在进行此次迁移资源之前,我是没有接触过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作为发布资源进行发布。详细说明:
- image是本次构建所使用的镜像,这里我使用的是包含hexo和simiki构建工具的自定义镜像,详见hexo2simiki
- pages表示是一个默认的任务
- cache表示在该任务下将指定的路径下的文件进项缓存(其实就是在构建开始的时候将上次打包并保存的文件再次拿来用),这样在每次构建并发布时,可以省去很多固定资源的构建开销。
- script下面是编写shell脚本,这些脚本命令直接就是在docker容器中执行的,因此如果你的镜像时以linux为基础,可以直接执行。
- artifacts是发布项,可以指定本次构建出的哪部分内容会被保留下来,并作为该pipline的发布源文件。
- only指的是本次job任务只会涉及到master分支上的内容。
更多信息详见 GitLab Continuous Integration
部署及发布
编写自己的.gitlab-ci.yml文件,并放在项目的根目录下,这样在每次有新的更新提交到gitlab上时,会自动触发进行项目构建。