使用 GitHub Actions 自动部署 Hugo 博客到 GitHub Pages 和 Gitee。
背景介绍
昨天更新博客时发现travis服务不可用,查看travis网页,发现进度卡在拉取源码的时候,灵光闪现想到了github之前推出的action服务
由于那会比较忙,同时也需要申请才能使用action,现在已经开始正式上线,周末闲来无事,尝试一个新玩具?
官方资料大家自行进入网站查阅即可,本文就不做更多的转载了,如果之前用过kubernetes会觉得,action的yaml文件配置和kubernetes很像。
关于的入门的教程,或者说是中文的介绍资料,推荐搜索阮一峰的博客,有两篇文章,第一篇是基础的语法介绍,第二篇是一个实际的案例。
正文
需要的知识点
- github secrets
- action 语法
核心的job使用现有的组件完成,推送到国内gitee使用command实现,command这部分比较粗暴,都是强制推送,沿用了使用travis的逻辑。
name: github pages and gitee pages
on:
push:
branches:
- hugo
jobs:
deploy:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: 'latest'
extended: true
- name: Build Github and Gitee ## 单个step只能写一个run命令
run: hugo -b "https://www.xiangtianlong.com/" -d "github_public" && hugo -b "https://www.xiangtianlong.com/" -d "gitee_public" && ls
- name: Deploy Github
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.BLOG_TOKEN }}
publish_dir: ./github_public
publish_branch: master
cname: xiangtianlong.com
- name: Deploy Gitee
run: cd ./gitee_public && git init && git config user.name "TianlongXiang" && git config user.email "tianlongxiang51@gmail.com" && git add . && git commit -m "Update TianlongXiang's Blog" && git push --force "https://xiangtianlong:${{ secrets.GITEE_PASSWORD }}@gitee.com/xiangtianlong/xiangtianlong.git" master:master
后记
从官方市场提供的action来看,目前支持的玩法挺多,构建docker镜像以后也能不再依赖dockerhub提供的服务
查阅hugo的issue,发现使用github action自动部署git pages,最终发布的网页需要在master分支,如果是部署在其他分支,在setting界面,github会提示部署的网页存在语法问题
实际上只是由于hugo的源文件放在了master分支,github当作jelly博客的源码进行检测,无法检查无法通过导致的报错
解决方案也简单,hugo源码文件放到其他分支,静态文件发布在master分支