Bitbucket Pipelines

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

以下の手順を実行するには、弊社でホスティングされている既存のサイトとBitbucketアカウントが必要になります。

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

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

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

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

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

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」を移動して、公開鍵の情報を貼り付けます。これで、マシンが安全にコードをプッシュできるようになります。

SSH鍵をBitbucketの設定に追加
SSH鍵をBitbucketの設定に追加

MyKinstaで同じ鍵を追加します。画面右上のユーザー名をクリックして、「ユーザー設定」>「SSH鍵」セクションの「SSH鍵を追加」移動し、同じ公開鍵の情報を貼り付け、「SSH鍵を追加」をクリックします。

4. コードをBitbucketにプッシュする

任意のコードエディターでサイトのファイルを含むフォルダを開き、以下のコマンドを使用してコードをBitbucketにプッシュします。your-usernameyour-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ターミナルのコマンド
サイトのSSHターミナルのコマンド

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

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

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

SSH鍵を生成
SSH鍵を生成

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-usernameyour-repoは、それぞれBitbucketのユーザー名とリポジトリに置き換えてください。

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

最後に以下のコマンドを実行し、SSHの設定を確認します。

設定に問題がない場合は、「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」セクションにある「ホスト」「ポート」「ユーザー名」が必要になります。

「SFTP/SSH」セクションのホスト、ポート、ユーザー名
「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鍵を使って接続するようになります。

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