2020-04-17

GitHub Actionsでブログを自動デプロイされるようにした

このブログがmasterにpushされると自動でFirebaseにデプロイされるようにした
本当はmasterにmergeされたらデプロイとなる方が望ましいのだろうが、まぁ個人のブログなのでブランチ運用は適当にやっている

やったこと

  • 作業ディレクトリルートに .github/workflows ディレクトリを作成し、 適当な名前.yml を配置する
  • デプロイフローを記述する(当ブログの場合は↓)

    name: Deploy to hakozaru.com
    on:
      push:
        branches:
          - master
    jobs:
      build:
        name: Build gatsbyjs
        runs-on: ubuntu-latest
        steps:
          - name: Checkout Repo
            uses: actions/checkout@master
          - name: Use Node.js 10.x
            uses: actions/setup-node@master
            with:
              node-version: "10.x"
          - name: yarn install and build
            run: |
              yarn install
              yarn run build
          - name: Upload artifact
            uses: actions/upload-artifact@master
            with:
              name: public
              path: public
    
      deploy:
        runs-on: ubuntu-latest
        name: Deploy to hakozaru.com
        needs: build
        steps:
          - name: Checkout Repo
            uses: actions/checkout@master
          - name: Download Artifact
            uses: actions/download-artifact@master
            with:
              name: public
          - name: Deploy to Firebase
            uses: w9jds/firebase-action@master
            with:
              args: deploy --only hosting
            env:
              FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
  • masterへpushする

これだけ
GitHubだけで全て完結するうえに、結構いろんなことができそうなのでかなり遊べそうな印象
無料 & privateでもそこそこ使えるのでマジですごい

ジョブ毎にファイルを共有できないので、アーティファクトupload/downloadを使ってbuildの生成物の共有を行っている以外変わったことをやっていない

秘匿情報はリポジトリのSettings => Secretsから登録すると secrets.XXXX で参照することができるので安心
Firebaseのtokenは手元で firebase login:ci して取得した

あと、Actionが失敗するとその都度メールが来てうざかったので、Actionsの通知設定やっとくといいと思う
GitHubアカウントのSettings => Notificationsの一番下にあるGitHub Actionsのチェックボックスを外す

もっと細かく調べてまとめようかと思ったけど、公式ドキュメントがとても見やすいのでやめた
時間は節約していきましょう。人生はそこまで長くない。