EC2에 자동 테스트, 배포를 CircleCI로 실현 (Django)

6619 단어 CircleCI장고AWS

소개



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에 배포

좋은 웹페이지 즐겨찾기