Laravel と Bitbucket Pipelines

お困りですか?

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

コミュニティに質問

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

If you'd prefer to quickly import our demo repository with a working pipeline to experiment with, have a look at our demo laravel repo.
Instructions to import the demo repo

  1. Import this repository by visiting bitbucket.org and log in. Then:

    Import gif

  2. On the left navigation bar, click Pipelines and scroll down to view the bitbucket-pipelines.yml file. Click Enable

    Enable gif

  3. Watch your build run!

    Build gif

Note: Bitbucket Pipelines includes fifty free minutes per account, at the time of writing. You can check your team or account's minutes usage for the month by clicking your Avatar > Bitbucket settings > Plan details.



If you'd like to set it up by hand, most of the configuration happens in the bitbucket-pipelines.yml file that Pipelines uses to define the build.

動作の仕組み

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 構成ファイルをリポジトリに追加する

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

  • use the 7.2-fpm Docker image
  • OS パッケージからの依存関係 (git、curl) のインストール
  • mcrypt および mysql の PHP 拡張機能のインストール
  • Composer のインストール
  • Composer を使用して PHP 依存関係をインストール
  • set variables to control which cache, session data store, and database we use
  • 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'


We define variables for MySQL:  MYSQL_DATABASE, MYSQL_RANDOM_ROOT_PASSWORD, MYSQL_USER and MYSQL_PASSWORD.
These instruct the MySQL initialization process to create a database named 'homestead' with a user 'homestead' with password 'secret', and to assign a random password to the root user. These values must match the contents of 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,
],


Then create an .env.pipelines file in the root of the reposity, as shown below. The bitbucket-pipelines.yml file copys this into the default .env location in the root of the project.

.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


Make sure you add the .env.pipelines file before committing to the repo:

git add .env.pipelines

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

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

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


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

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

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