circle CI 2.0 で PHP の CI 環境を構築する

CircleCI 2.0 を利用して PHP の CI 環境を構築する手法を紹介していきます。

CircleCI で PHP 環境を構築する際には 以下のドキュメントが参考になります。

https://circleci.com/docs/2.0/language-php/#pre-built-circleci-docker-images

純粋なPHPのプロジェクト向けに簡易化したものが以下になります。

version: 2
jobs: 
  build: 
    docker: 
      - image: circleci/php:7.2.5-apache-node-browsers 
        environment:
          APP_ENV: circleci
          APP_DEBUG: true
          DB_CONNECTION: sqlite
    working_directory: ~/laravel 
    steps: 
      - checkout 
      - run: sudo apt install -y libsqlite3-dev zlib1g-dev
      - run: sudo composer self-update
      - restore_cache: 
          keys:
            - composer-v1-{{ checksum "composer.lock" }}
            - composer-v1-
      - run: composer install
      - save_cache: 
          key: composer-v1-{{ checksum "composer.lock" }}
          paths:
            - vendor
      - run: touch database/database.sqlite
      - run: php artisan migrate
      - run: ./vendor/bin/phpunit 

.circleci/config.yml を配置して上記の内容を差し込み、CircleCI上で Add Project すれば設定は完了です。

config.yml の中身

version: 2 で CircleCI の 2 系の設定ファイルであることを指定します。
2系と 1系では 書き方も動きも大きく違い、 2系から Docker を利用したコンテナ起動が可能になっています。

コンテナの設定は docker エントリに 配列で指定することが出来ます。

docker: 
  - image: circleci/php:7.2.5-apache-node-browsers 
    environment:
      APP_ENV: circleci
      APP_DEBUG: true
      DB_CONNECTION: sqlite

image で 任意のImageを指定して CircleCI 上に Docker Image を展開します。利用可能なイメージの一覧は以下から確認可能です。

https://hub.docker.com/r/circleci/php/tags/

また、environment で環境変数を指定することも可能なので .env に記載するような内容はここで指定します。
リポジトリ内部に記録したくないようなセキュアな情報は CircleCI 上から直接 Env 情報を登録することも可能です。

コンテナの設定が終わったら steps エントリに コンテナ起動後の処理のセットアップを記述していきます。

checkout は連携されている Github から ソースコードのダウンロードを行います。

  - checkout 

今回、テストでは sqlite を利用するため、sqlite モジュールを apt でインストールします。

  - run: sudo apt install -y libsqlite3-dev zlib1g-dev

composer のセットアップを行います。毎回ダウンロードを実施するのは、時間的にもロスが大きいので、 composer.lock ファイルの checksum を利用してvendor ディレクトリのキャッシュを行っています。

  - run: sudo composer self-update
  - restore_cache: 
      keys:
        - composer-v1-{{ checksum "composer.lock" }}
        - composer-v1-
  - run: composer install
  - save_cache: 
      key: composer-v1-{{ checksum "composer.lock" }}
      paths:
        - vendor

composer のセットアップが終わったら、 sqlite ファイルを作成してマイグレーションを行い、テストを実行します。

  - run: touch database/database.sqlite
  - run: php artisan migrate
  - run: ./vendor/bin/phpunit 

カテゴリー: PHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です