LoginSignup
0

More than 1 year has passed since last update.

Cloud BuildでPHPUnitテストを行う

Posted at

やること

  1. cloudbuild.yamldocker-compose の処理を追加
  2. CloudBuild用のdocker-compose-test.yaml を作成
  3. CloudBuild用の.env.testing を作成

cloudbuild.yamldocker-compose の処理を追加

cloudbuild.yaml
timeout: 1200s
steps:
  # builds the container image
  - name: 'gcr.io/cloud-builders/docker'
    id: Build
    args:
      - 'build'
      - '-t'
      - 'gcr.io/$PROJECT_ID/test:$SHORT_SHA'
      - '-f'
      - 'Dockerfile'
      - '.'

  - name: 'docker/compose'
    id: UnitTest
    args: [
        '-f',
        'docker-compose-test.yml',
        'run',
        '--rm',
        'php',
        'bash',
        '-c',
        'phpdbg -qrr vendor/bin/phpunit'
    ]
    env:
      - 'PROJECT_ID=$PROJECT_ID'
      # docker-compose-test.xmlで利用する環境変数
      - 'TAG=gcr.io/$PROJECT_ID/test:$SHORT_SHA'

CloudBuild用のdocker-compose-test.yaml を作成

docker-compose-test.yaml
version: '3'
services:
  php:
    container_name: php
    # cloudbuild.yamlで設定した環境変数を利用
    image: ${TAG}
    depends_on:
      - redis
      - db
    ports:
      - 8080:8080
      - 8888:8888
    volumes:
      - ./:/var/www
      - ./php.ini:/usr/local/etc/php/php.ini
    environment:
      - TZ=Asia/Tokyo
  db:
    container_name: db
    image: mysql:5.7
    environment:
      - TZ=Asia/Tokyo
    ports:
      - 3306:3306
    command: mysqld --character-set-server=utf8mb4
    volumes:
      - mysql_data:/var/lib/mysql
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    command: redis-server --appendonly yes
networks:
  default:
    external:
      name: cloudbuild
volumes:
  mysql_data:

CloudBuild用の.env.testing を作成

テスト用の環境変数を設定

.env.testing
APP_ENV=testing
APP_KEY= // 空にしておく

// 接続したいDBの情報を設定する
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=test_database
DB_USERNAME=root
DB_PASSWORD=

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
0