지속적 통합(CI)

../_images/33907150594_9abba7ad0a_k_d.jpg

참고

테스트 작성에 대한 조언은 코드 테스트하기 를 참고하세요.

왜?

Kent Beck과 함께 지속적 통합(Continuous Integration) (줄여서 CI)에 대해 처음 글을 쓴 Martin Fowler는 CI를 다음과 같이 설명합니다:

지속적 통합은 팀 구성원들이 자신의 작업을 자주 통합하는 소프트웨어 개발 관행입니다. 보통 한 사람이 하루에 최소 한 번 이상 통합하여 하루에도 여러 번 통합이 이루어집니다. 각 통합은 자동화된 빌드(테스트 포함)로 검증되어 통합 오류를 가능한 한 빨리 감지합니다. 많은 팀은 이러한 접근 방식이 통합 문제를 크게 줄이고, 팀이 더 빠르게 일관성 있는 소프트웨어를 개발할 수 있게 해준다는 것을 발견합니다.

Jenkins

Jenkins CI 는 확장 가능한 지속적 통합 엔진입니다. 사용해 보세요.

Buildbot

Buildbot 은 코드 변경을 검증하기 위해 컴파일/테스트 사이클을 자동화하는 파이썬 시스템입니다.

Tox

tox 는 콘솔이나 CI 서버에서 바로 파이썬 소프트웨어의 패키징, 테스트, 배포를 제공하는 자동화 도구입니다. 범용 virtualenv 관리 및 테스트용 커맨드라인 도구로, 다음과 같은 기능을 제공합니다:

  • 서로 다른 파이썬 버전과 인터프리터에서 패키지가 올바르게 설치되는지 확인

  • 각 환경에서 테스트를 실행하고, 원하는 테스트 도구를 설정

  • 지속적 통합 서버의 프론트엔드로 동작하여, 보일러플레이트를 줄이고 CI와 쉘 기반 테스트를 통합

Travis-CI

Travis-CI 는 오픈 소스 프로젝트를 위해 테스트를 무료로 빌드해주는 분산 CI 서버입니다. 파이썬 테스트를 실행할 여러 워커를 제공하며 GitHub와 매끄럽게 통합됩니다. 풀 리퀘스트에서 해당 변경 사항이 빌드를 깨뜨리는지 여부를 댓글로 남기게 할 수도 있습니다. 따라서 코드를 GitHub에 호스팅하고 있다면, Travis-CI는 지속적 통합을 시작하기 위한 훌륭하고 쉬운 방법입니다.

시작하려면, 저장소에 다음과 같은 예시 내용으로 .travis.yml 파일을 추가하세요:

language: python
python:
  - "2.6"
  - "2.7"
  - "3.2"
  - "3.3"
# command to install dependencies
script: python tests/test_all_of_the_units.py
branches:
  only:
    - master

이렇게 하면 나열된 모든 파이썬 버전에서 주어진 스크립트를 실행하여 프로젝트를 테스트하며, master 브랜치만 빌드합니다. 알림, 전/후 단계 등 활성화할 수 있는 옵션이 훨씬 더 많이 있습니다. Travis-CI 문서 에서 이 모든 옵션을 매우 자세히 설명하고 있습니다.

프로젝트의 테스트를 활성화하려면, Travis-CI 사이트 로 가서 GitHub 계정으로 로그인하세요. 그런 다음 프로필 설정에서 프로젝트를 활성화하면 준비 끝입니다. 이제부터 GitHub로 푸시할 때마다 프로젝트의 테스트가 실행됩니다.