ブログの記事公開をGithub Actionsで自動化しました

ブログの記事公開をGithub Actionsで自動化しました

April 2, 2020
雑記
Github Actions, hugo

背景

ブログの記事公開を Github Actions で自動化しました。
Qiita から Github Pages に移ったのはいいのですが、記事を公開する手順が

  1. Blog の記事を作成する
  2. Blog 記事のソース用リポジトリに push する
  3. Hugo コマンドで public フォルダに記事を build する
  4. public フォルダを Github Pages 設定しているリポジトリに Push

という手順でめんどいものでした。
このへん自動化できないかなと調べたら、Github Actions 使ったやり方がいろいろありそうなので、それ試しました。

https://discourse.gohugo.io/t/deploy-hugo-project-to-github-pages-with-github-actions/20725

上の記事をそのまんまやっただけですが
簡単にまとめると

master ブランチへ push すると、Actions が動いて記事を build してくれます。build した内容をgh-pagesブランチに Github Pages でそのまま公開できる形で Deploy してくれます。

一応手順は以下です。

手順

Deploy 用に SSH 鍵を設定

build した内容を push するアクセス権を与えるために SSH 鍵を登録しておきます。

$ ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""

実行すると以下 2 つの鍵が作成されます。

  • gh-pages.pub
  • gh-pages

gh-pages.pubはアカウントの設定ページ内にNew SSH keyで登録しておきます
https://github.com/settings/keys

gh-pagesは記事のソースを送るリポジトリの設定ページのSecretsACTIONS_DEPLOY_KEYという名前で保存しておきます。
https://github.com/{username}/{repository-name}/settings/secrets

Github Actions の設定

リポジトリ直下の.github/workflows/に github actions の設定ファイルを作成します

name: github pages

on:
  push:
    branches:
      - master

jobs:
  build-deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@master

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2.2.0
        with:
          hugo-version: "0.58.3"

      - name: Build
        run: hugo --gc --minify --cleanDestinationDir

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v2.4.0
        env:
          ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
          PUBLISH_BRANCH: gh-pages
          PUBLISH_DIR: ./public

これを commit すると、actions が実行されるはずです。 前の SSH 設定をちゃんとやっていれば、build が成功して、gh-pages内に hugo が build した内容(publicの中身)が push されているはずです。

Github Pages の設定

最後に Github Pages の設定をします。

https://github.com/{username}/{repository-name}/settings/

の Gihub Pages の設定で、Sourcegh-pages branchにすれば OK です。

あとは Your site is published at https://....github.io/... で書かれている URL でブログが公開されます。