GitHub Actionsでメインブランチにプッシュ→さくらのレンタルサーバーにファイルアップロードさせる

さいしょに

このサイトはWordPressなのですが、テーマファイルを変更させたい時は、FTPクライアントでアップロードしていました。

しかし面倒なので、GitHubのmainブランチが更新されたら、アップロードされるようにしたいと思い、GitHub Actionsで可能と知り、仕組みを整えました。

今回はその手順をまとめます。

ファイルアップロードの要件

WordPressテーマファイルを管理するGitHubリポジトリのmainブランチが更新されたら、さくらのレンタルサーバーのWordPressテーマファイルも更新させます。

この仕組みは、Github Actionsで、FTP-Deploy-Actionを利用することで実現することができます。

FTP-Deploy-Actionとは

FTP-Deploy-Actionとは、GitHub Actionsでファイルのデプロイが可能なライブラリです。

https://github.com/marketplace/actions/ftp-deploy

同期させたいローカル側・サーバー側のディレクトリを合わせられたり、ブランチの指定も可能です。

なので、mainブランチが更新されたら、さくらのレンタルサーバーのWordPressテーマファイルも更新させる要件を満たしてくれます。

サーバー側の事前準備

さくらのレンタルサーバーでは、国外IPアドレスフィルターという、日本国外からのFTPやSMTPなど特定のプロトコルの国外からのアクセスを制限する機能があります。

https://rs.sakura.ad.jp/ipfilter.html

この機能が有効になっていると、GitHub Actionsからファイルをアップロードできませんので、無効にします。

「さくらのレンタルサーバーのサーバー管理画面>セキュリティ>国外IPアドレスフィルタ」にアクセスし、国外IPアドレスフィルタを無効にしましょう。

GitHub側の事前準備

GitHub Actionsで利用する変数の設定を行います。この変数でFTPのホスト名やパスワードを代入していきます。

「デプロイさせたいGitHubリポジトリのページ>Settings>Secrets and variables>Actions」にアクセスします。

アクセスしたら、変数の設定を行います。

  • FTP_PASSWORD : FTPユーザーのパスワード
  • FTP_SERVER : FTPのホスト名
  • FTP_SERVER_DIR : 同期させたいサーバーのディレクトリ
  • FTP_USERNAME : FTPアクセスするユーザー名
  • LOCAL_DIR : 同期させたいリポジトリのディレクトリ

設定ファイル

次にGitHub Actionsのymlファイル作成します。

name: FTPS Upload
on:
  push:
    branches: [main]
jobs:
  deploy:
    name: 🚀 Deploy website every commit
    runs-on: ubuntu-latest
    steps:
      - name: 🚚 Get latest code
        uses: actions/checkout@v3
      - name: 📂 Sync files
        uses: SamKirkland/FTP-Deploy-Action@v4.3.4
        with:
          server: ${{ secrets.FTP_SERVER }}
          username: ${{ secrets.FTP_USERNAME }}
          password: ${{ secrets.FTP_PASSWORD }}
          protocol: ftps
          local-dir: ${{ secrets.LOCAL_DIR }}
          server-dir: ${{ secrets.FTP_SERVER_DIR }}

branchesには、デプロイさせたいブランチ名、SamKirkland/FTP-Deploy-Action@v4.3.4のwithの下層のserver、username等には、定義したsecrets変数を入れます。

ここで設定は完了しましたので、mainブランチにプッシュすると、同期されますので、試してみましょう。

さいごに

FTPクライアントでファイルをアップロードさせると、抜け漏れがあったりするのでとても楽に感じました。

また、WP Super Cacheプラグインも利用しているので、キャッシュクリアの仕組みも後々導入したいです。

WP Super Cacheでサイトの表示速度を高速化