Laravel と Bitbucket Pipelines

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

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

手動でセットアップしたい場合、構成の大部分は 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 リポジトリをご使用のローカル マシンにクローンします。

1 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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 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'

Atlassian のオンライン バリデーターでご使用の bitbucket-pipelines.yml ファイルを確認できます。

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

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

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

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

bitbucket-pipelines.yml スニペット

1 2 3 4 5 6 7 8 9 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

1 2 3 4 5 6 7 8 9 10 11 12 '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

1 2 3 4 5 6 7 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 ファイルを追加する必要があります。

1 git add .env.pipelines

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

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

Bitbucket のリポジトリへのコミットおよびプッシュを実行すると、Pipelines が自動でビルドを実行します。これで、次の Laravel プロジェクトをビルドするための開始点を準備できました。

その他のヘルプ