Hugo を GitHub Pages に自動デプロイする
GitHub Actions を使って Hugo のビルド、GitHub Pages へのデプロイを自動化する方法
参考
- GitHub Actions による GitHub Pages への自動デプロイ - Qiita
- Push directory to another repository · Actions · GitHub Marketplace
構成
GitHub Pages でデプロイするためにはレポジトリが Public でなければならないが、 ドラフトも含めて Public に公開されてしまうのは嫌なので、 Hugo をビルドした生成物だけを管理する Public レポジトリを用意する
repository | Type | Description |
---|---|---|
blog-source | Private | Hugo のプロジェクト全体を管理するレポジトリ |
blog | Public | Hugo の生成物のみを GitHub Pages で公開するレポジトリ |
- blog-source レポジトリに Push する
- GitHub Actions によって自動で Hugo ビルド、生成物が blog レポジトリへ Push される
- blog レポジトリが GitHub Pages にデプロイされる
事前準備
別のレポジトリへ自動 Push するために GitHub の Personal access token が必要
- Personal access tokens 設定画面にアクセスする
- Generate new token でトークン生成
- Select scopes は
repo
を選択 - Note は Hugo デプロイ用とわかるように適当につける
- 生成されたトークンをコピーしておく
- Select scopes は
- blog-source レポジトリの Settings > Secrets からトークンを登録する
- Name は適当に、ここでは
HUGO_DEPLOY_TOKEN
としておく(後で使う) - Value にはコピーしておいたトークンをペーストする
- Name は適当に、ここでは
GitHub Actions
前半はほぼGitHub Actions による GitHub Pages への自動デプロイ - Qiitaの通りです
後半をPush directory to another repository · Actions · GitHub Marketplaceに書き換える
.github/workflows/deploy-hugo.yml
を作成name: Deploy Hugo # GitHub Actionsのトリガーを好きなように設定する on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: true fetch-depth: 0 - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: # Versionは最新のものにする hugo-version: "0.74.3" - name: Build run: hugo --minify - name: Push to blog repo uses: cpina/github-action-push-to-another-repository@master env: # 事前準備で登録しておいたトークン名を書く API_TOKEN_GITHUB: ${{ secrets.HUGO_DEPLOY_TOKEN }} with: # Hugoは`public`ディレクトリにビルド生成物を出力するので source-directory: "public" # blogレポジトリの所有者アカウント名 destination-github-username: "DESTINATION-GITHUB-USERNAME" # 生成物をPushするレポジトリ名(今回はblog) destination-repository-name: "blog" # メールアドレス user-email: YOUR@MAIL.ADDRESS
mater
ブランチに Push するだけで自動デプロイ、Push が始まる
- blog レポジトリの
mater
ブランチの/
(root)を GitHub Pages で公開するように設定しておけば OK