-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathbuildspec.yml
57 lines (46 loc) · 2.14 KB
/
buildspec.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
version: 0.2
environment_variables:
plaintext:
APP_NAME: hands-on-app
phases:
install:
commands:
## laravelのリポジトリに入っておく
- cd laravel
## Dockerデーモンを起動し、正常に起動が終わるまで待つ。
- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2375 --storage-driver=overlay&
- timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
## MySQLをインストールし、正常に起動できるまで待つ
- docker-compose up -d mysql-test
## .env.dev -> .envにリネーム
- cp .env.dev .env
## composer実行
- composer install
pre_build:
commands:
## ECRにログイン
- $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
## Dockerイメージのタグとして使用するため、Gitのコミットハッシュを取得
- IMAGE_TAG=$CODEBUILD_RESOLVED_SOURCE_VERSION
build:
commands:
## Dockerイメージのビルド
- docker pull $IMAGE_REPOSITORY_NAME:$APP_NAME && CACHE_OPTION="--cache-from $IMAGE_REPOSITORY_NAME:$APP_NAME" || true
- docker build $CACHE_OPTION -t $IMAGE_REPOSITORY_NAME:$IMAGE_TAG -t $IMAGE_REPOSITORY_NAME:$APP_NAME .
## 構築したイメージ上で'composer run ci-check'しテスト実行
- docker run -e "DB_HOST=127.0.0.1" -e "DB_PORT=3307" -e "DB_DATABASE=mysql" -e "DB_USERNAME=homestead" -e "DB_PASSWORD=password" --network=host $IMAGE_REPOSITORY_NAME:$IMAGE_TAG composer run ci-check
## DockerイメージのECRへのプッシュ
- docker push $IMAGE_REPOSITORY_NAME
- cd ..
## ECSにどのイメージを使用するか指示するためのファイルを作成
- printf '[{"name":"phpfpm","imageUri":"%s"}]' $IMAGE_REPOSITORY_NAME:$IMAGE_TAG > imagedefinitions.json
cache:
paths:
# Composer用のキャッシュ
- /root/.composer/**/*
# Node用のキャッシュ
- /root/.npm/**/*
- /usr/lib/node_modules/**/*
artifacts:
## buildの最後で作成したファイルをアーティファクトを流す
files: imagedefinitions.json