GitHub Actions を使用して、Hugo ブログを GitHub Pages と Gitee に自動デプロイします。
背景説明
ブログを更新した昨日、Travisのサービスが利用できないことに気づきました。Travisのウェブページを確認すると、ソースコードの取得で処理が止まっており、ふとGitHubが以前発表したActionsサービスのことを思い出しました。
その頃は色々用事ができそうだし、アクションを使うには申請が必要なので、今は正式にリリースされたばかりです。週末に時間があったら、新しいおもちゃを試してみるか?
公式資料は各自ウェブサイトでご確認ください。本文ではこれ以上の転載はいたしません。以前Kubernetesをご利用の方は、actionのYAMLファイル設定がKubernetesに似ていると感じるかもしれません。
中国語の入門チュートリアル、あるいは紹介資料についてですが、阮一峰的博客を検索することをお勧めします。2つの記事があり、1つ目は基本的な文法解説で、2つ目は実際の事例です。
正文
必要な知識点
- github secrets
- アクション文法
既存コンポーネントで主要なジョブを完遂し、コマンドによるpushで中国のGiteeに送信。コマンド部分は粗雑で、強制プッシュのみを使用しており、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
追記
公式ストアで提供されている機能を見ると、現在サポートされているプレイ方法は豊富です。Dockerイメージを構築すれば、Docker Hubのサービスに依存しなくなることもできます。
Hugoのissueを確認したところ、GitHub ActionsでGit Pagesを自動デプロイする場合、最終的に公開されるウェブページはmasterブランチに必要です。他のブランチにデプロイすると、設定画面でGitHubがウェブページの構文エラーを警告します。
実際は、Hugoのソースファイルがmasterブランチに置かれていたため、GitHubがjellyブログのソースコードとして検知し、チェックやビルドが通らなかったことが原因です。
解決策も簡単、Hugoのソースファイルを別のブランチに置き、静的ファイルはmasterブランチで公開する。