GithubActionsを試す

Page content

GithubActionsを試す。

前回の日記でマークダウンを書いてHUGOで静的HTMLを出力したホームページは出来たけど、HTMLファイルをサーバにアップロードしなくてはいけない。 毎回手で温かみのあるscp作業をするという時代でもないし、最近GithubActionsという仕組みが出来て、簡単にCIとかCD環境が手に入れられるので試す。

公式のドキュメントはここ https://help.github.com/ja/actions Github Actionsはまだβ版なので申し込みをしないと利用可能にならないけど、日に何度かホームページを更新する様な使い方なら無料で使えるらしい。スゴイ

github.comのリポジトリのActionsタブ

Github Actionsの設定はリポジトリの .github/workflows にyamlファイルを用意してあげるだけなのだけど、このタブを開くと予め用意されたサンプルのデータを用意してくれる。

最初にSimple workflowを選んでそのままcommitしてGithub Actionsがどのような物なのか様子を見ると良い。

Actionsタブに実行されたworkflowが表示される 秘匿情報はリポジトリのSettingsのSecretsに保存した物を利用出来る。

どうやってdeployしようか…

HUGOで作ったホームページをインターネットで公開する方法は色々あるけど、今回私はsshの使えるレンタルサーバを利用しているので、

  • レンタルサーバにHUGO用のデータの入ったリポジトリを用意
  • そのリポジトリをレンタルサーバ内でpullして最新のデータを取得
  • レンタルサーバでhugoを実行してHTMLを更新

という方法でやることにした。

Github Actionsでsshする

上記の方法を実現為にはGithub Actionsでsshするのが一番簡単そう… 本来は色々な設定をしないといけないらしいのだけど、Github ActionsのMarketPlaceを検索するとよく使いそうな設定をが公開されていて、それを利用する事ができる。 今回はsshで検索して出てきたこれを使う事にした。

https://github.com/marketplace/actions/ssh-commands

これを使うと指定のサーバで指定のコマンドを実行することが出来る。

ホームページ用のHUGOのデータの入ったリポジトリに .github/workflows/deploy.yml というファイルを用意して内容を以下の様にした。 scriptを自分のやりたい事に書き換えたのと、masterに変更があったときだけ動く様にbranchesを設定したくらいで、ほぼssh-commandsのコピペのまま。

name: Deploy
on:
  push:
    branches: master
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
    - name: executing remote ssh commands using key
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        script: | 
          cd ${{ secrets.REPO_DIR }}
          git pull
          ${{ secrets.HUGO_PATH }}/hugo

これで、Githubのmasterが更新される度に自分のホームページのデータも更新されるという環境が出来た。