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へご相談ください。
ブログカテゴリー