GitHub CI/CD

GitHub CI/CD(継続的インテグレーション/継続的デリバリー、または継続的デプロイメント)により、コミットが指定のブランチにプッシュされるたびに、Kinstaサイトにコード変更を自動的にデプロイすることができます。この設定により、SSHGitHub Actionsを介してローカル環境からシームレスなコードのデプロイメント、ひいてはサイトへの継続的な更新が可能になります。

以下の手順には、弊社でホスティングする既存のサイトとGitHubアカウントが必要です。

1. サイトのバックアップをダウンロードする

サイトのバックアップをダウンロードし、GitHubリポジトリをセットアップして、ローカルで作業を行うことができます。DevKinstaを使用して弊社サーバーからサイトを取り込むことも可能です。

MyKinstaで「WordPressサイト」>(サイト名)>「バックアップ」に移動し、「ダウンロード」タブを選択して、「ファイルを生成する」をクリックします。

MyKinstaでダウンロード可能なバックアップを作成
MyKinstaでダウンロード可能なバックアップを作成

バックアップファイルの準備ができたら、「ダウンロード」をクリックしてローカルコンピュータに保存し、フォルダに解凍します。

2. GitHubリポジトリを設定する

任意のコードエディターでサイトのファイルを含むフォルダを開きます。不要なWordPressコアファイルやメディア、機密情報などのアップロードを防ぐため、プロジェクトのルートディレクトリに.gitignoreファイルを追加します。WordPress標準の.gitignoreテンプレートを使用し、その内容をコピーして保存することで、必要なファイルだけが追跡されるようになります。

GitHubリポジトリを作成し、サイトのファイルをGitHubにプッシュします。

3. Kinsta用のGitHubのシークレットを設定する

GitHubから弊社へのデプロイを自動化するには、ユーザー名、パスワード、ポート、IPアドレスなどのSSHの認証情報が必要になります。これらは機密情報であるため、GitHubのシークレットとして安全に保存してください。

GitHub内でリポジトリに移動し、「Settings」>「Secrets and variables」>「Actions」>「New repository secret」をクリックします。

MyKinstaのWordPressサイト「情報」画面の「SFTP/SSH」セクションの情報でシークレットを作成します。

シークレット名Secret
KINSTA_SERVER_IPホスト(例:12.34.56.78)
KINSTA_USERNAMEユーザー名(例:kinstahelp)
PASSWORDパスワード
PORTポート番号(例:12345)
GitHubのシークレットに追加するSSH情報
GitHubのシークレットに追加するSSH情報

4. KinstaサーバーでSSHキーを生成する

ターミナルを開いて、MyKinstaのWordPressサイト「情報」画面の「SSHターミナルのコマンド」を使用してSSHで弊社サーバーに接続します。

サイトのSSHターミナルコマンド
サイトのSSHターミナルコマンド

サイトのパスワードを入力し、以下のコマンドを使って新たなSSHキーを生成します。 [email protected]は実際のメールアドレスに置き換えます。

ssh-keygen -t rsa -b  4096  -C  "[email protected]"

Enterキーを押してキーをデフォルトの場所に保存し、プロンプトが表示されたらパスフレーズを空白のままにしてください。

SSHキーを生成
SSHキーを生成

5. SSHキーをGitHubに追加する

以下のコマンドで、公開鍵ファイル(~/.ssh/id_rsa.pubなど)の内容にアクセスします。

cat ~/.ssh/id_rsa.pub

GitHubの「Settings」>「SSH and GPG keys」>「New SSH key」に進み、「Title」を入力して(「Kinsta Server Key」など)、「Key type」が「Authentication Key」であることを確認したら、「Key」フィールドに公開鍵を貼り付けます。最後に、「Add SSH key」を入力して完了です。

GitHubにSSHキーを追加
GitHubにSSHキーを追加

6. KinstaサーバーでSSHを使うようにGitを設定する

MyKinstaのサイトの「情報」画面で、「環境情報」セクションの「パス」をコピーします。

環境情報の「パス」をコピー
環境情報の「パス」をコピー

ターミナルで、/www/your-site/publicをMyKinstaからコピーしたパスに置き換えて、以下のコマンドでサイトの本番ディレクトリに移動します。

cd /www/your-site/public

ディレクトリをGitリポジトリとして初期化し、リモートURLにSSHを使用するようにします。以下のコマンドのyour-usernameyour-repoをGitの認証情報とリポジトリに置き換えます。

git init git remote add origin [email protected]:your-username/your-repo.git

以下のコマンドを実行して、SSHのセットアップが機能していることを確認します。

すると、「Hi your-username! You’ve successfully authenticated, but GitHub does not provide shell access(認証は完了しましたが、GitHubはSSHアクセスを提供していません)」というメッセージが表示されます。これで、KinstaサーバーがGitHub Actionsを通してGitHubから直接変更内容を受け取り、デプロイするようになります。

7. GitHub Actionsのワークフローを作成する

以下のワークフローは、mainブランチにプッシュするたびに変更を自動的に弊社にデプロイするものです。デプロイを自動化するには、YAMLファイルを使用してデプロイ方法を定義します。

自分のGitHubリポジトリで、このディレクトリ内に.github/workflowsというディレクトリとdeploy.ymlというファイルを作成します。your-siteはKinstaサイト上のパスにあるフォルダ名に置き換えて、以下の内容を貼り付けます。

name: Deploy to Kinsta

on:
  push:
    branches:
      - main # 変更がメインブランチにプッシュされたときのみ、ワークフローをトリガー jobs:
  deploy:
    runs-on: ubuntu-latest

    steps: # Node.jsをセットアップ(ビルドタスクに必要な場合のみ) - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20.x'  # GitHubリポジトリから最新のコードを確認 - name: Checkout code
        uses: actions/[email protected] # SSH経由でKinstaにデプロイ - name: Deploy via SSH
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.KINSTA_SERVER_IP } } username: ${{ secrets.KINSTA_USERNAME } } password: ${{ secrets.PASSWORD } } port: ${{ secrets.PORT } }  # 任意、デフォルトは22 script: |  # 本番サイトのディレクトリに移動  cd /www/your-site/public # GitHubリポジトリから最新の変更を取り込む  git fetch origin main git reset --hard origin/main # 本番サイトが最新のメインブランチと一致していることを確認

ワークフローの詳細は以下のとおりです。

  • トリガー:GitHubリポジトリのmainブランチにコードがプッシュされるたびに起動します。
  • ジョブdeployというjobがひとつ含まれ、Ubuntuの仮想マシン(ubuntu-latest)上で実行されます。
  • コードの確認: actions/[email protected]アクションを使って、GitHubリポジトリから最新のコードを取り出します。
  • SSH経由でKinstaにデプロイ
    • appleboy/ssh-actionは、設定したシークレット(サーバーIP、ユーザー名、パスワード、ポート)を使用して、SSH経由でKinstaサーバーに安全に接続するために使用されます。このステップでは、次のコマンドが実行されます。
    • デプロイメントコマンド
      • cd /www/your-site/private:WordPressがホストされている本番ディレクトリに移動
      • git fetch origin main:GitHubリポジトリのmainブランチから最新の変更を取得
      • git reset --hard origin/main:ブランチの最新コードで本番サイトを更新

8.ワークフローをテストする

ワークフローを設定したら、GitHubリポジトリのmainブランチに小さな変更をプッシュしてテストしてみてください。変更をプッシュするたびに、GitHub Actionsが自動的にデプロイをトリガーし、コードの最新バージョンをプルして、Kinsta上の本番サイトにデプロイするようになれば成功です。

デプロイのステータスは、GitHubリポジトリの「Actions」タブで監視可能です。ワークフローでエラーが発生した場合は、トラブルシューティングや問題の修正に役立つログが詳細に表示されます。

この記事は役に立ちましたか?