..

GitHubからFTPを使って自動デプロイ

静的サイトジェネレーター(Jekyll)で生成したサイトを、レンタルサーバー(さくらのレンタルサーバー)へ自動デプロイしている。生成そのものは確認も兼ねてローカルで実行しており、自動化するのはデプロイ作業のみである。 その手順を記録しておく。

以下のサイトの手順通りで、大丈夫だった。

さくらレンタルサーバーでも自動デプロイがしたい!【GitHubActions】

1. 国外IPアドレスフィルタを無効にする

さくらインターネットの場合、デフォルトでは国外IPアドレスフィルタという設定が有効になっているので、これを無効にする。理由は、GitHubActionsからの接続が国外のIPアドレスとなるため。

2. レンタルサーバーへの接続情報を設定する

レンタルサーバーへの接続情報(FTP)をGitHubのシークレットに設定する。リポジトリに記述すれば、公開されてしまう可能性があるため。

  1. GitHubのリポジトリを開く
  2. Settings -> Secrets -> New repository secret 選択
  3. Nameに識別名、Valueに実際の値を入れて保存
Name Value
FTP_SERVER サーバー名
FTP_USERNAME ユーザー名
FTP_PASSWORD パスワード
FTP_SERVER_DIR ディレクトリ名

3. GitHub Actionsを設定する

FTP-Deploy-Actionを利用する(v4.1.0)。 設定方法はREADME.TXTにあるとおり。

  1. GitHubのリポジトリを開く
  2. Actionsを選択
  3. リンク set up a workflow yourself をクリック
  4. ymlファイル(main.yml)を書き換える
on: push
name: 🚀 Deploy website on push
jobs:
  web-deploy:
    name: 🎉 Deploy
    runs-on: ubuntu-latest
    steps:
      - name: 🚚 Get latest code
        uses: actions/checkout@v2
      - name: 📂 Sync files
        uses: SamKirkland/FTP-Deploy-Action@4.1.0
        with:
          server: ${{ secrets.FTP_SERVER }}
          username: ${{ secrets.FTP_USERNAME }}
          password: ${{ secrets.FTP_PASSWORD }}
          local-dir: ./_site/ ※Jekyllの場合
          server-dir: ${{ secrets.FTP_SERVER_DIR }}

4. 動作確認

GitHubにpushして、反映されるかどうか確認する。GitHubのActionsに実行履歴が表示される。 これが正常に完了したことを確認し、WEBサイトの表示を確認する。

これが最初の記事だが、Actionの実行時間は30秒弱だった。