GitHub 管理している Angular 製のサイトを GitHub Pages で公開するための GitHub Actions

何回ギフハブ言うんやって感じのタイトルになってしまった…。

拙作の Angular Utilities は、コレまで

$ npm run build
$ npm run deploy

とコマンドを実行することで、npm の gh-pages パッケージを利用して GitHub Pages にデプロイしてきた。

それを今回は、master ブランチへソースコードが Push されたら、自動的に GitHub Pages にデプロイするという GitHub Actions を組んでみることにした。

先に結論

さっさと正解のソースコードを載せる。次のような .github/workflows/deploy.yml (名前は任意) を作れば良い。

name: Deploy To GitHub Pages
on:
  push:
    branches:
      - master
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v1
        with:
          node-version: '12.x'
      - name: npm install
        run : npm install
      - name: Build
        run : npm run build --if-present
      - name: Deploy To GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          #publish_dir   : ./dist
          #publish_branch: gh-pages
          #personal_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
          #user_name     : 【コミッタの名前】
          #user_email    : 【コミッタのメルアド】

Node.js 環境をセットアップしたら、npm installnpm run build を流して Angular サイトをビルドする。コレで ./dist/ ディレクトリにデプロイ用の資材ができた状態になる。

コレまで実行していた npm run deploy の実体は gh-pages -d ./dist/ というコマンドで、gh-pages という npm パッケージに頼って作業していたが、それと同等の処理を、peaceiris/actions-gh-pages@v3 に担わせている。

with でオプションを指定できるが、何も指定しないと、gh-pages というブランチに、./dist/ 配下の資材をコミットしてくれる。ブランチ名や対象ディレクトリを変更したい場合はそれぞれコメントアウトしたオプションで指定できる。

内部で git push する際、GitHub の Personal Access Token が必要となるが、通常は GitHub Actions が自動的に用意してくれる GITHUB_TOKEN という環境変数を読み込んで処理してくれるので、何の準備も要らない。

もし自前で GitHub トークンを用意したい場合は、GitHub リポジトリの Settings → Secrets より事前にトークンを登録しておき、${{ secrets.PERSONAL_ACCESS_TOKEN }} といった形で参照しよう。GITHUB_TOKEN という名前の Secret は前述のとおり自動的に用意されていて予約済みなことに留意。

以上

GitHub Actions は未だに組み方がイマイチ分かりづらいが、とりあえずこんな感じでやりたいことが出来たのでよきよき。