0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Bitbucket Pipelinesを使ってrsyncによるデプロイを設定してみた

Last updated at Posted at 2020-12-25

現状

自分が仕事で管理しているとあるサーバでのデプロイ方法は、そのサーバにログインしてデプロイ用のシェルスクリプトを実行することで実現しています。

そのデプロイ用のシェルスクリプトでは

  1. 作業用ディレクトリを作成
  2. 作業用ディレクトリ内でgit pullを実行して本番用のソースコードをダウンロード
  3. 本番用のソースコードをrsyncでwebサーバのDocumentRoot配下にコピー
  4. 作業用ディレクトリを削除

といった手順でデプロイが行われます。

今回のゴール

デプロイ対象のソースコードはBitbucketで管理しているので、今回は「Bitbucket Pipelines」を使うことでデプロイ対象ブランチにpushされたタイミングでデプロイ(rsyncのパイプを利用)が行われるように設定してみます。

Bitbucket Pipelines機能の有効化

Bitbucketのリポジトリで初めてPipelinesを利用する場合は、Pipelinesの機能が無効化されていますので、まずは有効化する必要があります。

「Repository settings」の画面を開きます。
スクリーンショット_2020-12-24_11_29_22.png

PIPELINESのメニューから「Settings」を選択して、「Enable Pipelines」をクリックして有効化します。
スクリーンショット_2020-12-24_11_33_45.png

有効化するとスイッチが緑色に反転し「Configure bitbucket-pipelines.yml」のボタンが表示されるのでこれで準備OKです。
スクリーンショット 2020-12-24 11.37.03.png

「Configure bitbucket-pipelines.yml」のボタンをクリックするとリポジトリの「Pipelines」の画面に遷移しますが、bitbucket-pipelines.ymlはまだ作成していないので特に何も起きません。
スクリーンショット_2020-12-24_11_41_32.png

メニューから「Deployments」を選択すると「bitbucket-pipelines.yml」のデフォルト設定が表示されます。
スクリーンショット_2020-12-24_11_46_11.png

設定手順

今回はrsyncのパイプを使いたいので、「Add Pipes (Integrations)」の「Explore more pipes」をクリックします。
スクリーンショット_2020-12-24_12_34_01.png

Discover pipesの検索欄で「rsync」と入力するとAtlassianが提供している「RSYNC Deploy」が該当します。
スクリーンショット_2020-12-24_12_37_10.png

「RSYNC Deploy」のパイプをクリックすると設定例が表示されます。Variablesの説明を見るとrsyncのために必要な値がわかりますので適宜これらを設定していきます。
スクリーンショット 2020-12-24 14.25.57.png

「(*) = required variable.」の記載の通り「*」が表示されているSERVER、USER、REMOTE_PATH、LOCAL_PATHは必須項目ですので、このあたりを環境変数として設定します。
もちろんbitbucket-pipelines.yml内に値を直接記述しても構いませんが、デプロイ先のディレクトリやサーバの変更が発生する場合を考慮すると、環境変数に設定しておく方が変更が容易かと思います。

設定は、Configureの「Add variables」から行うか、
スクリーンショット_2020-12-24_14_21_20.png
もしくは、「Repository settings」の「Repository variables」から行います。
スクリーンショット_2020-12-24_14_22_21.png

デプロイ先のサーバアドレスなど同じ環境変数名でもデプロイ先の環境毎によって変数の値を変更したい場合があるかと思います。
そういった場合は、「Repository settings」の「Deployments」から環境毎に設定可能です。
スクリーンショット_2020-12-25_10_06_36.png

デプロイサーバへSSHするための鍵の設定は「Repository settings」の「SSH keys」から行います。
新規に作成する場合は「Generate keys」、既存の鍵を利用する場合は「Use my own keys」を選択します。
スクリーンショット_2020-12-24_17_12_34.png

今回は既存の鍵を利用するので「Use my own keys」をクリックして設定画面を開き、秘密鍵と公開鍵の入力が終わったら「Save key pairs」をクリックします。
スクリーンショット 2020-12-24 17.56.19.png

保存されるとこのように表示が切り替わります。
スクリーンショット_2020-12-24_17_51_01.png

「Host address」の欄は「サーバアドレス:ポート番号」の形式で入力して「Fetch」ボタンをクリックします。
スクリーンショット 2020-12-24 17.57.34.png

※デプロイ先のサーバでIP制限を行っている場合は「What are the IP addresses to configure a corporate firewall?」のページに記載されている「Valid IP addresses for Bitbucket Pipelines build environments」のIPからのアクセスを許可しておく必要があります。

fingerprintが表示されたら「Fetch」ボタンのラベルが「Add host」に切り替わるのでクリックします。
スクリーンショット_2020-12-24_17_38_35.png

Host addressとFingerprintがこのように表示されたら鍵の設定は完了です。
スクリーンショット_2020-12-24_17_40_07.png

ここまで準備ができたらあとはリポジトリの直下に「bitbucket-pipelines.yml」を準備するだけです。
RSYNC deploy」のREADMEに記載されているExamplesのコードを参考にしつつ、以下のような内容にしました。
今回は「masterブランチ」にpushされると「deployment: Staging」の環境変数の内容を元にステージング環境へデプロイ(rsync)するという設定になっています。
今後、本番環境へのデプロイ設定を追加する場合はbranchesの下に「productionブランチ」に関する内容を追加するとよいでしょう。

bitbucket-pipelines.yml
image: atlassian/default-image:2

pipelines:
  branches:
    master:
      - step:
          deployment: Staging
          script:
            - pipe: atlassian/rsync-deploy:0.4.4
              variables:
                USER: $RSYNC_USRE
                SERVER: $RSYNC_SERVER
                REMOTE_PATH: $RSYNC_REMOTE_PATH
                LOCAL_PATH: $RSYNC_LOCAL_PATH
                DEBUG: 'true'
                SSH_PORT: $RSYNC_SSH_PORT
                EXTRA_ARGS: $RSYNC_EXTRA_ARGS

Pipelinesの処理に成功すると以下のような表示になります。

Pipelines(一覧画面)
スクリーンショット_2020-12-25_16_11_42.png

Pipelines(詳細画面)
スクリーンショット_2020-12-25_16_11_56.png

Deployments(一覧画面)
スクリーンショット_2020-12-25_16_12_06.png

Deployments(詳細画面)
スクリーンショット_2020-12-25_16_20_51.png

参考URL

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?