今まではHugo生成したものを、GitHubにpushするのとサイトにデプロイ(公開)するのを別々に行っていたけど、やっぱり面倒だなーと思っていた。
GitHubのWebhooksをの仕組みを調べてみたけど、どうにもイメージが違った。
よくよく調べてみたら、Actionsがイメージと合いそうってことで、設定してみた。
・リポジトリのActions>Set up workflow yurselfを指定する。
下にいくつかテンプレートみたいなのがあるので、言語だったりサービス毎に指定できそう。。

・初期状態の内容が表示される。
今回は、参考にしたサイトの記載に合わせて、分からなそうな設定はとりあえず、そのまま設定する。

・ファイル名をdeploy.ymlに変更した。記載内容は以下。
name: deploy
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: SCP Deploy
uses: lBeJIuk/scp_action@v1
with:
public_key: ${{ secrets.PUBLIC_KEY }}
ssh_port: ${{ secrets.PORT }}
ssh_username: ${{ secrets.USERNAME }}
ssh_host: ${{ secrets.HOST }}
source: 'public'
target: ${{ secrets.TARGET }}
・併せて、Settings>Secretsから項目を設定する。

・設定が完了したので、トリガーとなるpushをしてみる。

が、、Actoins自体は動いてくれたが、SCPで接続エラーが出てるっぽい。。
・Secretsを少し調整する。(内容は各環境に合わせてください。)
再度、pushしてみる。

今度は、正常に終わったっぽいので、SCP先を確認してみる。

publicのディレクトリが上がってしまっている。。コマンドの指定がおかしそう。。
・ymlでのsource指定を変更する。以下、修正版。
name: deploy
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: SCP Deploy
uses: lBeJIuk/scp_action@v1
with:
public_key: ${{ secrets.PUBLIC_KEY }}
ssh_port: ${{ secrets.PORT }}
ssh_username: ${{ secrets.USERNAME }}
ssh_host: ${{ secrets.HOST }}
source: './public/*'
target: ${{ secrets.TARGET }}
・再々度、pushしてみる。
修正前)

修正後)

無事にデプロイされた。
これで、FTPのツール使って上げなくてもよくなった。
特定のパスへpush等も制御できるようなので、公開ファイルのpathにだけ制御を入れたいけど、
現状は修正分はまとめてpushすると思うので、ひとまずこれで。
お疲れさまでした。
参考サイト:
https://tech.innovator.jp.net/entry/2020/02/03/124225
コメント