GithubActionsを試す
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が更新される度に自分のホームページのデータも更新されるという環境が出来た。