반응형


Github와 Circleci 연동

 

CI

  • Continuous Integration의 약자로, 지속적 통합이라는 의미를 가지고 있다. 
  • 대형 프로젝트의 경우, 다수의 개발자들이 지속적으로 개발을 진행하면서 점점 저장소가 기존 개발 베이스에서 크게 달라지게 되는데,
    이로 인해 개발된 코드를 통합(Integration)하는데에 작업하는 시간보다 통합하는 시간이 오히려 더 오래 걸릴 수 있고, 심지어는 아예 제로베이스에서 처음부터 개발을 진행하는 것이 더 빠른 경우도 있다고 한다.
  • 이러한 문제점을 해결하기 위해 나온 개념이 커밋 단위로 통합과정과 테스트를 거치는 CI개념이다.

CD

  • Continuous Deploy의 약자로, 지속적 배포의 의미를 가지고 있다.
  • 소스코드를 배포하기 위해 해야하는 과정을 자동화하여 실행하는 것으로, CircleCI의 경우 깃허브의 커밋당 한번씩 배포를 진행한다.
  • 배포 과정은 사용자가 정의할 수 있으며, React에서는 빌드한 결과물을 웹서버에서 돌린다거나, npm install을 실행시킨다거나, make 명령어를 통해 테스트를 진행하는등의 과정을 진행한다.

Circleci

  • 무료 CI/CD 툴, Bitbucket이나 Github와의 연동이 쉽고 간단하여 많이 사용된다.
  • 빌드는 한번에 1개만 가능하다는 한계점이 있다.
  • 개인프로젝트 등에서는 CI(Continuous Integration)보다는 CD(Continuous Deploy)의 목적으로 많이 사용된다.
  • Docker기반으로 OS를 실행시켜 빌드를 실행할 수 있도록 컨테이너를 지원해준다.

1. 회원 가입

 

 

공식웹페이지 : https://circleci.com에 접속 한 뒤, SignUp을 클릭한다.

 

 

그 후, 연동하고자 하는 버전관리 툴에 따라서 Github나 Bitbucket 버튼을 클릭한다.

 

 

연동이 완료되었다면, 자신의 깃허브 레포지토리가 나타난다. 

여기서 Set Up Project 버튼을 클릭하면 연동이 완료된다.

 

2. 빌드 workflow 정의

 

 

아마 연동후에 바로 빌드를 하게 되면 연동이 완료는 되었지만, 아마 Build Error라는 오류 메세지를 보게 될 것이다.

그 이유는 아직 빌드를 어떻게 할건지를 결정하는 Job workflow를 정의하지 않았기 때문이다.

Circleci에서는 일종의 단위 작업인 job과, job들을 호출하는 workflow를 정의한 config.yml 파일을 필요로 하므로 이 파일을 생성해주어야 한다. 해당 리포지토리의 루트 디렉토리로 이동한 뒤 .circleci 폴더를 만들고, 그 안에 config.yml 파일을 만든다.

 

최근 필자가 진행하고 있는 블록체인 프로젝트의 config.yml 파일 예시를 통해 config.yml 작성법을 소개한다.

 

# Golang CircleCI 2.0 configuration file
version: 2
# 빌드 작업을 정의한 jobs 스크립트 형식으로 작성
jobs:
  # job의 이름을 정의, 굳이 build로 할 필요는 없지만 일반적으로 build를 사용한다.
  build:
  	# 빌드를 실행할 도커 이미지를 설정한다.
    # circleci에서 제공하는 이미지를 사용해야 한다.
    # https://circleci.com/docs/2.0/circleci-images/
    docker:
      # Ethereum의 프로그래밍 언어인 Go 컴파일을 해야하므로 go 이미지 세팅
      - image: circleci/golang:1.9
	
    # Go의 workspace를 설정해준다.
    working_directory: /go/src/github.com/Votereum/votereum-core
    
    steps:
    # Deploy의 과정을 한단계씩 정의한다.
      # 소스를 checkout 하는 과정
      - checkout
      # 코드 전체를 컴파일 하는 과정
      - run: make all
      # 테스트 실행
      - run: make test
      # 테스트 성공시 good 출력
      - run: echo "good"

workflows:
  version: 2
  build:
    jobs:
      # 위에서 작성한 job의 이름을 기입하면 된다.
      - build

 

3. 배포 및 테스트

 

프로젝트 소스에 맞는 config.yml을 작성하였다면, Github에 config.yml을 Push한다.

 

$ git add .circleci
$ git commit -m "Activate Circleci config"
$ git push

 

그러면 Github와 연동되어있는 Circleci에 커밋이 Trigger가 되어 자동으로 빌드 및 배포가 진행된다.

 

 

배포가 성공하면 아까 정의했던 echo "good" 명령에 의해 good이 출력되고 종료된다.

만약 오류가 발생한다면 에러 로그를 확인할 수 있기 때문에, 번거롭게 깃허브에 올리고 로컬에서 테스트할 필요가 없어진다.

 

 

참조


  • https://circleci.com
  • https://circleci.com/docs/2.0/writing-yaml/#section=configuration
반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,