했다! 컨트리뷰션. 작년 11월에. 그리고 10개월만에 머지되었다. 10월에 배포될 Train 버전에 포함된다.

기차로-가자

기차로 오픈스택 타자!

리뷰 요청 보낸 직후에 쓰려고 했지만 미루다보니 지금까지 왔다. 그래도 다음에 또 해야하니 참고 자료로 정리해보자. 두번 삽질할 필요는 없다.

OpenStack 리뷰 요청

일반적으로 github을 베이스로 하는 오픈소스들은 clone > modify > pull request의 단계로 진행한다. 그러나 OpenStack과 같이 거대한 프로젝트는 별도의 리파지토리를 사용하는 케이스가 많다. 그렇기 때문에 리뷰를 요청하는 방법이 제각각이다. 보통은 컨트리뷰션 가이드를 제공하니 잘 읽어보고 하면 된다. 오픈스택 컨트리뷰션 가이드Swift 컨트리뷰션 가이드를 참조하자.

당신이 오픈스택의 패키지 중 하나에서 버그를 발견하고 해결했다고 가정하자. 다음과 같은 순서로 리뷰를 요청할 수 있다.

런치패드에 버그 등록

오픈스택 프로젝트들은 런치패드라는 도구를 이용해 버그를 관리한다. 런치패드는 우분투 원 ID로 로그인 할 수 있다. 가입하고 로그인 하자. 런치패드 메인 화면에서 리뷰를 요청할 패키지를 검색한다. 나는 Swift를 수정했으니 Swift를 검색해 Swift 프로젝트 페이지로 이동했다. 프로젝트 페이지 우측 get involved 목록에서 Report a bug를 선택하고 버그를 등록한다. 그리고 등록된 버그의 담당자를 나로 지정한다. 내가 다 해먹는거다!

Gerrit으로 리뷰 요청

오픈스택 프로젝트의 코드 리뷰는 Gerrit을 통해 진행된다. Gerrit 역시 우분투 원 ID로 로그인 할 수 있다.

  • git-review 설치 Gerrit에 리뷰 요청을 하기 위해서는 git-review 도구가 필요하다. 각자 시스템에 맞게 설치하자. 나는 macOS니까 brew로 설치했다.
$ brew install git-review
  • gerrit 사용자 명을 입력한다.
$ git config --global gitreview.username {사용자명}
  • git review를 초기화 한다.
$ git review -s
The authenticity of host '[review.opendev.org]:29418 ([104.130.246.32]:29418)' can't be established.
RSA key fingerprint is SHA256:RXNl/GKyDaKiIQ93BoDvrNSKUPFvA1PNeAO9QiirYZU.
Are you sure you want to continue connecting (yes/no)? yes
Creating a git remote called 'gerrit' that maps to:
ssh://arzhna@review.opendev.org:29418/openstack/swift.git

$ git remote get-url gerrit
ssh://arzhna@review.opendev.org:29418/openstack/swift.git
  • 수정사항을 반영한다. 브랜치는 옵션
    $ git commit
    
  • 리뷰를 요청한다.
    $ git review
    

요청이 성공하면 Gerrit 리뷰 페이지의 URL이 응답에 포함되어 온다. 커밋 메시지에 뭔가 부족하다면 에러 메시지로 친절하게 알려준다. 나는 Change-Id가 없다고 왔는데 어떻게 만들었지? 자동으로 만들어지는 값인데… 아마도 review 요청할 때 데이터가 온 것 같다. amend 명령으로 커밋 메시지를 수정하고 다시 review를 생성했다.

이제 리뷰 요청까지 완료했으니 기다리면 된다. 메인테이너들이 코드 리뷰를 하고 시스템이 여러가지 테스트를 진행한다. 리뷰 의견에 따라 더 수정해야할 내용이 있을 수 있다. 나는 그런 불상사 없이 그냥 통과 되었다 :) 다만 시간이 오래 걸렸을 뿐.