Skip to content

Rakefile 및 빌드 과정 탐구

Hwidong Bae edited this page Nov 6, 2018 · 3 revisions

readme.md의 build step은 다음과 같다.

git clone https://github.com/aws/aws-codedeploy-agent.git
gem install bundler
cd aws-codedeploy-agent
bundle install
rake clean && rake

이 build는 Rakefile로 실행된다. Rakefile 코드를 탐구해보자. 목적은 다음을 이해하는 것이다.

  • rake를 했을 때 어떤 과정을 거쳐 build가 되는지
  • build 결과물이 어떻게 만들어지는지

commit history를 보니 커밋 갯수가 많지 않고, 2015년에 대부분 이루어졌고, 가장 최근 커밋이 2017년 초의 커밋 두 개다. 즉 자주 변경되지 않는 안정된 파일이라고 할 수 있으며, 빌드 과정도 안정되어 있다고 추측할 수 있겠다.

Rakefile 문법을 잘 아는 건 아니기 때문에 참고할 링크가 몇 개 필요하다.

기본 rake task 이외에 세 종류의 다른 rake task가 사용된다. 모두 테스트를 위한 건데, 즉 세 종류의 다른 테스트 프레임워크를 사용한 테스트들이 있다는 것이다.

  • Rake::TestTask: 테스트를 실행하는 태스크. ruby에서 기본으로 제공.
    • test/ 안의 테스트들을 실행하는 태스크다. 보니까 RSpec이 아닌 unit-test 라는 gem을 쓴 테스트들인듯 하다.
  • RSpec::Core::RakeTask: RSpec gem에서 제공.
    • spec/ 안의 테스트들을 실행한다.
  • Cucumber::Rake::Task: Cucumber gem에서 제공.
    • features/ 안의 테스트들을 실행한다. cucumber 자체는 들어봤지만 사용하는 건 처음 봤다.
    • 통합 테스트 할 때 사용하고 있다. (rake test-integration)

파라미터 없이 rake를 실행하면 default task가 실행된다.

  • default task는 :version_tracking 태스크와 :test 태스크를 실행한다.
  • :version_tracking은 가장 최근 커밋의 해시로 .version 파일을 만든다. (즉 중요하지 않다.)
  • :test는 위에서 봤듯 test/안의 unit test들을 테스트한다. 그리고 :spec 태스크를 실행한다.
  • :spec 역시 위에서 봤듯 spec/ 안의 테스트들을 실행한다.

이게 끝인데... 그럼 대체 빌드는 어디서 일어나는거지?? test를 하면 build가 된다는건 말이 안된다.

뭔가 내가 빼먹은게 있다. 지금은 잘 모르겠고, 일단 여기까지만 해보자.

Clone this wiki locally