LoginSignup
3
4

More than 5 years have passed since last update.

Bitbucket Pipelines を使ってみたメモ書き

Last updated at Posted at 2017-09-21

Bitbucket で自動実行が出来る Pipeline があるので使ってみたので、それのメモ書き。

2017/09/21現在の事なので、今後機能が増えたり変更されたりする可能性はあるかも。

see: Build, test and deploy with Pipelines - BitBucket Support

PipeLineの特徴

  1. Docker コンテナ上で指定コマンドを実行
  2. 実行トリガーは、bitbucketにpushするか、スケジュール指定ができる
  3. 無料プランでも使える。
    1. 実行時間に上限がある。課金で上限を上げられる。
    2. BitBucketのPipelineで動かす時間の事を「ビルド時間」と書かれている。

プラン

クラウドの方で計算している。自社ホストタイプの場合はよくわからない。

時間はプロジェクト単位ではなく、BitBucketアカウント単位になる。一つのチームに5人いて、プロジェクトが10個あった時、チームが登録しているプロジェクトの場合は、それらのプロジェクトの実行時間はチームに加算される。

これ以上の細かいことはわからんから、Atlasianの人に聞いてくれ。

プラン 時間
無料アカウント 50分/月
アカデミック 500分/月
スタンダード 500分/月
プレミアム 1000分/月

see: Pricing bitbucket

機能特徴

  1. Docker コンテナを指定してそのイメージ上で動かす。
    1. ただ windows はまだ未対応。頑張ってるぽい。
    2. 実行環境の上限
      1. 4GB Ram
      2. 実行時間は最長で2時間
      3. 5GBのディスクスペース
  2. SSH-Key指定ができるから、外部サーバにログインして云々も可能
    1. 要はデプロイできるやで
  3. 実行方法は、時間指定の定期実行と、git-pushのトリガーで実行させる二種類がある。
    1. 二種類を組み合わせることも可能。実行時間がエライことになると思うけど。
  4. キャッシュ機能がある
    1. まだよく理解してない。
    2. composer とかの実行結果とか、composerそのもののを毎回入れるのは実行時間くうだけだから、一度使ったらどこかに持たせてキャッシュさせる機能ぽい。
    3. see: https://confluence.atlassian.com/bitbucket/caching-dependencies-895552876.html

書式

リポジトリのトップディレクトリに bitbucket-pipelines.yml という名前で yaml 書式のファイルを保存をする。

例えば、PHPで、gdやmysqlを使っていて、とりあえずいろんなものを使っていて、git-pushした時に自動実行する場合。

bitbucket-pipelines.yml
image: php:7.1.1
pipelines:
  default:
    - step:
        script:
          - apt-get update && apt-get install -y unzip libfreetype6-dev libjpeg62-turbo-dev libpng12-dev
          - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
          - docker-php-ext-install -j$(nproc) gd
          - docker-php-ext-install mcrypt && docker-php-ext-install pdo_mysql && docker-php-ext-install zip
          - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
          - composer install
          - vendor/bin/phpunit
        services:
          - mysql
  unittest:
    - step:
        script:
          - apt-get update && apt-get install -y unzip libfreetype6-dev libjpeg62-turbo-dev libpng12-dev
          - docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
          - docker-php-ext-install -j$(nproc) gd
          - docker-php-ext-install mcrypt && docker-php-ext-install pdo_mysql && docker-php-ext-install zip
          - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
          - composer install
          - vendor/bin/phpunit
        services:
          - mysql

definitions:
  services:
    mysql:
      image: mysql
      environment:
        MYSQL_DATABASE: 'homestead'
        MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
        MYSQL_USER: 'homestead'
        MYSQL_PASSWORD: 'secret'

時間指定

bitbucket の指定リポジトリにある Pipelinesから設定できます。設定するには bitbucket-pipelines.ymlpipelines 以下に default 以外の名前でステップを書いた実行計画がないといけません。上の例の場合だと、 unittestだけが設定できます。

週指定の設定例。

スクリーンショット 2017-09-21 12.44.49.png

ここで力尽きた、何か書きたいことができたら追記してく。

todo: workflowの事

3
4
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
3
4