WordPress のオリジナルテーマを GitHUB Action を使ってデプロイするコードの紹介です。
弊社では、テーマディレクトリだけを開発環境において、デプロイもそれだけを本番サーバーに移行する方法をとっています。
純粋にオリジナルのテーマディレクトリだけを Git のバージョン管理下におけば、本番サーバーにSSH接続して'git pull'
するだけでデプロイになる方法もお勧めですが、TailwindCSS のコンパイルや、ローカル開発環境でホットリロードさせたい場合の環境を組んだ場合はそう単純に収まりませんので、やはり GitHUB Action での自動化は便利です。
今回のデプロイコードはミニマム設計のものなので、他のタイプが欲しい方はご要望ください。
プロジェクト構造
.git/
.github/
├── workflows/
├── deploy.yml
original-theme/
├── img/
├── main.js
├── style.css
├── functions.php
├── header.php
├── footer.php
├── index.php
├── single.php
├── category.php
├── archive.php
├── search.php
├── page.php
├── comments.php
├── sidebar.php
GitHUB Action用の .github/workflows/deploy.yml
name: Deploy to Production
on:
workflow_dispatch: # 手動で実行するためのトリガー
jobs:
deploy:
runs-on: ubuntu-latest # 本番サーバーへデプロイするための仮想環境をUbuntuに設定する
steps:
- name: Checkout code # 仮想環境にリポジトリをクローンする
uses: actions/checkout@v4
- name: Setup SSH key # SSHキーを設定する
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.PRODUCTION_HOST }} >> ~/.ssh/known_hosts
- name: Deploy theme to production # 本番サーバーにrsyncでデプロイする
run: |
rsync -avz --delete \
-e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \
--exclude='.git*' \
--exclude='.git*' \
original-theme/ \
${{ secrets.SSH_USER }}@${{ secrets.PRODUCTION_HOST }}:${{ secrets.PRODUCTION_PATH }}/themes/original-theme/
- name: Set correct permissions on production # ファイルの所有権とグループが崩れるのでwww-dataに変更する
run: |
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
${{ secrets.SSH_USER }}@${{ secrets.PRODUCTION_HOST }} \
"chown -R www-data:www-data ${{ secrets.PRODUCTION_PATH }}/themes/original-theme && \
find ${{ secrets.PRODUCTION_PATH }}/themes/original-theme -type f -exec chmod 644 {} \; && \
find ${{ secrets.PRODUCTION_PATH }}/themes/original-theme -type d -exec chmod 755 {} \;"
- name: Notify deployment completion # デプロイが完了したことを通知する
run: |
echo "✅ Deployment completed successfully!"
echo "Theme deployed to: ${{ secrets.PRODUCTION_HOST }}"
echo "Build artifacts created and synced to production server"