Bitbucket Pipelines
Bitbucket CI/CD(継続的インテグレーション/継続的デリバリーまたは継続的デプロイメント)を使用すると、新たなコミットが指定されたブランチにプッシュされるたびに、コードの変更内容をKinstaサイトに自動的にデプロイすることができます。このセットアップは、SSHとBitbucket Pipeliinesを介してローカル環境からシームレスなコードデプロイを可能にし、サイトへの継続的な更新を可能にします。
以下の手順を実行するには、弊社でホスティングされている既存のサイトとBitbucketアカウントが必要になります。
1.サイトのバックアップをダウンロードする
サイトのバックアップをダウンロードしして、Bitbucketリポジトリを設定し、ローカルで作業を行うことができます。あるいは、DevKinstaを使用して弊社サーバーからサイトを取り込み、ローカルで作業することも可能です。
MyKinstaにログイン後、「WordPressサイト」>(サイト名)>「バックアップ」画面で「ダウンロード」タブを開いて、「ファイルを生成する」をクリックします。
バックアップの準備ができたら、「ダウンロード」をクリックして、ローカルコンピュータにファイルを保存し、解凍してフォルダを開きます。
2. Bitbucketリポジトリをセットアップする
任意のコードエディターで、サイトのファイルを含むフォルダを開きます。不要なWordPressコアファイル、メディアアップロード、機密情報のアップロードを防ぐため、プロジェクトのルートディレクトリに.gitignore
ファイルを追加してください。WordPress標準の.gitignoreテンプレートを使用して、その内容をコピーして保存すれば、必要なファイルだけが追跡されるようになります。
続いてBitbucketでワークスペースに移動して、新規リポジトリを作成します。「Include a README」と「Include .gitignore」は「No」に設定してください。リポジトリを作成したら、パイプラインを有効にします。リポジトリで「Settings」から「Enable Pipelines」を選択します。
3. SSH認証を設定する
Bitbucketのリポジトリに安全に接続するには、SSH認証を設定します。
以下のコマンドを使用して、ローカルマシンでSSH鍵ペアを生成します。[email protected]
はメールアドレスに置き換えてください。
ssh-keygen -t ed25519 -C "[email protected]"
鍵ペアは参照しやすい場所に保存します(~/.ssh/id_rsa_bitbucket
など)。
公開鍵(~/.ssh/id_rsa_bitbucket.pub
)を開いてコピーします。Bitbucketで、「Settings」>「Personal Bitbucket Settings」>「SSH Keys」>「Add key」を移動して、公開鍵の情報を貼り付けます。これで、マシンが安全にコードをプッシュできるようになります。
MyKinstaで同じ鍵を追加します。画面右上のユーザー名をクリックして、「ユーザー設定」>「SSH鍵」セクションの「SSH鍵を追加」移動し、同じ公開鍵の情報を貼り付け、「SSH鍵を追加」をクリックします。
4. コードをBitbucketにプッシュする
任意のコードエディターでサイトのファイルを含むフォルダを開き、以下のコマンドを使用してコードをBitbucketにプッシュします。your-username
とyour-repo
は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
5. MyKinstaでBitbucketへのSSH接続アクセスを設定する
弊社サーバーがBitbucketからコードをプルできるようにするには、サーバー上でSSH鍵を生成し、その公開鍵をBitbucketアカウントに追加します。
ターミナルを開き、MyKinstaのサイトの「情報」画面から「SSHターミナルのコマンド」を使用して弊社サーバーにSSH接続します。
サイトのパスワードを入力し、以下のコマンドを使ってSSH鍵を生成します。[email protected]
は実際のメールアドレスを置き換えます。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Enterキーを押して鍵をデフォルトの場所に保存し、プロンプトが表示されたらパスフレーズは空白のままにしてください。
6. SSH鍵をBitbucketに追加する
以下のコマンドで公開鍵ファイル(例:~/.ssh/id_rsa.pub
)の内容にアクセスします。
cat ~/.ssh/id_rsa.pub
出力内容全体をコピーし、Bitbucketで「Settings」>「Bitbucket Settings」>「SSH Keys」>「Add key」と進み、公開鍵を追加します。これで、弊社サーバーがBitbucketリポジトリに安全にアクセスできるようになります。
7. KinstaサーバーでSSHを使用するようにGitを設定する
MyKinstaのサイトの「情報」画面を開き、「環境情報」セクションの「パス」をコピーします。
ターミナルで、以下のコマンドを実行してサイトの本番ディレクトリに移動します。/www/your-site/public
はMyKinstaでコピーしたパスに置き換えてください。
cd /www/your-site/public
そのディレクトリをGitリポジトリとして初期化し、以下のコマンドでSSHを使用するようにリモートURLを設定します。your-username
とyour-repo
は、それぞれBitbucketのユーザー名とリポジトリに置き換えてください。
git init
git remote add origin [email protected]:your-username/your-repo.git
最後に以下のコマンドを実行し、SSHの設定を確認します。
ssh -T [email protected]
設定に問題がない場合は、「authenticated via ssh key. You can use git to connect to Bitbucket. Shell access is disabled(SSH鍵を使用して認証されました。Gitを使用してBitbucketに接続できます。シェルアクセスは無効化されています)」というメッセージが表示されます。これで弊社サーバーが、Bitbucket Pipelinesを通じてBitbucketから直接変更を取得し、デプロイするようになります。
8. Bitbucketに環境変数を追加する
Kinstaの機密情報を安全に保存するには、Bitbucketに環境変数を追加してください。MyKinstaで、「WordPressサイト」>(サイト名)>「情報」>「SFTP/SSH」セクションにある「ホスト」「ポート」「ユーザー名」が必要になります。
Bitbucketで、「Repository Settings」>「Repository Variables」に移動して、以下を追加します。
KINSTA_USERNAME
:MyKinsta「SFTP/SSH」セクションの「ユーザー名」です。Bitbucket Pipelinesはこれを使用してログインし、デプロイコマンドを実行します。KINSTA_SERVER_IP
:MyKinsta「SFTP/SSH」セクションの「ホスト」です。Bitbucket Pipelinesはこれを使用してデプロイのために接続するサーバーを把握します。PORT
:MyKinsta「SFTP/SSH」セクションの「ポート」です。弊社サーバーが使用するカスタムポートをここで指定する必要があります。SSH_PRIVATE_KEY
:ローカルマシンのBase64エンコードされたSSH秘密鍵です。Bitbucket Pipelinesは、この鍵を使用して弊社サーバーを認証します。秘密鍵をBase64でエンコードするには、以下のコマンドを実行して出力内容をコピーし、値として追加します。cat ~/.ssh/id_rsa | base64
9. Bitbucket Pipelineの設定
デプロイを自動化するには、bitbucket-pipelines.yml
設定ファイルを作成する必要があります。サイトのファイルを含むローカルフォルダにbitbucket-pipelines.yml
という新規ファイルを設定し、your-site
をKinstaサイトのパスからフォルダ名に置き換えて、以下の内容をファイルに追加します。
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
ブランチに変更がプッシュされるたびに、弊社サーバーに自動的にデプロイされるように設定されています。ワークフローは以下のようになります。
- パイプラインのトリガー:
pipelines
セクションは、main
ブランチへのプッシュがトリガーとなるように設定されています。main
ブランチへの新たなコミットがあると、自動的にデプロイが開始されます。 - ステップ:わかりやすいように「Kinstaへのデプロイ」と名前を付け、主要なデプロイアクションが含まれます。
- SSH-runパイプ:
atlassian/ssh-run
パイプを使用して、BitbucketがSSH経由で弊社サーバーに接続し、リモートでコマンドを実行できるようにします。このパイプはSSHセッションの設定、コマンドの実行、セッションのクローズのプロセスを簡素化するため、スクリプト内でSSHの詳細を手動で管理する必要はありません。 - デプロイメントコマンド:
COMMAND
ブロックには、WordPressサイトに最新のコードをデプロイするコマンドが含まれています。各コマンドの詳細は以下のとおりです。- 最初のコマンドは、WordPressがホストされている本番ディレクトリに移動します。
- 次に2番目のコマンドで、
git fetch origin main
を実行し、Bitbucketのmainブランチから最新のコードをプルします。 - 最後のコマンドは、メインブランチの最新のコードで本番サイトを更新します。
この設定は、弊社への接続からサイトファイルの更新まで、デプロイのすべての側面を処理するため、弊社でホスティングするWordPressサイトは、main
にプッシュするたびに自動的に最新の状態に保たれます。
10. パイプラインをテストする
bitbucket-pipelines.yml
設定ファイルをmain
ブランチにコミットしてプッシュします。これでパイプラインが自動的にトリガーされ、デプロイプロセスが開始されます。Bitbucket Pipelinesの管理画面でデプロイの進捗を監視できます。すべてが正しく設定されていれば、Bitbucketは弊社サーバーに接続し、最新のコードを取得して、本番サイトにデプロイします。
トラブルシューティングのため、特にDEBUG
が"true"
に設定されている場合は、Bitbucket Pipelinesのログを確認してください。ログには、各ステップに関する詳細な情報が記されており、接続や設定の問題を特定するのに役立ちます。
パイプラインが弊社サーバーに正しく接続されていない場合、リモートURLがSSHではなくHTTPSに設定されている可能性があります。確認するには、弊社サーバーにSSHで接続し、サイトのディレクトリで以下のコマンドを実行します。
git remote -v
ssh://
の代わりにhttps://
が表示される場合は、SSH鍵を認証に使用するため、リモートURLを更新する必要があります。以下のコマンドを実行して、SSHに切り替えてください。
git remote set-url origin [email protected]:your-username/your-repo.git
URLの更新後、変更を再度プッシュすると、パイプラインがSSH鍵を使って接続するようになります。