写在前面

使用Hugo生成静态博客后,需要手动把内容上传到对应pages的仓库,这种操作全程手动。现在有Travis.ci,一个自动测试和部署工具网站,你只需要把hugo处理前的文件上传到github,Travis.ci就会自动通过Hugo生成静态博客内容,并上传到pages的对应仓库。 需求有3个

  • 1 保存博客内容的github上仓库hugo-blog
  • 2 用户对应的github-pages的对应仓库 user.github.io,我的是tainzhi.github.io
  • 3 Travis.ci上设置的hugo-blog与tainzhi.github.io的对应trigger

具体流程如下:

  • 1 本地编写博客,并上传到github仓库hugo-blog
  • 2 因为Travis.ci对hugo-blog设置了trigger,它检测到hugo-blog有推送,就执行一系列操作,生成静态博客内容,把内容推送到github上pages对应的仓库tainzhi.github.io
  • 3 在浏览器中输入https://tainzhi.github.io就可浏览到新博客

Travis.ci注册与使用

Travis.ci用github账号注册。注册后,会看到自己github上的仓库列表,选择hugo-blog并打开。在github token网站生成tokens,复制到刚才Travis.ci上hugo-blog对应的设置中的环境变量,命名为GithubToken。同理,在coding.net上生成token拷贝到环境变量,命名为CodingNetToken

注意: Token是有使用期限的, 一年后就会过期, 需要重新申请token

自动部署到github pages

在hugo-blog中需要添加一个配置文件.travis.yml, 配置内容如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# https://docs.travis-ci.com/user/deployment/pages/
# https://docs.travis-ci.com/user/languages/python/

install:
    - uname -a
    - wget https://github.com/gohugoio/hugo/releases/download/v0.56.0/hugo_0.56.0_Linux-64bit.deb
    - sudo dpkg -i hugo*.deb
    - hugo version
    - pwd

script:
    - hugo
    - echo 'Hugo build done!'
after_script:
  - git clone "https://tainzhi:${GithubToken}@${Github_REF}" github-pages
  - rm github-pages/public -rf
  - cp ./public/* github-pages -rf
  - cd github-pages
  - git add .
  - git commit -m "Update Blog By TravisCI With Build $TRAVIS_BUILD_NUMBER"
  - git tag v0.0.$TRAVIS_BUILD_NUMBER -a -m "Auto Taged By TravisCI With Build $TRAVIS_BUILD_NUMBER"
  # Github Pages
  - git push --force --quiet "https://tainzhi:${GithubToken}@${Github_REF}" master:master 
  - git push --quiet "https://tainzhi:${GithubToken}@${Github_REF}" master:master --tags

env:
 global:
   # Github Pages
   - Github_REF: github.com/tainzhi/tainzhi.github.io.git

配置全是一些常见操作,很容易理解:先安转hugo,然后在当前目录下用hugo生成静态博客内容到public默认目录,接着clone仓库tainzhi.github.io,把public里面的内容拷贝到刚下载的仓库,最后上传并打上tag。 注意token的用法: 用token操作仓库git clone https://username:${Token}@${repo_ref}

部署到coding.net pages

1
2
3
4
5
6
7
# 在after_script中添加
  # Coding Pages
  - git push --force --quiet "https://qfq:${CodingNetToken}@${CodingNet_REF}" master:master
  - git push --quiet "https://qfq:${CodingNetToken}@${CodingNet_REF}" master:master --tags
# 在env中添加
   # Coding Pages
   - CodingNet_REF: git.coding.net/qfq/qfq.coding.me.git

最终内容请参考我的博客配置