Laravel 7.x : Travis CIでUnitテストを実行する

Travis CI: Travis側(Ubuntu)でテストが行われる
Jenkins: テスト環境の構築が必要

### TravisCIの機能
– 自動でソースコードをcheckoutして、予め指定しておいたビルドやテスト処理を実行
– テスト結果をTravis CIのサイト上や各種API、メールで開発者に通知
– テストが問題なければ、予め指定しておいたホスティングサービスにデプロイする
– ビルドやテスト処理は「.travis.yml」に記述する

### 前準備(ローカル環境)
– Vagrant Amazon Linux 2
– Laravel 7.3.0, MySQL 8.0.18

### TravisCI側の操作
– Approve & Install Travis CI
— Only select repositories: publicを選択
— approve & install

### .travis.yml作成
– Laravelのルートディレクトリに.travis.ymlを作成

language: php
php:
  - 7.3

before_script:
  - composer self-update
  - composer install
  - chmod -R 777 storage
  - php artisan key:generate

script: 
  - ./vendor/bin/phpunit

notifications:
  emails:
    - hoge@gmail.com
1) Tests\Feature\ExampleTest::testBasicTest
RuntimeException: No application encryption key has been specified.

APP_KEYが必要のようなので、before_scriptでAPP_KEYを読み込むようにします。
.env.travis

APP_ENV=testing
APP_KEY=base64:*****
before_script:
  - cp .env.travis .env
  - composer self-update
  - composer install
  - chmod -R 777 storage

0.23s$ ./vendor/bin/phpunit
PHPUnit 8.5.2 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 165 ms, Memory: 20.00 MB
OK (2 tests, 2 assertions)
The command “./vendor/bin/phpunit” exited with 0.

割とすぐ上手くいきました。仕組みとしては、CircleCIと似ていますが、Dockerじゃないとこが異なりますね。

システム開発工程における注意点

システム開発における注意点!?
チームで開発するなら、気を付けておきたい箇所は一杯ありますよね。

– 要件定義
 – 仕様
  — 関係者で合意が取れているか
 – システム要件
  — 本当に必要な機能か
  — 運用負担とならないか
  — 運用が回るか

- 基本設計
 – 文字コードの配慮(UTF-8,ShiftJIS)
— データ長
 – AWSメンテナンスやサービスダウンを前提とした可用性/自動リトライなど
 – 運用フローを作成し、合意をとる

– リリース
 – お知らせ告知
— 外部システムへの配慮
 – 切り戻し
— 連絡体制