EC2에 자동 테스트, 배포를 CircleCI로 실현 (Django)
소개
AWS의 EC2 인스턴스에 SSH 연결 → git pull
하여 수동으로 배포했지만 CircleCI를 사용하여 자동 배포하는 단계를 요약했습니다.
실현하고 싶은 것
GitHub에 master 브랜치를 push했을 때, CircleCI를 움직여 Django의 Unittest를 실시.
테스트를 통과하면 그대로 EC2 인스턴스에 SSH 연결하여 git pull
최신 코드를 반영합니다.
Django 앱은 docker에서 실행 중입니다 (docker-compose up -d
).
아래 링크는 docker의 환경 구성입니다.
Django+Nginx+MySQL 개발 환경을 Docker로 구축
EC2 인스턴스
사전에 git
docker
docker-compose
를 설치했습니다.
또한, 아래에서 설명하는 CircleCI에 대한 공개 키도 설명합니다.
절차를 아래에 정리했습니다.
EC2 인스턴스에 git, docker, docker-compose를 도입하고 공개 키 등록 (CircleCI 용)
CircleCI
대상 GitHub 리포지토리를 CircleCI에 등록합니다.
다음을 수행합니다.
1. 비밀키 등록
2. EC2 인스턴스의 호스트 이름, 도메인 이름 등록
참조 문서: Circle CI로 웹 사이트를 자동 배포
개인 키 등록
CircleCI에 사용할 수 있는 키 인증은 형식이 정해져 있으므로 이에 따라 작성합니다.
폴더를 만들고 거기에 만듭니다.
참조: Adding an SSH Key to CircleCI
# 鍵の作成
$ mkdir ssh
$ ssh-keygen -m pem
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/kenkono/.ssh/id_rsa): ssh
CircleCI의 콘솔 화면에서 만든 개인 키를 등록합니다.
Hostname에는 임의의 문자를 입력합니다.
EC2 인스턴스의 호스트 이름, 도메인 이름 등록
환경 변수로 등록합니다.
EC2의 경우, ec2-user@ドメイン名
라고 생각하기 때문에, 이하 등록합니다.
HOST_NAME = 도메인 이름
USER_NAME=ec2-user
CircleCI 실행 코드
.circleci/config.yml
에 설명된 코드는 대상 GitHub 리포지토리에 푸시될 때 실행됩니다.
이하 기술 내용입니다.
docker-compose를 실행하고 싶기 때문에 CircleCI는 가상 머신 circleci/classic:edge
을 지정합니다.
config.yml# circleCIのバージョン指定
version: 2
jobs:
build:
machine:
image: circleci/classic:edge
steps:
# Djangoのテストを実行
- checkout
- run:
name: docker-compose up
command: docker-compose up -d
- run:
name: sleep for launch db to migrate at Django
command: sleep 10
- run:
name: migrate
command: docker-compose run python ./manage.py migrate
- run:
name: test
command: docker-compose run python ./manage.py test
- run:
name: docker-compose down
command: docker-compose down
# EC2にSSH接続し、デプロイを実行
deploy:
machine:
image: circleci/classic:edge
steps:
- checkout
# CircleCIに登録した秘密鍵を呼び出す。
- add_ssh_keys:
- run: ssh ${USER_NAME}@${HOST_NAME} 'cd todoList && git pull && docker-compose run python ./manage.py migrate'
# テストが成功した場合のみ、deployを実行するようにします。
workflows:
version: 2
build_and_deploy:
jobs:
- build
- deploy:
requires:
- build
# masterブランチがpushされた場合のみdeployするようにする。
filters:
branches:
only: master
실행
git push
에서 일련의 설명이 작동합니다.
추천 소스
docker-compose로 Rails를 개발하고 CircleCI 2.0에서 테스트하여 Heroku에 배포
Reference
이 문제에 관하여(EC2에 자동 테스트, 배포를 CircleCI로 실현 (Django)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kenkono/items/ef2f93eee713d154285d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
GitHub에 master 브랜치를 push했을 때, CircleCI를 움직여 Django의 Unittest를 실시.
테스트를 통과하면 그대로 EC2 인스턴스에 SSH 연결하여
git pull
최신 코드를 반영합니다.Django 앱은 docker에서 실행 중입니다 (
docker-compose up -d
).아래 링크는 docker의 환경 구성입니다.
Django+Nginx+MySQL 개발 환경을 Docker로 구축
EC2 인스턴스
사전에 git
docker
docker-compose
를 설치했습니다.
또한, 아래에서 설명하는 CircleCI에 대한 공개 키도 설명합니다.
절차를 아래에 정리했습니다.
EC2 인스턴스에 git, docker, docker-compose를 도입하고 공개 키 등록 (CircleCI 용)
CircleCI
대상 GitHub 리포지토리를 CircleCI에 등록합니다.
다음을 수행합니다.
1. 비밀키 등록
2. EC2 인스턴스의 호스트 이름, 도메인 이름 등록
참조 문서: Circle CI로 웹 사이트를 자동 배포
개인 키 등록
CircleCI에 사용할 수 있는 키 인증은 형식이 정해져 있으므로 이에 따라 작성합니다.
폴더를 만들고 거기에 만듭니다.
참조: Adding an SSH Key to CircleCI
# 鍵の作成
$ mkdir ssh
$ ssh-keygen -m pem
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/kenkono/.ssh/id_rsa): ssh
CircleCI의 콘솔 화면에서 만든 개인 키를 등록합니다.
Hostname에는 임의의 문자를 입력합니다.
EC2 인스턴스의 호스트 이름, 도메인 이름 등록
환경 변수로 등록합니다.
EC2의 경우, ec2-user@ドメイン名
라고 생각하기 때문에, 이하 등록합니다.
HOST_NAME = 도메인 이름
USER_NAME=ec2-user
CircleCI 실행 코드
.circleci/config.yml
에 설명된 코드는 대상 GitHub 리포지토리에 푸시될 때 실행됩니다.
이하 기술 내용입니다.
docker-compose를 실행하고 싶기 때문에 CircleCI는 가상 머신 circleci/classic:edge
을 지정합니다.
config.yml# circleCIのバージョン指定
version: 2
jobs:
build:
machine:
image: circleci/classic:edge
steps:
# Djangoのテストを実行
- checkout
- run:
name: docker-compose up
command: docker-compose up -d
- run:
name: sleep for launch db to migrate at Django
command: sleep 10
- run:
name: migrate
command: docker-compose run python ./manage.py migrate
- run:
name: test
command: docker-compose run python ./manage.py test
- run:
name: docker-compose down
command: docker-compose down
# EC2にSSH接続し、デプロイを実行
deploy:
machine:
image: circleci/classic:edge
steps:
- checkout
# CircleCIに登録した秘密鍵を呼び出す。
- add_ssh_keys:
- run: ssh ${USER_NAME}@${HOST_NAME} 'cd todoList && git pull && docker-compose run python ./manage.py migrate'
# テストが成功した場合のみ、deployを実行するようにします。
workflows:
version: 2
build_and_deploy:
jobs:
- build
- deploy:
requires:
- build
# masterブランチがpushされた場合のみdeployするようにする。
filters:
branches:
only: master
실행
git push
에서 일련의 설명이 작동합니다.
추천 소스
docker-compose로 Rails를 개발하고 CircleCI 2.0에서 테스트하여 Heroku에 배포
Reference
이 문제에 관하여(EC2에 자동 테스트, 배포를 CircleCI로 실현 (Django)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kenkono/items/ef2f93eee713d154285d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
대상 GitHub 리포지토리를 CircleCI에 등록합니다.
다음을 수행합니다.
1. 비밀키 등록
2. EC2 인스턴스의 호스트 이름, 도메인 이름 등록
참조 문서: Circle CI로 웹 사이트를 자동 배포
개인 키 등록
CircleCI에 사용할 수 있는 키 인증은 형식이 정해져 있으므로 이에 따라 작성합니다.
폴더를 만들고 거기에 만듭니다.
참조: Adding an SSH Key to CircleCI
# 鍵の作成
$ mkdir ssh
$ ssh-keygen -m pem
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/kenkono/.ssh/id_rsa): ssh
CircleCI의 콘솔 화면에서 만든 개인 키를 등록합니다.
Hostname에는 임의의 문자를 입력합니다.
EC2 인스턴스의 호스트 이름, 도메인 이름 등록
환경 변수로 등록합니다.
EC2의 경우,
ec2-user@ドメイン名
라고 생각하기 때문에, 이하 등록합니다.HOST_NAME = 도메인 이름
USER_NAME=ec2-user
CircleCI 실행 코드
.circleci/config.yml
에 설명된 코드는 대상 GitHub 리포지토리에 푸시될 때 실행됩니다.
이하 기술 내용입니다.
docker-compose를 실행하고 싶기 때문에 CircleCI는 가상 머신 circleci/classic:edge
을 지정합니다.
config.yml# circleCIのバージョン指定
version: 2
jobs:
build:
machine:
image: circleci/classic:edge
steps:
# Djangoのテストを実行
- checkout
- run:
name: docker-compose up
command: docker-compose up -d
- run:
name: sleep for launch db to migrate at Django
command: sleep 10
- run:
name: migrate
command: docker-compose run python ./manage.py migrate
- run:
name: test
command: docker-compose run python ./manage.py test
- run:
name: docker-compose down
command: docker-compose down
# EC2にSSH接続し、デプロイを実行
deploy:
machine:
image: circleci/classic:edge
steps:
- checkout
# CircleCIに登録した秘密鍵を呼び出す。
- add_ssh_keys:
- run: ssh ${USER_NAME}@${HOST_NAME} 'cd todoList && git pull && docker-compose run python ./manage.py migrate'
# テストが成功した場合のみ、deployを実行するようにします。
workflows:
version: 2
build_and_deploy:
jobs:
- build
- deploy:
requires:
- build
# masterブランチがpushされた場合のみdeployするようにする。
filters:
branches:
only: master
실행
git push
에서 일련의 설명이 작동합니다.
추천 소스
docker-compose로 Rails를 개발하고 CircleCI 2.0에서 테스트하여 Heroku에 배포
Reference
이 문제에 관하여(EC2에 자동 테스트, 배포를 CircleCI로 실현 (Django)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kenkono/items/ef2f93eee713d154285d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# circleCIのバージョン指定
version: 2
jobs:
build:
machine:
image: circleci/classic:edge
steps:
# Djangoのテストを実行
- checkout
- run:
name: docker-compose up
command: docker-compose up -d
- run:
name: sleep for launch db to migrate at Django
command: sleep 10
- run:
name: migrate
command: docker-compose run python ./manage.py migrate
- run:
name: test
command: docker-compose run python ./manage.py test
- run:
name: docker-compose down
command: docker-compose down
# EC2にSSH接続し、デプロイを実行
deploy:
machine:
image: circleci/classic:edge
steps:
- checkout
# CircleCIに登録した秘密鍵を呼び出す。
- add_ssh_keys:
- run: ssh ${USER_NAME}@${HOST_NAME} 'cd todoList && git pull && docker-compose run python ./manage.py migrate'
# テストが成功した場合のみ、deployを実行するようにします。
workflows:
version: 2
build_and_deploy:
jobs:
- build
- deploy:
requires:
- build
# masterブランチがpushされた場合のみdeployするようにする。
filters:
branches:
only: master
git push
에서 일련의 설명이 작동합니다.추천 소스
docker-compose로 Rails를 개발하고 CircleCI 2.0에서 테스트하여 Heroku에 배포
Reference
이 문제에 관하여(EC2에 자동 테스트, 배포를 CircleCI로 실현 (Django)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kenkono/items/ef2f93eee713d154285d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(EC2에 자동 테스트, 배포를 CircleCI로 실현 (Django)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kenkono/items/ef2f93eee713d154285d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)