Gitlab-CIにてLaravelをphpunitしてdeployするメモの話
今回はGitlabのパイプラインを通知するGitlab Webhookプロジェクトにてdeployするの自動でしようかなと思ったので作業しました。
その時のメモです。
stages:
- test
- deploy
unit-test-job:
stage: test
tags:
- phpunit
script:
- composer install
- php artisan key:generate --env=testing
- vendor/bin/phpunit --log-junit report.xml
- phpdbg -qrr vendor/bin/phpunit -c phpunit.xml --verbose --coverage-text
cache:
paths:
- vendor/
artifacts:
reports:
junit: report.xml
when: always
coverage: /\s+Lines:\s+(\d+\.\d+%)/
deploy-job:
stage: deploy
tags:
- deploy
script:
- cp -rf * /var/www/html/webhook/gitlab/
- cp -rf .env.product /var/www/html/webhook/gitlab/
- cd /var/www/html/webhook/gitlab/
- composer install
- cp .env.product .env
- php artisan key:generate
only:
refs:
- release
実行順番
ざっくりいうと、stageがtest(phpunit)してOKならdeployしています
stages:
- test
- deploy
PHPUnit
PHPUnitを実行するgitlab-runnerを選ぶ
phpunit試験は、phpunitのtagを持つgitlab-runnerにて実行します
tags:
- phpunit
tagの付いたGitlab-runner (作り方はgitlab-runnerのレジストするときに指定します)
レジスト時の設定部分
Enter tags for the runner (comma-separated):
phpunit
PHPUnit試験レポート周り
phpunitのカバレージっとテストレポートは以下の指定をすればOKです
artifacts:
reports:
junit: report.xml
when: always
coverage: /\s+Lines:\s+(\d+\.\d+%)/
指定するとパイプラインの詳細でカバレッジ率の情報が取れます。
確認はしませんが、ジョブの右のカバレッジ率はcoverage: だったはず
phpunitコマンドの–coverage-textにて以下のように出力されますので数値を取っています
Summary:
Classes: 0.00% (0/1)
Methods: 75.00% (3/4)
Lines: 97.96% (48/49)
report.xmlはテストタブの情報だったはず!
PHPUnitのvendorキャッシュ
phpunit試験のcomposerのvendorはキャッシュして処理速度をあげます
cache:
paths:
- vendor/
Deploy関連
ブランチ固定で実行する
deployはreleaseのみです。
only:
refs:
- release
scriptの作成テクニック
一度潜って実際に作業してみてください。
root@ff705e4d933b:/home/gitlab-runner/builds/UsqdHqDX/0/mmpp/webhook_gitlab#
UsqdHqDXは環境によりますが、/home/gitlab-runner/buildsに一度走らせるとcloneされますので手動で実行したものをscriptに書けばOKです
今回は超適当にcloneをコピーしています(cp -rf)
今回のリリース先は/var/www/html/webhook/gitlab/にlaravelのプロジェクトファイルを展開するとブラウザからアクセスできるようにしています。
なのでコピーとコンフィグだけで終了です
.gitディレクトリは愛嬌です
終いに
今回は超メモでした。