Laravel을 CircleCI 2.0으로 자동 테스트하고 heroku에 자동 배포
소개
포트폴리오를 Laravel에서 만들었을 때, 테스트부터 배포까지를 CircleCI로 자동화했기 때문에 정리해 보았습니다.
전제 조건
heroku config:set
에서 DB를 설정하고 Laravel 앱이 이미 heroku에 배포 할 수있는 상태입니다.배포까지의 흐름
CircleCI용 데이터베이스 설정 추가
사용할 Docker 이미지 (htps : // 후 b. 도 c r. 이 m/r/시 rc㎇시/mysql/)
의 설정값을 Laravel config/database.php
config/database.php'connections' => [
'circle_test' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => '3306',
'database' => 'circle_test',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
]
]
.circleci/config.yml 만들기
Larevel 프로젝트의 루트 디렉토리에.circleci/config.yml
만들기
Laravel-project
├ .circleci
│ └config.yml
├ app
├ bootstrap
├ config
├ database
・
・
・
CircleCI에서 프로젝트를 만들 때 나오는 추천 설정을 기반으로
일부 변경했습니다.
.circleci/config.yml# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/php:7.2
- image: circleci/mysql:5.7
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/mysql:9.4
environment:
- APP_DEBUG: true
- APP_ENV: testing
- APP_KEY: APP_KEYを入れてください
- DB_CONNECTION: circle_test
- MYSQL_ALLOW_EMPTY_PASSWORD: true
working_directory: ~/repo
steps:
- checkout
# Install PHP Extension
- run: sudo docker-php-ext-install pdo_mysql
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
# run seeding
- run: php artisan migrate
- run: php artisan db:seed
# run tests!
- run: php ./vendor/bin/phpunit
#heroku deploy
- deploy:
name: Deploy Master to Heroku
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
git push https://heroku:[email protected]/$HEROKU_APP_NAME.git master
fi
변경 부분
Docker 이미지 지정
DB에 MySQL을 사용하기 위해 MySQL Doker 이미지 지정
docker:
- image: circleci/php:7.2
- image: circleci/mysql:5.7
환경 변수 지정
environment:
- APP_DEBUG: true
- APP_ENV: testing
- APP_KEY: APP_KEYを入れてください
- DB_CONNECTION: circle_test
- MYSQL_ALLOW_EMPTY_PASSWORD: true
PDO_MYSQL 설치
DB를 사용한 테스트를 위해 PDO_MYSQL 설치
# Install PHP Extension
- run: sudo docker-php-ext-install pdo_mysql
마이그레이션 및 시딩
# run seeding
- run: php artisan migrate
- run: php artisan db:seed
heroku에 배포
#heroku deploy
- deploy:
name: Deploy Master to Heroku
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
git push https://heroku:[email protected]/$HEROKU_APP_NAME.git master
fi
HEROKU_API_KEY 및 HEROKU_APP_NAME 설정
heroku에 로그인하고 Account Settings에서 API Key 복사
CircleCI에서 프로젝트 이름 설정에 API Key를 붙여 넣기
HEROKU_APP_NAME님이 heroku의 프로젝트 이름 입력
GitHub에 push
cd Laravel-project
git init
git remote add origin [GitHubで作成したリポジトリのURL]
git remote -v
でリモートリポジトリを設定
git add .
git commit -m "CircleCI"
git push origin master
실행 결과
CircleCI에 로그인하고 프로젝트의 jobs가 SUCCESS
이면 배포 성공
Reference
이 문제에 관하여(Laravel을 CircleCI 2.0으로 자동 테스트하고 heroku에 자동 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/seiya0429/items/83e3f5d53a01d6fbd8d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
'connections' => [
'circle_test' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => '3306',
'database' => 'circle_test',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
]
]
Larevel 프로젝트의 루트 디렉토리에
.circleci/config.yml
만들기Laravel-project
├ .circleci
│ └config.yml
├ app
├ bootstrap
├ config
├ database
・
・
・
CircleCI에서 프로젝트를 만들 때 나오는 추천 설정을 기반으로
일부 변경했습니다.
.circleci/config.yml
# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/php:7.2
- image: circleci/mysql:5.7
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/mysql:9.4
environment:
- APP_DEBUG: true
- APP_ENV: testing
- APP_KEY: APP_KEYを入れてください
- DB_CONNECTION: circle_test
- MYSQL_ALLOW_EMPTY_PASSWORD: true
working_directory: ~/repo
steps:
- checkout
# Install PHP Extension
- run: sudo docker-php-ext-install pdo_mysql
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
# run seeding
- run: php artisan migrate
- run: php artisan db:seed
# run tests!
- run: php ./vendor/bin/phpunit
#heroku deploy
- deploy:
name: Deploy Master to Heroku
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
git push https://heroku:[email protected]/$HEROKU_APP_NAME.git master
fi
변경 부분
Docker 이미지 지정
DB에 MySQL을 사용하기 위해 MySQL Doker 이미지 지정
docker:
- image: circleci/php:7.2
- image: circleci/mysql:5.7
환경 변수 지정
environment:
- APP_DEBUG: true
- APP_ENV: testing
- APP_KEY: APP_KEYを入れてください
- DB_CONNECTION: circle_test
- MYSQL_ALLOW_EMPTY_PASSWORD: true
PDO_MYSQL 설치
DB를 사용한 테스트를 위해 PDO_MYSQL 설치
# Install PHP Extension
- run: sudo docker-php-ext-install pdo_mysql
마이그레이션 및 시딩
# run seeding
- run: php artisan migrate
- run: php artisan db:seed
heroku에 배포
#heroku deploy
- deploy:
name: Deploy Master to Heroku
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then
git push https://heroku:[email protected]/$HEROKU_APP_NAME.git master
fi
HEROKU_API_KEY 및 HEROKU_APP_NAME 설정
heroku에 로그인하고 Account Settings에서 API Key 복사
CircleCI에서 프로젝트 이름 설정에 API Key를 붙여 넣기
HEROKU_APP_NAME님이 heroku의 프로젝트 이름 입력
GitHub에 push
cd Laravel-project
git init
git remote add origin [GitHubで作成したリポジトリのURL]
git remote -v
でリモートリポジトリを設定
git add .
git commit -m "CircleCI"
git push origin master
실행 결과
CircleCI에 로그인하고 프로젝트의 jobs가 SUCCESS
이면 배포 성공
Reference
이 문제에 관하여(Laravel을 CircleCI 2.0으로 자동 테스트하고 heroku에 자동 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/seiya0429/items/83e3f5d53a01d6fbd8d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
cd Laravel-project
git init
git remote add origin [GitHubで作成したリポジトリのURL]
git remote -v
でリモートリポジトリを設定
git add .
git commit -m "CircleCI"
git push origin master
실행 결과
CircleCI에 로그인하고 프로젝트의 jobs가 SUCCESS
이면 배포 성공
Reference
이 문제에 관하여(Laravel을 CircleCI 2.0으로 자동 테스트하고 heroku에 자동 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/seiya0429/items/83e3f5d53a01d6fbd8d0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Laravel을 CircleCI 2.0으로 자동 테스트하고 heroku에 자동 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/seiya0429/items/83e3f5d53a01d6fbd8d0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)