Bitbucketのpipelinesを使ったCoreServerへの自動デプロイ(Dev/Ops)

領収書作成WEBサービス(下記)を作成した際、修正を行うたびにファイルへFTP転送する作業が面倒であったため、
自動で本番環境へソース配置できるように工夫した話。

領収書作成WEBサービス – 無料でPDFの領収書を発行

 

前提となる環境は、下記の通り。

  • Bitbucketを利用してソース管理をしている。
  • 本番環境にCoreServerを使っている(FTPが使えるレンタルサーバならどこでもOKと思う)
  • デプロイしたいアプリケーションはコンパイルが不要(静的ファイル配置)
  • データベースの利用もない

 

以下のサイトを参考にさせて頂きました

Bitbucket へ Push すると Pipelines が発動して FTP

 

pipelinesを使ったCoreServerへの自動デプロイ全体像

 

pipelinesを使ったCoreServerへの自動デプロイ(Dev/Ops)の流れについてです。

 

  1. ローカルでソースの変更後「①Commit」を実施
  2. Bitbucketのリモートリポジトリに「②Push」し、ソース更新
  3. Piplineが変更を「③検知」し、本番への反映を開始(キューイング)
  4. リポジトリに格納されている「④bitbucket-pipelines.ymlの内容をpiplineが確認」
  5. bitbucket-pipelines.ymlの内容に従って「⑤本番環境へGIT FTP」を実行

 

 

Bitbucket側での設定(ほとんどこれ)

 

上記を実現するための手順です。とても簡単です。

 

Repository variables環境変数の登録

 

次の手順で作成するbitbucket-pipelines.ymlでは、ユーザID/パスワードを環境変数から取得します。

そのため、事前に環境変数に以下の値を登録しておきます。

 

  • FTP_PASSWORD
  • FTP_USERNAME

 

 

値の登録は、NameとValueを設定して、ADDを押します。

 

 

bitbucket-pipelines.ymlの作成

 

次に、bitbucket-pipelines.ymlを作成します。

「設定」から「Deployments」を選び、表示される「Edit YAML configuration」を押します。

 

 

未作成の場合は、「ファイルの追加」を行い、「bitbucket-pipelines.yml」を新規作成します。

 

 

設定は下記の通りです。

imageのところも変更は必要ありません。

git ftpを実行するため環境としてdebian(linux)を利用しているだけです。

「XXXXXXXXXXXX」のところはご自身の環境に合わせて変更が必要です。

 

初回だけ「git init」にしています。

 

image: samueldebruyn/debian-git


pipelines:
  branches:
    master:
      - step:
          script:
            - echo "Pipeline Init"
            - apt-get update
            - apt-get -qq install git-ftp
            - echo "Initiating Push"
            - git ftp init --user $FTP_USERNAME --passwd $FTP_PASSWORD m9.coreserver.jp/public_html/XXXXXXXXXXXX
            - echo "Done Pushing"

 

 

bitbucket-pipelinesの動作確認

 

あとはリポジトリを更新するだけで、自動で本番環境へ反映されるはずです。

 

 

2回目以降はbitbucket-pipelines.ymlの「git init」→「git push」にして、差分反映を行います。

 

image: samueldebruyn/debian-git


pipelines:
  branches:
    master:
      - step:
          script:
            - echo "Pipeline Init"
            - apt-get update
            - apt-get -qq install git-ftp
            - echo "Initiating Push"
            - git ftp push --user $FTP_USERNAME --passwd $FTP_PASSWORD m9.coreserver.jp/public_html/XXXXXXXXXXXX
            - echo "Done Pushing"

 

所感

こんなに簡単にDev/Ops環境が作成できるとは、本当に便利な世の中になりました。

bitbucket最強。

About: ken


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください