CI/CDによるWordPressデプロイ自動化について
夢中教室では、2024年12月頃からWordPressの本番環境反映を自動化しています。これまではコードの更新があるたびに手動で反映させていましたが、非常に危険な状態であったため置き換えを実施しました。
当然のことですが、手動で稼働中のWordPressサーバーにファイルを手動で出し入れするのはヒューマンエラーを容易に引き起こし、最悪の場合はサイトが閲覧不能になります。
やむを得ない場合を除き、サーバーに直接FTP・SFTP接続してのファイルのやり取りは行わないようにしてください。
Actionの内容
name: GitHubから本番環境への上書き
on:
push:
branches:
- main
tags:
- '[0-9]+.[0-9]+.[0-9]*'
jobs:
test:
name: サーバーに配置
runs-on: ubuntu-latest
steps:
- 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 }}
server-dir: ${{ secrets.FTP_SERVER_DIR }}
このスクリプトは、mainブランチにpushがあった場合にSamKirkland/FTP-Deploy-Action@4.1.0を毎回実行します。これは、「サーバーのWordPress用ファイルをGitHubのリポジトリの内容と同じにする」という内容にしています。
pushがあった場合に実行するため、GitHubの基本的な使い方がわかっていることがサイト編集の前提となります。やむを得ずGitHub上から直接ファイルを編集した場合でもpushと同等の扱いにはなりますが、予期せぬ不具合を避けるために極力しないようにしてください。
万が一、サーバーに手動でファイルを置いた痕跡があった場合は衝突が発生することとなります。その場合は、GitHubにあるものが優先される形で上書きとなります。
${{ secrets.FTP_NANTOKA }}となっているところは、シークレットの値のため別の場所に格納してあります。wowfull/web-wp-2023のSettings→Security→Secrets and variablesにあります。

私を含め、一度設定するとあとから中身を閲覧することはできません。これにより、夢中教室サーバーのパスワード等がソーシャルエンジニアリングや不正ログインなどで流出することを防いでいます。
鉛筆ボタンを押すことで、内容の上書きは実行できます。