之前,我在github上面对于我的blog建了两个仓库:

  • github.io 用来存放发布以后的页面,hugo的public里面内容就会推送到这个目录
  • website hugo所有的配置以及文章都放在这里

可以看出每次写好文章以后我就需要就执行hugo,然后将public里面的内容推送到github.io仓库里面去,虽然有一个deploy.sh脚本,但是还是觉得很麻烦,于是就有一个想法,能不能我提交到website上面的时候就自动发布到github.io上面去呢?

答案是有的,那就是利用travis-ci

现在,我们连website这个仓库都可以省略掉了,只需要一个github.io就可以了;打开github,在github.io里面新建一个分支,取名叫做source。 在本地,我们clone下source分支:

git clone --depth=50 --branch=source https://github.com/vinurs/vinurs.github.io.git

删除这个分支下面的所有内容:

rm -rf *

从原来的website目录下面,将一些文件copy到我们的新的分支目录下面:

cp -rf website/* vinurs.github.io/

因为主题是我fork的别人的,所以这里我们要重新设置一下主题:

git submodule add  https://github.com/vinurs/hugo-future-imperfect.git themes/hugo-future-imperfect

需要注意的是,我这里的submodule没有用git协议,是因为在travis-ci里面,他所有的操作是通过personal-key来进行了,如果这里用git的话就会失败。

准备.travis.yml文件,内容格式如下:

language: go

go:
  - master # This uses automatically the latest version of go


install:
  - mkdir $HOME/src
  - cd $HOME/src
  - git clone https://github.com/gohugoio/hugo.git
  - cd hugo
  - go install
  - cd ${TRAVIS_BUILD_DIR}

script:
  - hugo # This commands builds your website on travis

deploy:
  local_dir: public # Default static site output dir for Hugo
  repo: vinurs/vinurs.github.io # This is the slug of the repo you want to deploy your site to
  target_branch: master # GitHub pages branch to deploy to (in other cases it can be gh-pages)
  provider: pages
  skip_cleanup: true
  github_token: $GITHUB_TOKEN # This is the authentication which you will setup in the next step in travis-ci dashboard
  email: [email protected]
  name: vinurs
  on:
    branch: source

上面的install的里面的内容一定要注意,由于原来我没有写

- cd ${TRAVIS_BUILD_DIR}

导致一直在自动化编译不过。

将刚才所作的修改推送到source分支上去即可,travis-ci如何连接github请参考下面的链接。

参考链接

更新历史

2017-03-13

  • 初稿

2018-09-07

  • 更新了安装hugo的方式