やること
-
cloudbuild.yaml
にdocker-compose
の処理を追加 - CloudBuild用の
docker-compose-test.yaml
を作成 - CloudBuild用の
.env.testing
を作成
cloudbuild.yaml
にdocker-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=