m13o

2021-03-04 Thu 23:37
DeployをGithub Actionsに変えたEmacs Netlify Github

以前述べたように, Netlifyのdocker imageはEmacsを含んでおり, org文書をhtmlに変換して公開するためにNetlifyから直接Emacsを起動するようにしていましたが, Emacsのバージョンが今となっては古く, さすがに追従できなくなるのは嫌だなぁと思っていた処, Github ActionsにはSet up Emacsという便利なActionがあるという事を知ったので, Github Actionsでorg文書をHTMLに変換してからNetlifyにデプロイするようにしました.

まず, NetlifyのBuild settingsでBuildsの項目がActivate buildsになっている場合はStop buildsに変更します. もう使う事はないでしょう.

次にSettings -> Site details -> Site informationにあるAPI IDをNETLIFY_SITE_IDとしてGithub リポジトリのSettingsのSecretsに設定します. また, Personal Access tokensからアクセストークンを生成し, NETLIFY_AUTH_TOKENとして, 同様にGithub リポジトリのSettingsのSecretsに設定します.

リポジトリのルートで, .github/workflows/main.ymlを作成し, 以下のように記述します.

name: Deploy website

on:
  push:
    branches: [ master ]
  # pull_request:
  #   branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Setup emacs
        uses: purcell/[email protected]
        with:
          version: 27.1

      - name: build
        run: make rebuild

      - name: Netlify Actions
        uses: nwtgck/[email protected]
        with:
          publish-dir: './publish'
          production-branch: master
        env:
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}

この変更をmasterブランチに対して commit & push すると, Github Actionsが走りNetlifyに展開されます. ちゃんとフッターに表示しているEmacsのバージョンが指定してものになっているのが確認できます.

気が向いたらstagingとproductionでわけるかもしれませんが, 今はmasterにpushされたらGithub Actionsが走るようにしています.

この時点でNetlifyである利点がもはやなくなってきたので, 別のホスティング環境なりサービスなりに移るかもしれませんが, しばらくはこの形でやっていこうと思います.