Bitbucket Pipelinesを使ってrsyncによるデプロイを設定してみた
現状
自分が仕事で管理しているとあるサーバでのデプロイ方法は、そのサーバにログインしてデプロイ用のシェルスクリプトを実行することで実現しています。
そのデプロイ用のシェルスクリプトでは
- 作業用ディレクトリを作成
- 作業用ディレクトリ内でgit pullを実行して本番用のソースコードをダウンロード
- 本番用のソースコードをrsyncでwebサーバのDocumentRoot配下にコピー
- 作業用ディレクトリを削除
といった手順でデプロイが行われます。
今回のゴール
デプロイ対象のソースコードはBitbucketで管理しているので、今回は「Bitbucket Pipelines」を使うことでデプロイ対象ブランチにpushされたタイミングでデプロイ(rsyncのパイプを利用)が行われるように設定してみます。
Bitbucket Pipelines機能の有効化
Bitbucketのリポジトリで初めてPipelinesを利用する場合は、Pipelinesの機能が無効化されていますので、まずは有効化する必要があります。
「Repository settings」の画面を開きます。
PIPELINESのメニューから「Settings」を選択して、「Enable Pipelines」をクリックして有効化します。
有効化するとスイッチが緑色に反転し「Configure bitbucket-pipelines.yml」のボタンが表示されるのでこれで準備OKです。
「Configure bitbucket-pipelines.yml」のボタンをクリックするとリポジトリの「Pipelines」の画面に遷移しますが、bitbucket-pipelines.ymlはまだ作成していないので特に何も起きません。
メニューから「Deployments」を選択すると「bitbucket-pipelines.yml」のデフォルト設定が表示されます。
設定手順
今回はrsyncのパイプを使いたいので、「Add Pipes (Integrations)」の「Explore more pipes」をクリックします。
Discover pipesの検索欄で「rsync」と入力するとAtlassianが提供している「RSYNC Deploy」が該当します。
「RSYNC Deploy」のパイプをクリックすると設定例が表示されます。Variablesの説明を見るとrsyncのために必要な値がわかりますので適宜これらを設定していきます。
「(*) = required variable.」の記載の通り「*」が表示されているSERVER、USER、REMOTE_PATH、LOCAL_PATHは必須項目ですので、このあたりを環境変数として設定します。
もちろんbitbucket-pipelines.yml内に値を直接記述しても構いませんが、デプロイ先のディレクトリやサーバの変更が発生する場合を考慮すると、環境変数に設定しておく方が変更が容易かと思います。
設定は、Configureの「Add variables」から行うか、
もしくは、「Repository settings」の「Repository variables」から行います。
デプロイ先のサーバアドレスなど同じ環境変数名でもデプロイ先の環境毎によって変数の値を変更したい場合があるかと思います。
そういった場合は、「Repository settings」の「Deployments」から環境毎に設定可能です。
デプロイサーバへSSHするための鍵の設定は「Repository settings」の「SSH keys」から行います。
新規に作成する場合は「Generate keys」、既存の鍵を利用する場合は「Use my own keys」を選択します。
今回は既存の鍵を利用するので「Use my own keys」をクリックして設定画面を開き、秘密鍵と公開鍵の入力が終わったら「Save key pairs」をクリックします。
「Host address」の欄は「サーバアドレス:ポート番号」の形式で入力して「Fetch」ボタンをクリックします。
※デプロイ先のサーバでIP制限を行っている場合は「What are the IP addresses to configure a corporate firewall?」のページに記載されている「Valid IP addresses for Bitbucket Pipelines build environments」のIPからのアクセスを許可しておく必要があります。
fingerprintが表示されたら「Fetch」ボタンのラベルが「Add host」に切り替わるのでクリックします。
Host addressとFingerprintがこのように表示されたら鍵の設定は完了です。
ここまで準備ができたらあとはリポジトリの直下に「bitbucket-pipelines.yml」を準備するだけです。
「RSYNC deploy」のREADMEに記載されているExamplesのコードを参考にしつつ、以下のような内容にしました。
今回は「masterブランチ」にpushされると「deployment: Staging」の環境変数の内容を元にステージング環境へデプロイ(rsync)するという設定になっています。
今後、本番環境へのデプロイ設定を追加する場合はbranchesの下に「productionブランチ」に関する内容を追加するとよいでしょう。
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の処理に成功すると以下のような表示になります。
参考URL
Author And Source
この問題について(Bitbucket Pipelinesを使ってrsyncによるデプロイを設定してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/akase244/items/ddf2198d8f450df1755c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .