본문 바로가기
Coding/DevOps

TravisCI Github 연동하는 방법

by Hide­ 2019. 10. 29.
반응형

기존 회사에서는 Bitbucker pipeline을 통해 CI를 진행했었다. 하지만 개인 프로젝트에서는 소스 저장소로 깃허브를 사용하고있고 TravisCI를 사용해보고 싶어서 그 과정에 대해 포스팅을 남긴다.

TravisCI 회원 가입

먼저 아래의 주소로 들어가서 회원가입을 진행한다.

https://travis-ci.org/auth

Repository 연동

원하는 레포지토리를 연동한다. 나는 hfive라는 레포지토리를 연동했다.

.travis.yml 작성

language: python
python:
  - 3.7.4
branches:
  only:
    - master
    - develop
services:
  - mysql
before_install:
  - mysql -e 'CREATE USER hfive@localhost IDENTIFIED BY "hfive"'
  - mysql -e 'CREATE DATABASE test'
  - mysql -e 'GRANT ALL PRIVILEGES ON test.* TO hfive@localhost IDENTIFIED BY "hfive" WITH GRANT OPTION'
  - pip install pipenv
install:
  - pipenv install --system
script:
  - alembic upgrade head
  - env=testing pytest

위 코드에 대해서 간단하게 설명하자면 다음과 같다.

  • language: 사용하는 언어
  • python: 버전 명시
  • branches: 문서 하단에 설명
  • services: 같이 구동해야할 서비스
  • before_install: install전 실행해야할 명령어
  • install: 설치해야할 서비스들(설치 등)
  • script: 실행해야할 명령어

또한 여기서 라이프 사이클을 잠시 살펴보고 가야한다. TravisCI의 라이프 사이클은 다음과 같다.

apt addons -> cache components -> before_install -> install -> before_script -> script -> before_cache -> after_success or after_failure -> before_deploy -> deploy -> after_deploy -> after_script

주의할점은, travis.yml이 아니라 .travis.yml 즉, 앞에 .이 붙어야 한다는 것이다. 파일을 만들었으면 커밋하고 푸시한다.

Dashboard 확인

Dashboard로 들어가서 My builds 탭으로 이동해보면 위처럼 무언가 실행되고 있다는 것을 확인할 수 있다.

클릭해서 들어가보면 상세한 실행 내역을 확인할 수 있다.

특정 브랜치에만 적용

모든 브랜치에 CI가 돌 필요는 없다. 일반적으로 Git flow에 따르면 master, develop정도만 CI가 돌아야할 필요성이 있다고 볼 수 있기 때문에 특정 브랜치에서만 돌도록 설정해주면 좋다. .travis.yml에 아래의 내용을 추가한다.

# 원하지 않는 브랜치를 적고 싶으면 아래와 같이 except를 사용한다.
branches:
  except:
  - legacy
  - experimental

# 원하는 브랜치만 적고 싶으면 아래와 같이 only를 사용한다.
branches:
  only:
  - master
  - stable