/
config.yml
156 lines (138 loc) · 3.97 KB
/
config.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
version: 2
anchors:
- &test_environment
docker:
- image: circleci/php:7.2-browsers
- image: circleci/mysql:5.7
environment:
MYSQL_DATABASE: testing
environment:
DB_HOST: 127.0.0.1
- &restore_cache
restore_cache:
keys:
- ci-cd-example-{{ checksum "composer.lock" }}
- ci-cd-example-
- &composer_install
run: composer install
- &save_cache
save_cache:
key: ci-cd-example-{{ checksum "composer.lock" }}
paths:
- vendor
- &initialize
run:
name: initialize
command: |
DOCKERIZE_VERSION=v0.6.1
wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
sudo tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
sudo chmod +x /usr/local/bin/dockerize
rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
dockerize -wait tcp://${DB_HOST}:3306 -timeout 1m
sudo docker-php-ext-install pdo_mysql
cp .env.testing .env
composer dump-autoload
php artisan migrate
- &test
run: composer test
- &delivery_image
docker:
- image: circleci/python:3
steps:
- checkout
- setup_remote_docker
- run:
name: ecr login
command: |
sudo pip install awscli
aws configure set aws_access_key_id $(eval echo $AWS_ACCESS_KEY)
aws configure set aws_secret_access_key $(eval echo $AWS_SECRET_KEY)
$(aws ecr get-login --no-include-email --region ap-northeast-1)
- run:
name: nginx image
command: |
IMAGE_TAG=$(echo ${CIRCLE_SHA1} | cut -c 1-6)
docker build \
-t $(eval echo $AWS_ACCOUNT_ID).dkr.ecr.ap-northeast-1.amazonaws.com/nginx:${IMAGE_TAG} \
-f docker/nginx/Dockerfile \
.
docker push $(eval echo $AWS_ACCOUNT_ID).dkr.ecr.ap-northeast-1.amazonaws.com/nginx:${IMAGE_TAG}
- run:
name: web image
command: |
IMAGE_TAG=$(echo ${CIRCLE_SHA1} | cut -c 1-6)
docker build \
-t $(eval echo $AWS_ACCOUNT_ID).dkr.ecr.ap-northeast-1.amazonaws.com/web:${IMAGE_TAG} \
.
docker push $(eval echo $AWS_ACCOUNT_ID).dkr.ecr.ap-northeast-1.amazonaws.com/web:${IMAGE_TAG}
jobs:
test:
<<: *test_environment
steps:
- checkout
- *restore_cache
- *composer_install
- *save_cache
- *initialize
- *test
- store_artifacts:
path: tmp/coverage
# developブランチをマージしてtestを実行する
merge_test:
<<: *test_environment
steps:
- checkout
- run: git merge develop
- *restore_cache
- *composer_install
- *save_cache
- *initialize
- *test
# ステージングAWSアカウントのECRへイメージの配布
delivery_stg:
<<: *delivery_image
environment:
AWS_ACCOUNT_ID: $AWS_STG_ACCOUNT_ID
AWS_ACCESS_KEY: $AWS_STG_ACCESS_KEY
AWS_SECRET_KEY: $AWS_STG_SECRET_KEY
# # 本番AWSアカウントのECRへイメージの配布
# delivery_prod:
# <<: *delivery_image
# environment:
# AWS_ACCOUNT_ID: $AWS_PROD_ACCOUNT_ID
# AWS_ACCESS_KEY: $AWS_PROD_ACCESS_KEY
# AWS_SECRET_KEY: $AWS_PROD_SECRET_KEY
workflows:
version: 2
test:
jobs:
- test
- merge_test:
filters:
branches:
ignore:
- master
- develop
tags:
ignore: /.*/
delivery_stg:
jobs:
- test
- delivery_stg:
requires:
- test
filters:
branches:
only:
- develop
# delivery_prod:
# jobs:
# - test
# - delivery_prod
# requires:
# - test
# filters:
# branches:
# only:
# - master