最近では、WordPress開発者Gitを使用して開発作業を効率化し、複数のチームメンバーがお互いの邪魔をすることなく、1つのプロジェクトをスムーズに進行することができます。

Bitbucketは人気のあるGitサービスです。コードを置いておくだけではなく、プッシュした変更を自動的にサーバーにデプロイし、繰り返しの作業を回避して、WordPressサイトを最新の状態に保つことができます。

その際に役に立つのがBitbucket Pipelinesです。Bitbucket Pipelinesを使用すると、継続的デプロイ用のワークフローを設定できるため、リポジトリの変更がサイトに自動的にデプロイされます。Kinstaをご利用の場合は、SSHとBitbucket Pipelinesで、すべてのプロセスを自動化することができます。

今回は、Bitbucket Pipelinesを使用してKinstaで管理するWordPressサイトに継続的デプロイメントを設定する方法をご紹介します。

前提条件

Kinsta上のWordPressサイトに継続的デプロイメントを設定するには、以下が必要になります。

  1. KinstaでホスティングされているWordPressサイト
  2. WordPressサイトファイルへのローカルマシンアクセス
  3. サイトのコードを保存してプッシュするBitbucketアカウント
  4. コードをプッシュして、.gitignoreファイルを操作する方法などGitの基礎知識

BitbucketでWordPressサイトをセットアップする方法

Kinstaのお客様には、WordPressサイトのファイルに簡単にアクセスする方法が2種類あり、KinstaサーバーからサイトをDevKinstaに取り込んでローカルで作業するか、MyKinstaからダウンロード可能なバックアップを作成することができます。今回は例として、後者の方法を使用します。

WordPressサイトのファイルをダウンロード

KinstaからWordPressファイルのコピーをダウンロードするには、以下の手順に従ってください。

  1. MyKinstaで該当のサイトを開く
  2. 左サイドメニューから「バックアップ」画面を開いてサイトのバックアップにアクセス
  3. ダウンロード」タブを開いて、ダウンロード可能なバックアップを作成
  4. ダウンロードの準備が整ったら、コンピュータに保存

バックファイルは圧縮ファイルでダウンロードされます。解凍すると、WordPressのすべてのファイルにアクセスできます。

プロジェクトをGit用に設定してBitbucketにリポジトリを作成

任意のコードエディターで、サイトファイルを含むフォルダを開きます。不要なWordPressコアファイル、メディアアップロード、または機密情報のアップロードを防ぐために、プロジェクトのルートディレクトリに.gitignoreファイルを追加します。

標準のテンプレート使用し、その内容をコピーして保存することで、必要なファイルのみが追跡されるようになります。

これで、ローカルのWordPressファイルをGit用に準備することができました。Bitbucketのワークスペースに移動し、ファイルが格納されていない新規リポジトリを作成します(すでにローカルで作成済みのため.gitignoreファイルは含めない)。

SSH認証を設定してBitbucketにプッシュ

Bitbucketのリポジトリに安全に接続するには、SSH認証を設定してコードをプッシュします。

  1. 以下のコマンドでローカルマシンでSSH鍵ペアを生成(メールアドレスは自分のものに置き換える)。鍵ペアはアクセスしやすい場所に保存してください(例:~/.ssh/id_rsa_bitbucket)。
    ssh-keygen -t ed25519 -C "[email protected]"
  2. 公開鍵(~/.ssh/id_rsa_bitbucket.pub)をコピーして、「Personal Bitbucket Settings」>「SSH Keys」に追加。これでマシンが安全にコードをプッシュできるように。
    BitbucketにSSH鍵を追加
    BitbucketにSSH鍵を追加

  3. SSH鍵を追加したら、以下のコードをBitbucketにプッシュする。
    # 新規Gitリポジトリを初期化
    git init
    # 最初のコミットのためにすべてのファイルをステージング
    git add .
    # メッセージとともにファイルをコミット
    git commit -m "Initial commit of WordPress site files"
    # Bitbucket リポジトリをリモートオリジンとして追加
    git remote add origin [email protected]:your-username/your-repo.git
    # ファイルをBitbucketにプッシュ
    git push -u origin main

    your-usernameyour-repoは実際のBitbucketユーザー名とリポジトリ名に置き換えてください。

以上でBitbucketのセットアップが完了です。続いて、Bitbucketリポジトリからの変更を受け取れるようにKinstaサーバーを設定します。

自動デプロイ用にKinstaサーバーを設定する方法

Bitbucketからの自動デプロイメントを有効にするには、BitbucketへのSSHアクセスを確立し、KinstaサーバーでSSHを使用するようにGitを設定する必要があります。

手順1. 安全な接続のためBitbucketへのSSHアクセスを設定

KinstaサーバーがBitbucketからコードをプルできるようにするには、サーバー上でSSHキーを生成し、その公開キーをBitbucketアカウントに追加する必要があります。

MyKinstaでサイトの「情報」>「SFTP/SSH」セクションにある「SSHターミナルのコマンド」を使用して、KinstaサーバーにSSH接続します。

MyKinstaのSSHターミナルのコマンド
MyKinstaのSSHターミナルのコマンド

次に、SSH鍵を生成します(すでに持っている場合は次のステップへ)。

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

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

SSH公開鍵を生成
SSH公開鍵を生成

次に、公開鍵をBitbucketに追加します。鍵にアクセスするには、以下のコマンドを使用します。

cat ~/.ssh/id_rsa.pub

出力内容全体をコピーし、Bitbucketアカウントで「Bitbucket Settings」>「SSH Keys」に移動して、公開鍵を追加してください。これで、KinstaサーバーがBitbucketリポジトリに安全にアクセスできるようになります。

手順2. KinstaサーバーでSSHを使用するようにGitを設定

以下のコマンドを実行して、Kinstaサーバー上のサイトの本番ディレクトリに移動します。

cd /www/your-site/public

このパスは、MyKinstaのサイトの「情報」>「環境情報」セクションで確認可能です。

WordPressサイトのサーバーパス
WordPressサイトのサーバーパス

次に、そのディレクトリをGitリポジトリとして初期化し、SSHを使うようにリモートURLを設定します。

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

your-usernameyour-repoは、例によって実際のBitbucketのユーザー名とリポジトリ名に置き換えてください。

以下を実行して、SSHの設定が正常にできているかを確認します。

ssh -T [email protected]

正常に完了すると、「“authenticated via SSH key. You can use git to connect to Bitbucket. Shell access is disabled(SSHキーで認証されました。Bitbucketへの接続にgitを使用できます。シェルアクセスは無効です)」といったメッセージが表示されます。

以上で、KinstaサーバーはBitbucket Pipelinesを通じてBitbucketから直接変更内容を受け取り、デプロイすることができます。

自動デプロイ用にBitbucket Pipelinesをセットアップする方法

Bitbucket Pipelinesは、継続的インテグレーション・継続的デリバリー(CI/CD)ツールで、リポジトリに変更をプッシュする際のタスクを自動化することができます。今回のセットアップでは、mainブランチに新たなプッシュがあるたびに、Kinstaへのデプロイをトリガーするパイプラインを設定します。

必要な環境変数の追加

パイプラインを設定する前に、機密情報を安全に保存するためにBitbucketでいくつかの環境変数を設定する必要があります。Bitbucketの「Repository Settings」>「Repository Variables」に移動して、対応する値とともに以下を追加します。

  • KINSTA_USERNAME─KinstaサーバーのSSHユーザー名。Bitbucket Pipelinesでログインし、デプロイコマンドを実行するために使用。
  • KINSTA_SERVER_IP─KinstaサーバーのIPアドレス。Bitbucket Pipelinesがデプロイのために接続するサーバーを知ることができます
  • PORT─Kinstaサーバーが使用するSSHポート。Kinstaサーバーはカスタムポートを使用するため、ここで指定する必要あり。MyKinstaのサイトの「情報」>「SFTP/SSH」セクションで確認可能。

    MyKinstaのSTFP/SSH情報
    MyKinstaのSTFP/SSH情報

  • SSH_PRIVATE_KEY─ローカルマシンのSSH秘密鍵をbase64エンコードしたもの。Bitbucket Pipelinesは、この鍵を使ってKinstaサーバーを認証する。秘密鍵をbase64でエンコードするには、以下を実行してください。
cat ~/.ssh/id_rsa | base64

出力内容をコピーして、SSH_PRIVATE_KEYの値として追加します。

Bitbucket Pipelineの設定

続いて、デプロイを自動化するための設定ファイルbitbucket-pipelines.ymlを記述します。このファイルはパイプラインを定義し、実行するタイミング、実行するコマンド、Kinstaサーバーへの接続方法を指定します。IDEでローカルに実行可能です。

設定の全貌は以下のとおりです。

pipelines:
  branches:
    main:
      - step:
          name: Kinstaへのデプロイ
          script:
            - pipe: atlassian/ssh-run:0.8.1
              variables:
                SSH_USER: $KINSTA_USERNAME
                SERVER: $KINSTA_SERVER_IP
                PORT: $PORT
                COMMAND: |
                  cd /www/your-site/public &&
                  git fetch origin main &&
                  git reset --hard origin/main
                SSH_KEY: $SSH_PRIVATE_KEY
                DEBUG: 'true'

パイプラインの設定の詳細

このパイプラインは、mainブランチに新しいプッシュがあるたびに、Kinsta サーバーへのデプロイを自動化するように設定されています。以下、各要素の概要をご紹介します。

  • パイプラインのトリガーpipelinesセクションは、mainブランチへのプッシュがトリガーとなるように設定されています。mainブランチへの新たなコミットがあると、自動的にデプロイが開始されます。
  • ステップ:わかりやすいように「Kinstaへのデプロイ」と名前を付け、主要なデプロイアクションが含まれる。
  • SSH-runパイプ:BitbucketがSSH経由でKinstaサーバーに接続し、リモートでコマンドを実行できるようにするために、atlassian/ssh-runパイプを使用します。このパイプはSSHセッションの設定、コマンドの実行、セッションのクローズのプロセスを簡素化するため、スクリプト内でSSHの詳細を手動で管理する必要はありません。
  • デプロイのコマンドCOMMANDブロックには、WordPressサイトに最新のコードをデプロイするコマンドが含まれています。各コマンドの詳細は以下のとおりです。
    • 最初のコマンドは、WordPressがホストされている本番ディレクトリに移動
    • 次に2番目のコマンドで、git fetch origin mainを実行し、Bitbucketのmainブランチから最新のコードをプル
    • 最後のコマンドは、メインブランチの最新のコードで本番サイトを更新

この設定は、Kinstaへの接続からサイトファイルの変更まで、デプロイのすべての側面を処理するため、Kinsta上のWordPressサイトは、mainにプッシュするたびに自動的に最新の状態に保たれます。

パイプラインをテストする方法

リポジトリのルートディレクトリにbitbucket-pipelines.ymlファイルを保存し、変更をコミットします。これをmainブランチにプッシュすると、パイプラインが自動的に起動し、デプロイプロセスが開始されます。

Bitbucket Pipelinesの管理画面で、デプロイの進捗を監視することができます。すべて正しく設定されていれば、BitbucketがKinstaサーバーに接続し、最新のコードを取得して、本番サイトにデプロイします。

Bitbucket Pipelinesのログ
Bitbucket Pipelinesのログ

トラブルシューティングのため、特にDEBUG"true"に設定されている場合は、Bitbucket Pipelinesのログを確認してください。ログには、各ステップに関する詳細な情報が記されており、接続や設定の問題を特定するのに役立ちます。

まとめ

BitbucketからKinstaへの自動デプロイを設定することで、手動変更の手間を省いて、WordPressサイトを最新の状態に保つことができます。Bitbucket PipelinesとKinstaサーバーを接続すると、リポジトリへのプッシュが即座に本番サイトに反映され、サイトがダウンするリスクを最小限に抑えながら、デプロイエラーも低減されます。

なお、Kinstaが提供するローカル開発ツール「DevKinsta」は、開発者向けのよりシンプルなソリューションです。パイプラインを設定することなく、ワンクリックでローカルの開発環境をKinstaに直接反映することができます。さらにデータベースの変更も含めることができるため、コードとコンテンツの両方を簡単に同期可能です。

Joel Olawanle Kinsta

Kinstaでテクニカルエディターとして働くフロントエンド開発者。オープンソースをこよなく愛する講師でもあり、JavaScriptとそのフレームワークを中心に200件以上の技術記事を執筆している。