forked from aws/aws-codedeploy-agent
-
Notifications
You must be signed in to change notification settings - Fork 0
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 문법을 잘 아는 건 아니기 때문에 참고할 링크가 몇 개 필요하다.
- https://pkgpl.org/2014/07/26/rakefile_basic/
- https://github.com/ruby/rake
- https://ruby.github.io/rake/
기본 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가 된다는건 말이 안된다.
뭔가 내가 빼먹은게 있다. 지금은 잘 모르겠고, 일단 여기까지만 해보자.