LoginSignup
2
0

More than 1 year has passed since last update.

CircleCIでテストを自動実行する

Posted at

前提

今回は前回の記事にCircleCIを組み込んでいきます。
DockerでLEMP環境を構築する

テストを作成する

# Laravelプロジェクト内でテスト用の.envファイルを作成する
cp .env.example .env.testing

# APP_KEYを作成する
php artisan key:generate --env=testing

.env.testingへ下記を記載する

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel-test
DB_USERNAME=root
DB_PASSWORD=

テストコードを作成する

php artisan make:test HogeTest

下記などを参考にPHPUnitでテストを記述する
https://qiita.com/tsuuuuu_san/items/46246168dc36ad2369cc
https://qiita.com/nakano-shingo/items/9446568a2f9e903922d4

作成したテストをCircleCI上で実行できるように設定情報を追記する

config/database.phpの'connections'に下記を追記する

'circle_testing' => [
        'driver' => 'mysql',
        'host' => '127.0.0.1',
        'port' => '3306',
        'database' => 'circle_test',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
    ],

CircleCIへログインする

アカウントがない場合GitHub連携で簡単に作成できます。
Projectsへ遷移するとGitHubのリポジトリが表示されるので設定したいプロジェクトのSet UP Projectボタンを押下する(開発言語など問われるので適宜選択する)

CircleCIの設定ファイルを作成する

【ルートディレクトリ】へ移動して.circleci/config.ymlを作成する

mkdir .circleci && touch .circleci/config.yml

.circleci/config.ymlに下記のように設定を記載する

version: 2 # 設定ファイルのバージョン
jobs: # 実行させたいジョブの定義
  build: # ジョブ名を定義する
    docker: # ジョブを実行するマシンを定義
      # CircleCIのイメージを使用
      - image: circleci/php:7.3.0-node-browsers
      - image: circleci/mysql:5.7
    environment:
      - DB_CONNECTION: circle_testing
    working_directory: ~/CI-test
    steps: # マシンに対しての命令手順
      - checkout # コードをレポジトリからチェックアウト
      - run: # コマンドを実行
          name: Update apt-get
          command: sudo apt-get update
      - run:
          name: Docker php extensions install
          command: sudo docker-php-ext-install pdo_mysql
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "src/composer.json" }}
            - v1-dependencies-
      - run:
          name: Install PHP libraries
          working_directory: src
          command: composer install -n --prefer-dist
      - save_cache:
          paths:
            - ./vendor
          key: v1-dependencies-{{ checksum "src/composer.json" }}
      - run:
          name: Run PHPUnit
          working_directory: src
          command: vendor/bin/phpunit

# 定義したジョブを実行するタイミングを定義できる
# 未定義だとGitプッシュがトリガーになり実行される
workflows:
  version: 2
  builid_workflow: # ワークフロー名を定義する
    jobs: # どのJOBを実行するか
      - build

テストを自動で実行する

GitHubにコミット/プッシュする。
CircleCIのセットアップ画面へアクセスしてStart buildingをクリックするとビルド画面へ遷移する。

すると...
無事テストが走り、テスト結果が表示されました!
次回からはGitHubにコミット/プッシュしたタイミングで自動でテストが走るようになります(.circleci/config.ymlのworkflowsでタイミングは変更できます。)

2
0
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
2
0