Laravel と Bitbucket Pipelines

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

このガイドでは、Bitbucket Pipelines を使用して、Docker コンテナで Laravel を使用するプロジェクトをビルドおよびテストする方法について説明します。

実際に動作するパイプラインを持つデモ リポジトリをインポートしたい場合、デモ用の laravel リポジトリをご参照ください。
デモ リポジトリのインポート手順

  1. bitbucket.org にアクセスしてログインし、このリポジトリをインポートします。その後、次の操作を行います。

    gif のインポート

  2. 左側のナビゲーション バーで [Pipelines] をクリックし、下にスクロールして bitbucket-pipelines.yml ファイルを表示します。[有効化] をクリックします。

    gif の有効化

  3. ビルドが実行されるのを確認します。

    gif のビルド

注意: Bitbucket Pipelines には、アカウントごとに 50 分の無料利用時間が含まれています (本記事の執筆時点での情報)。自身のアバター > [Bitbucket 設定] > [プランの詳細] で、その月のチームまたはアカウントの時間の使用量を、分単位で確認できます。



手動でセットアップしたい場合、構成の大部分は Pipelines がビルドを定義するために使用する bitbucket-pipelines.yml ファイル内で行います。

動作の仕組み

Bitbucket Pipelines はビルド構成を  bitbucket-pipelines.yml という名前の YAML ファイルに保管します。

bitbucket-pipelines.yml ファイルはご使用のリポジトリ内にあります。

リポジトリへのプッシュが実行されると、Pipelines は Docker イメージでビルドを実行します。

bitbucket-pipelines.yml ファイルで、プロジェクトで必要とされる依存関係を指定します。


quickstart リポジトリを Bitbucket にインポートする

https://github.com/laravel/quickstart-basic.git リポジトリを Bitbucket にインポートします。

  • Bitbucket で をクリックしてから、[リポジトリ] > [リポジトリのインポート] の順にクリックします。

ここでは、リポジトリ名として laravel-quickstart-basic を使用しています。


Bitbucket Pipelines の有効化

  • 新しいリポジトリで、[Pipelines] をクリックして、[無料で使用開始する] をクリックします。


リポジトリのクローン

  • 新しい Bitbucket リポジトリをご使用のローカル マシンにクローンします。
git clone git@bitbucket.org:<username>/laravel-quickstart-basic.git

bitbucket-pipelines.yml 構成ファイルをリポジトリに追加する

ここでは既定のパイプラインを構成します。このパイプラインでは以下を行います。

  • 7.2-fpm Docker イメージを使用
  • OS パッケージからの依存関係 (git、curl) のインストール
  • mcrypt および mysql の PHP 拡張機能のインストール
  • Composer のインストール
  • Composer を使用して PHP 依存関係をインストール
  • 使用するキャッシュ、セッション データ ストア、およびデータベースを制御する変数を設定
  • Artisan を使用してデータベースの移行およびアプリケーションの開始をバックグラウンドで実行
  • アプリケーションを開始するために 5 秒間スリープ
  • curl を使用し、すべてのものが接続され、動作していることを確認
  • PHPunit の実行

以下は、これらをすべて実行する構成ファイルです。

bitbucket-pipelines.yml
image: php:7.2-fpm

pipelines:
  default:
    - step:
        script:
          - apt-get update && apt-get install -qy git curl libmcrypt-dev mysql-client
          - yes | pecl install mcrypt-1.0.1
          - docker-php-ext-install pdo_mysql
          - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
          - composer install
          - ln -f -s .env.pipelines .env
          - php artisan migrate
          - php artisan serve &
          - sleep 5
          - ./vendor/bin/phpunit
          - curl -vk http://localhost:8000
        services:
          - mysql

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

アトラシアンのオンライン バリデーターでご使用の bitbucket-pipelines.yml ファイルをチェックできます


外部の依存関係を構成する

Laravel は RDBMS (既定では MySQL) を使用してアプリケーションの状態を保存します。

コミュニティが管理するイメージからコンテナを実行するために Bitbucket Pipelines サービス コンテナを使用できます。

MySQL の定義は少し難易度が高くなります。

bitbucket-pipelines.yml スニペット
definitions:
  services:
    mysql:
      image: mysql:5.7
      environment:
        MYSQL_DATABASE: 'homestead'
        MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
        MYSQL_USER: 'homestead'
        MYSQL_PASSWORD: 'secret'


アトラシアンでは、MySQL 用に次の変数を定義しています: MYSQL_DATABASE、MYSQL_RANDOM_ROOT_PASSWORD、MYSQL_USER、MYSQL_PASSWORD。
これらは、MySQL の初期化プロセスに対して、"homestead" という名前のデータベースと、ユーザー "homestead"、パスワード "secret" を作成し、root ユーザーにはランダムなパスワードを割り当てるように支持します。これらの値は config/database.php の内容と一致している必要があります。

config/database.php
'mysql' => [
  'driver'    => 'mysql',
  'host'      => env('DB_HOST', 'localhost'),
  'database'  => env('DB_DATABASE', 'forge'),
  'username'  => env('DB_USERNAME', 'forge'),
  'password'  => env('DB_PASSWORD', ''),
  'charset'   => 'utf8',
  'collation' => 'utf8_unicode_ci',
  'prefix'    => '',
  'strict'    => false,
  'engine'    => null,
],


その後、以下に示すように、リポジトリのルートに .env.pipelines ファイルを作成します。bitbucket-pipelines.yml ファイルはこれを、プロジェクトのルート内の既定の .env にコピーします。

.env.pipelines
APP_ENV=local
APP_KEY=ThisIsThe32CharacterKeySecureKey
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret


リポジトリにコミットする前に .env.pipelines ファイルを追加する必要があります。

git add .env.pipelines

ソース コントロールにコミットする資格情報はテスト目的でのみ使用し、本番システムとの共有は行わないことをおすすめします。

リポジトリにプッシュする

Bitbucket のリポジトリへのコミットおよびプッシュを実行すると、Pipelines が自動でビルドを実行します。


これで、次の Laravel プロジェクトをビルドするための開始点を準備できました。
最終更新日 2019 年 1 月 2 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.