본문 바로가기

Front-End/ETC

Travis 를 사용한 CI(Continuous Integration), CD(Continuous Delivery/Development)

Travis


- Ruby 로 작성된 오픈소스 기반의 CI(Continuous Integration), CD(Continuous Delivery/Development) 도구이다. 

- GitHub 의 프로젝트를 연결하여 테스트, 빌드 및 배포가 가능하다.




CI(Continuous Integration)/CD(Continuous Delivery/Development)


여기서 말하는 CI 란 '지속적인 통합' 으로 개발자가 개발한 소스의 빌드 과정을 주기적으로 수행하여 소스 통합 과정에서 발생하는 오류를 사전에 해결하고 이런 과정들에 필요한 시간을 줄일 수 있도록 해준다. CI 를 통해 빌드, 테스트를 자동화 하는 것이 가능하다는 이야기이다.


CI 를 통해 빌드, 테스트를 자동화 하는것이 성공하면 배포 단계로 넘어가야 하는데, 배포 단계 자동화도 가능하며, 배포 자동화에 대한 개념을 CD 라고 한다.


팀 단위 개발에 있어서 CI 는 매우 유용하게 사용 되는 도구이다. 


(Java, Spring 을 이용한 서버사이드 개발에서는 CI Server 로 Jenkins 를 사용했었다. GitLab 의 프로젝트로 Push 하면 Jenkins 가 Testcase, Coding convention 등을 체크하고 빌드가 완료되면 GitLab 의 Commit 메세지에 빌드 결과(Success/fail)를 남기고, 성공시에만 코드를 머지하는 방식으로 사용했던 경험이 있다.)




시작하기


1. Travis 를 설정하려는 GitHub Repository 를 Clone 한다. (Repository 가 없는 경우 'New Repository' 한다.)

2. Travis 에 가입한다. (Sign up with GitHub)

3. Travis 에서 'Legacy Services Integration' 항목에서 Travis 를 설정하려는 프로젝트의 엑세스 권한을 활성화 해준다.


4. (선택) Private Dependencies 를 위해 프로젝트에 GitHub access token 생성/추가 

Creating a personal access token for the command line 을 따라 Access token 생성

- Token 생성시 아래 세가지를 최소 허용 


- 'Travis > 프로젝트 선택 > More Options > Settings > Environment Variables > Add'
- Name 은 GITHUB_TOKEN,  Value 는 생성한 Access token 값을 설정한 후 Add 하면 아래와 같이 환경변수가 생성


5. Clone 한 프로젝트의 Root Path 에 '.travis.yml' 파일을 생성 (.travis.yml 작성법 참고) 

- node_js: stable (빌드하려는 node 버전 설정)

- script: - npm run build (package.json 의 build script 설정)

- deploy

- local-dir: ./dist (빌드, 배포하려는 디렉토리 설정)

- github-token: $GITHUB_TOKEN (환경변수로 등록된 변수 설정)

language: node_js
node_js: stable
script:
- npm run build
deploy:
    local-dir: ./dist
    provider: pages
    skip-cleanup: true
    github-token: $GITHUB_TOKEN # Set in the settings page of your repository, as a secure variable
    keep-history: true
    on:
        branch: master




.gitignore 에 등록된 ./dist 배포하기


프로젝트 생성시 .gitignore 목록에 빌드 폴더인 ./dist 를 추가했다. 
하지만 Git Pages 를 사용하게되면서 빌드 폴더인 ./dist 에 있는 빌드 파일을 배포해야 했기 때문에 Travis 를 사용하게 되었다.
먼저 .travis.yml 파일의 script 영역에 작성한 npm run build 스크립트를 수행하면 ./dist 폴더에 빌드된 파일들이 생성되고, Travis 가 deploy 설정에 따라 ./dist 폴더를 빌드하고 배포하는 과정을 거치게 된다.