MENU

Blog

ブログ

2024.06.10

Github ActionでレンタルサーバーのWordPressのテーマを自動デプロイする方法

Github ActionでWordpressのテーマを自動デプロイする方法

今回は自動デプロイの方法を記載します。
サーバー上にテーマのリポジトリを作成して、github actionでpullする方法を記載します。

mainブランチに変更があった時に動作するgithub actionを作成する

/* .github/workflows/deploy.yml */

name: ProductionDeploy
on:
  push:
    branches: ["main"]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v3
      - name: Deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USERNAME }}
          password: ${{ secrets.SERVER_PASS }} // passwordでsshログインの場合
      key: ${{ secrets.SERVER_SSH_KEY }} // 秘密鍵でsshログインの場合
          port: ${{ secrets.SERVER_PORT }}
          script: |
            cd {path to site}/wp-content/themes/{themeName}
            git pull origin main

sshでサーバーの中に存在するgithub リポジトリをpullして変更を取り込む処理が書かれています。
しかし、今のままではサーバー上にgit リポジトリが存在しないのでエラーになってしまうでしょう。
gitリポジトリをサーバー上でclone する必要があります。また、actionで利用されているsecretsをGitHub上に登録する必要があります。

デプロイ先のサーバーでgit リポジトリをcloneする

まずは自分のPCからデプロイ先のサーバーにsshで入りましょう。
パスワードの場合は以下でサーバーに入ることができます。

ssh -p {SERVER_PORT} {SERVER_USERNAME}@{SERVER_HOST}
-> パスワードを聞かれるので入力しましょう

 

ssh鍵でログインする場合は以下でサーバーに入ることができます

ssh -i {path to 秘密鍵} -p {SERVER_PORT} {SERVER_USERNAME}@{SERVER_HOST}


その後、git cloneするためにはサーバー上で秘密鍵および公開鍵を作成して、
https://github.com/{path to repo}/settings/keysにサーバー上の公開鍵を登録するか、
https://github.com/settings/sshにサーバー上の公開鍵を登録する必要があります。
何はともかくサーバー上でssh-keygenしましょう!

cd ~/.ssh
ssh-keygen -t rsa

id_rsaとid_rsa.pubが.ssh内に作成されるはずです。catコマンドで公開鍵の内容を表示してコピーしてください

cat id_rsa.pub
{公開鍵の内容が表示されるのでそれをコピーする}

次に公開鍵の内容を以下のどちらかに登録しましょう!
– https://github.com/{path to repo}/settings/keys
– https://github.com/settings/ssh

– https://github.com/{path to repo}/settings/keysの場合
– https://github.com/settings/sshの場合

ここまできたらレンタルサーバー上でgit cloneすることはできます!

cd {path to site}/wp-content/themes
git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY

deploy.ymlの{themeName}はYOUR-REPOSITORYと同じになります。

サーバーアクションで使うsecretsをGitHub上に登録する

https://github.com/{path to repo}/settings/secrets/actionsにて以下のシークレット情報を登録しましょう。

          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USERNAME }}
          password: ${{ secrets.SERVER_PASS }} // passwordでsshログインの場合
      key: ${{ secrets.SERVER_SSH_KEY }} // 秘密鍵でsshログインの場合
          port: ${{ secrets.SERVER_PORT }}

ー以下のコマンドに置き換えてくださいーーーーーーーーーーーーーーーーーーーーーーーーーーー
ssh -p {SERVER_PORT} {SERVER_USERNAME}@{SERVER_HOST}

秘密鍵でサーバーに入った場合は秘密鍵の情報そのものをSERVER_SSH_KEYとして登録してください
パスワードでサーバーに入った場合はそのままパスワードをSERVER_PASSとして登録してください


上記すべて設定しましたらmain変更時にレンタルサーバー上のテーマもmainの状態に変更される用になっているかと思います。

最後まで見てくださりありがとうございます!
Web制作やWeb開発で相談がありましたらご気軽にlongtownへご相談ください。

ブログカテゴリー

WEB制作

WEB開発