最近一直收到github pages的通知,由hexo生成的静态站存在安全风险,要求升级,升级hexo会升级一大堆依赖node_modules,对于node小白来说一直没有进行升级。
npm install可以说很形象了
还是决定转hugo了,对比hexo来说真是太省事了,没有依赖,一个bin文件就能全部搞定,并且静态资源生成的速度和hexo不在一个量级。
hugo下用了xianmin的jane主题,一如既往的简洁清爽,专注阅读。
对于托管在github pages的静态网站,当突然想写几句话的时候,要从上一次的源文件环境或者是同步过的环境中继续,否则就导致文章丢失,所以用hexo和hugo写文章的体验最差的就是环境的同步。
为了不用再担心环境的同步和备份,直接采用gitlab的持续集成。在nas上跑的gitlab环境,docker跑一个gitlab-runner,executor采用shell方式,在gitlab上配置完成后在源repo中增加.gitlab-ci.yml文件。
stages:
- build
- deploy
job 1:
stage: build
script:
- hugo version
job 2:
stage: deploy
script:
- hugo
- echo -e "Deploying updates to GitHub..."
- pwd
- cd public
- git init
- git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
- git add -A
- git config user.name "name"
- git config user.email "name@gmail.com"
- git commit -m "rebuilding site `TZ="Asia/Shanghai" date +"%Y-%m-%d %H:%M:%S"`"
- git remote add origin git@github.com:your-repo.git
- git push --force -u origin master
- cd ..
在执行之前,需要将该docker中对应用户的ssh rsa.pub添加到github的ssh中。
但是上述gitlab-ci.yml配置的ci就是每次都是全量force push,当文章过多或者静态文件过多,每次小的改动进行全量push会非常浪费时间,并且没有commit log可以追溯。所以又修改了一版gitlab-ci.yml配置。
stages:
- build
- deploy
build:
stage: build
artifacts:
paths:
- public
script:
- hugo version
- hugo
deploy:
stage: deploy
dependencies:
- build
cache:
paths:
- yourname.github.io
script:
- if [ ! -d "yourname.github.io" ];then git clone git@github.com:yourname/yourname.github.io.git;else cd yourname.github.io && git pull && cd -;fi
- echo "Deploying updates to GitHub..."
- pwd
- rm yourname.github.io/* -r
- cp public/* yourname.github.io/ -r
- cd yourname.github.io
- git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
- git add -A
- git config user.name "yourname"
- git config user.email "youremail@gmail.com"
- git commit -m "rebuilding site `TZ="Asia/Shanghai" date +"%Y-%m-%d %H:%M:%S"`" || true
- git push --force -u origin master
- cd ..
这样会在runner的本地环境缓存github pages的repo信息,每次将hugo生成的public内容全量替换进去,git提交的时候只会提交相应的变动,即节省时间也节省github的资源。
随时随地在gitlab的WebIDE中新建markdown,保存后会自动更新到github pages,终于不再受终端限制了。