0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

BitbucketのPiplinesを使ってCD(継続的デリバリー)を実装する

友人との開発で、Owntimeを作っています。
このサービスは、時間の使い方を管理して、生活の振り返りをするきっかけを作ってくれます⏰「最近、生活の振り返りができていないな〜」っていう方は、ぜひ、一度使ってみてください!!

さて、今回は、Owntimeの開発業務効率化のために実装した、CD(継続的デリバリー)についてまとめました。
リリース作業は、単純操作が多くて、面倒になることが多いので、自動化したいと思う方が多いと思います。そのような方々に向けた記事になっています。

参考記事: Bitbucket Pipelinesで継続的デプロイ

Bitbucketの設定

まず、Bitbucket上で設定を進めます。

  • Piplinesを有効化する
    • サイドバーの「設定」->「Settings」->「Enable Pipelines」を有効化する
  • 新しいSSH Keyを登録する
    • サイドバーの「設定」->「SSH Keys」->「generate keys」を押下する
    • 生成された Public keyを仮想サーバーの ~/.ssh/authorized_keys に追記する
    • 「Known hosts」の「Host address」に仮想サーバーのIPを入力して「Fetch」を押下する
    • Fetchが成功したら、 Figerprint ができるので、「add host」を押下する

bitbucket-piplines.ymlを作成

サイドバーにある「Piplines」を押下すると下記の画面になります。

さらに「Python」を選択すると、 bitbucket-piplines.yml のテンプレートが表示されます。

Image from Gyazo

bitbucket-piplines.yml は、下記のように編集します。

bitbucket-pipelines.yml
image: python:3.7.3

pipelines:
  branches:
    master:
      - step:
          name: Release to live server
          script:
            - ssh -p $DEPLOY_SERVER_PORT $BITBUCKET_BRANCH@$DEPLOY_SERVER_IP bash < deploy.sh

さらに、仮想サーバー内で実行するコマンドは、 deploy.sh に記入します。

(deploy.shを用意するのは、イマドキではないと言われることがあるので、時間に余裕ができたら、改修する予定です。)

deploy.sh
#!/bin/bash

cd /path/to/project

export VENV_HOME_DIR=$(pipenv --venv)
source $VENV_HOME_DIR/bin/activate

git pull origin master

pip install -r requirements.txt

pkill gunicorn
gunicorn owntime.wsgi -D

echo "Deployed! Thank you!!"

これで、実装が完了です。

masterブランチにマージしてみてください。
「Piplines」を押下すると、成功しているのか失敗してしまったのか、が表示されています!

今後の修正点

deploy.sh の途中の処理に失敗しても、最後のコマンドまで実行されて、Bitbucket上では、 Successful になってしまいます。

なので、処理が失敗したら、Bitbucket上で、 Failed にするような変更をしていきたいです。

image.png

おまけ

今回紹介したTipsを使って、友人とOwntimeを開発しています。
毎日の時間の使い方を記録して、分析して、理想な時間の使い方に近づけるサポートをするサービスです。

ぜひ、一度使ってみてください!

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?