用Travis CI自动化Hugo生成及GitHub Pages部署
source link: https://xusiwei.github.io/post/2019/10/hugo-github-pages-with-travis-ci/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
用Travis CI自动化Hugo生成及GitHub Pages部署
2019年10月18日
用Travis CI自动化Hugo生成及GitHub Pages部署
使用Hugo作为个人博客生成器有一段时间了,博客原始文稿的markdown也是用了GitHub仓库管理。所以每次写完东西之后,除了markdown原始文稿需要提交一次,生成的静态站点内容也需要提交一次,有点麻烦。
因为之前有用过免费的TravisCI,一直想着能不能通过它实现只提交一次原始Markdown文稿,自动生成一下静态站点、并上传到GitHub Pages仓。于是初步尝试了一下,验证了这样是可行的:
language: c
os:
- linux
before_install:
- wget --quiet https://github.com/gohugoio/hugo/releases/download/v0.58.3/hugo_0.58.3_Linux-64bit.tar.gz
- tar xzvf hugo_0.58.3_Linux-64bit.tar.gz
- export PATH=$PATH:$PWD
before_script:
- mkdir public && git clone https://github.com/$GITHUB_ID/$GITHUB_ID.github.io.git public
script:
- hugo
after_success:
- echo Generate success, deploy site to GitHub Pages.
- subject=`git log --pretty=%s -n 1`
- cd public
- git add .
- git -c user.name='travis-ci' -c user.email="$GITHUB_EMAIL" commit -m "$subject"
- git push -f https://$GITHUB_ID:[email protected]/$GITHUB_ID/$GITHUB_ID.github.io.git
after_failure:
- echo build failure
其中的三个变量分别是:
- GITHUB_ID 保存GitHub用户名
- GITHUB_PWD 保存GitHub密码
- GITHUB_EMAIL 保存GitHub账号的一个邮箱
这三个变量需使用Travis环境变量的方式设置值,并且注意创建时不要打开“DISPLAY VALUE IN BUILD LOG”选项。否则,Travis构建的日志中就能够看到你的这几个变量的值了:
虽然这样确实可以实现自动生成和部署,但是总感觉直接使用密码的方式不太安全。
试完之后搜了一下”TravisCi + Hugo + Github Pages”, 从别人的博客里发现,原来TravisCI自带了GitHub Pages的部署支持。 TravisCI官方GitHub Pages部署文档链接: https://docs.travis-ci.com/user/deployment/pages/
于是我把我的.travis-ci.yml
文件的部署方式也改成使用这种方式:
language: c
os:
- linux
install:
- wget --quiet https://github.com/gohugoio/hugo/releases/download/v0.58.3/hugo_0.58.3_Linux-64bit.tar.gz
- tar xzvf hugo_0.58.3_Linux-64bit.tar.gz
- export PATH=$PATH:$PWD
script:
- hugo
deploy:
repo: $GITHUB_USER_ID/$GITHUB_USER_ID.github.io # 部署GitHub的仓,不需要 https://github.com/ 前缀
provider: pages # 重要,指定这是一份github pages的部署配置
skip-cleanup: true # 重要,不能省略
local-dir: public # 重要,静态站点文件所在目录
target-branch: master # 重要,要将静态站点文件推送到哪个分支
github-token: $GITHUB_API_TOKEN # 重要,需要在GitHub上申请、再到配置到Travis
keep-history: true # 是否保持target-branch分支的提交记录
on:
branch: master # 博客源码拉取的分支
参考: https://www.metachris.com/2017/04/continuous-deployment-hugo---travis-ci--github-pages/
Recommend
-
38
使用 Travis-CI 自动化部署 GitHub Pages Published on Oct 11, 2019 一直听闻 持续集成 的大名, 这次借着在 GitHub Pages 部署博客来体验一下。 目前已实现当推送一个新的 commit 到...
-
11
Publish your Pelican blog on Github pages via Travis-CIPublish your Pelican blog on Github pages via Travis-CI Thu 09 January 2014This blog is powered by Pelican, and until recently I have rendered the HTML pages on my local machine...
-
10
使用github,hugo,travis打造个人博客github给个人和组织免费提供github pages功能. 就是说如果有个repo的名字为http://cod3fn.github.io (cod3fn为你的github username), 那...
-
5
Blog自动部署实践: Hugo + Travis CI -> GitHub Pages这个博客托管在GitHub Pages上已经有一段时间。最初使用的静态站点生成工具是Jekyll,后来换成Hugo,因为是...
-
0
由于 Github 访问过慢,所以博客一直放在自己的服务器上托管;博客采用了 Jekyll 生成静态展点,最近鼓捣了一下完成了 Travis CI 自动化部署,顺便在此记录下一、原部署方式1.1、原部署流程由于博客访问量不...
-
3
Build Website First add .travis.yml [11] in the root of your source repo. My configuration is as follows: l...
-
4
用Hugo和GitHub Pages搭建博客 2016年2月21日 |
-
1
Hugo的自动化部署 Sun Jun 7, 2015 今天根据Hugo网站上的说明,把Hugo的构建和部署工作交给
-
3
Blog with Hugo (and GitHub Pages) 2021.1.3 2021.12.5...
-
4
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK