LoginSignup
4
1

More than 3 years have passed since last update.

IBM CloudのDelivery PipelineでPHPUnitを実行する方法

Last updated at Posted at 2019-12-01

CI/CDを考える上で、外せないのがテストの自動化ですよね。
自身が更新したアプリケーションを、デプロイする前に最低限のチェックをかけたい、というのは誰もが抱く思いでしょう。
IBM Cloudでも、CI/CDを一瞬で構築できるの仕組みがあり非常に重宝します。
今回の記事では、私がよく使っているPHPUnitを使って自動でテストする方法をご紹介します。

自動テストを実現する2つの方法

  1. 外部CI/CDサービスを使って実現する
    GithubTravis CI等の外部CI/CDツールを使って、Pull Requestがマージされる前にテストを実行して確認しよう!というものです。
    実は既に、PHP アプリケーションを自動的にテストして IBM Cloud にデプロイするという記事があります。割とオーソドックスなのはこちらの方法かと思いますので、ぜひ、ご一読ください。

  2. Delivery Pipeline内で直接テスト環境を用意してテストを実行する
    Delivery Pipelineでは、自分でシェルを書くことができます。テストステップを追加して、中に下記のシェルを書くだけで、phpunitをDeployする前に実行することができます。
    何らかの事情により、外部サービスが使えない時などに、役にたつかもしれないテクニックですね!
    もちろん、他の言語でもシェルの中でプログラムの実行環境をセットアップすれば:ok:です。

PHPUnit環境構築シェル

#!/bin/bash
#まずはPHPと関連するextentionをinstall
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.2 php7.2-fpm php7.2-mysql php7.2-mbstring php7.2-zip php7.2-xml
#composerをinstall
curl -sS https://getcomposer.org/installer | php
#必要なパッケージをinstall
php composer.phar install
#ここでテストを起動します
php vendor/phpunit/phpunit/phpunit tests/StackTest.php

テストに成功した場合

スクリーンショット 2019-11-12 18.45.32.png

テストに失敗した場合

スクリーンショット 2019-11-12 18.53.05.png

上記シェルの実行Log(抜粋)

きちんとPHP Unitが実行されている事がわかります。

There was 1 failure:

1) StackTest::testPushAndPop
Failed asserting that 0 is identical to 1.

/home/pipeline/c7703b7e-15e2-47fd-ba16-ef57ecd30f0f/tests/StackTest.php:9

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
WARNING: No file found for the pattern: tests/TEST-*.xml . Not uploading test results.
WARNING: No file found for the pattern: target/site/jacoco/jacoco.xml . Not uploading test results.

Finished: FAILED
4
1
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
4
1