OpenStack Gerrit 계정 생성 및 커밋 환경 설정하기
- OpenStack 커뮤니티에 기여하기 위해 Git을 기반으로 코드 리뷰 서비스를 제공하는 Gerrit과 OpenStack에서 발생하는 이슈를 관리하는 Storyboard를 사용하는 방법에 대해 안내해드리겠습니다.
- https://login.ubuntu.com/
- 회원가입 이후 review.opendev.org 로그인
http로 셋팅 URL
https://accelazh.github.io/openstack/Submit-Code-To-Openstack-Gerrit-Using-Https-Copy
1. Gerrit 계정 생성하기
-
Gerrit과 Storyboard를 사용하려면 모두 회원가입이 필요하고, 이 둘의 계정은 Ubuntu One이라는 계정을 생성하면 모두 통합해서 관리하는 것이 가능해집니다.
-
그래서 한 개의 계정을 생성하면 나머지 서비스들은 소셜 로그인 형태로 접근해 사용하는 것이 가능합니다.
-
Ubuntu One에 회원가입하고, Gerrit 페이지에서 새로운 컨트리뷰터로서 활동하겠다는 서약에 동의하면, 이제 Gerrit에서 코드 리뷰를 할 수 있는 권한이 생성됩니다.
-
review.opendev.org에 접속하여 로그인하고 오른쪽 상단에 톱니바퀴를 누릅니다.
-
그러면 아래와 같이 계정 정보가 보이는데 여기서 Username을 기억해야 합니다.
- 터미널로 Gerrit 설정할 때 본인의 Gerrit Username을 반드시 등록해야하기 때문입니다.
-
gerrit에서 사용할 ssh key를 생성합니다.
ssh-keygen -t rsa -b 4096 -C "$사용자이메일"
- 그럼 아마 파일 이름 및 보안 비밀번호 설정 등을 언급하는데, 외부로 유출할 게 아니라면 전부 엔터를 눌러줍니다. (총 3번)
- 2,3번째에 패스워드를 설정해도 됩니다. (선택)
...
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
...
- 그 후에
~/.ssh/config
경로에config
라는 파일을 생성해서 아래와 같은 내용을 설정해줍니다.
vi ~/.ssh/config
Host review.opendev.org review
Hostname review.opendev.org
Port 29418
User $your_gerrit_username
IdentityFile ~/.ssh/$SSH_Key_File_Name # ex) ~/.ssh/id_rsa
- 그 다음 방금 생성한 ssh키의 공개키(*.pub) 내용을 복사해줍니다.
cat ~/.ssh/$SSH_Key_File_Name.pub # ex) ~/.ssh/id_rsa.pub
ssh-rsa AAAA.....
...
...
-
복사한 pub 파일의 내용을 아래에다가 붙여넣고 추가하기 버튼을 눌러줍니다.
-
그러면 다음과 같이 설정이 됩니다
-
ICLA 설정
여기까지하면 공개키 생성과 Gerrit 계정 설정이 마무리됩니다.
2. Gerrit을 로컬에서 사용하기 위한 git-review 설치하기
- 아래 명령어를 사용해서 git-review라는 모듈을 설치해줍니다.
pip3 install git-review
- 모듈 설치가 끝났다면,
sandbox
프로젝트를 클론 받습니다.
git clone https://opendev.org/opendev/sandbox.git
- 클론 후
sandbox
디렉터리로 이동 후 바로 아래 설정을 추가적으로 해줍니다.
cd sandbox
git config --global --add gitreview.username "$Gerrit_Username" # "yoonsoolim"
git config --global core.editor vim
- 마무리로 아래 명령어를 입력해주면 모든 설정이 끝납니다.
git review -s
리뷰 연습하기
- https://storyboard.openstack.org/#!/project/opendev/sandbox접속한 후에 로그인을 합니다.
- story를 아래와 같이 등록합니다.
- 그러면 아래와 같이 스토리가 생성이 됩니다.
- URL에 있는 번호는
Story ID
중간에 있는 번호는Task ID
입니다.
-
파이참에서 클론 받은
sandbox
를 열어줍니다. -
아래와 같이 sandbox 프로젝트에 새로운 파일을 만듭니다.
-
그리고 print안에 일부러 오타 내용을 넣어줍니다.
-
파이참 터미널을 열어 아래와 같이 git으로 파일을 추가 후 commit 메세지를 작성 할 준비를 합니다.
-
git commit
을 실행하면 아래처럼 commit 메세지를 작성할 수 있는 창이 열립니다. -
commit 메세지 작성 규칙은 `한줄이 79자를 넘으면 안된다.` 라는 규칙이 있습니다.
-
2번째 라인(약 79자)을 넘기지만 않으면 됩니다.
-
아래와 같이 제목과 본문을 적고 story ID과 task ID를 넣어줍니다.
- 그리고
git review
를 입력해줍니다. - 성공하면 아래와 같이 링크를 출력해줍니다.
git review
...
remote: SUCCESS
remote:
remote: https://review.opendev.org/c/opendev/sandbox/+/850539 title: contribution [NEW]
remote:
To ssh://review.opendev.org:29418/opendev/sandbox.git
...
-
만약 아래와 같은 오류가 발생할 수도 있는데 이유는 commit 메시지에 Changed-Id가 없어서 발생하는 오류이다.
-
아래 명령어을 입력하며 changed-Id를 넣어주자.
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 yoonsoolim@review.opendev.org:hooks/commit-msg ${gitdir}/hooks/
git commit --amend --no-edit
- 안내해준 링크로 들어가보면 아래와 같이 추가한 파일과 커밋 메세지가 보인다.
코어 리뷰어 역할
-
이젠 코어 리뷰어가 되어 수정된 파일에 대한 리뷰를 남기는걸 해보겠습니다.
-
아래 Add한 파일을 클릭 해줍니다.
-
지금은 1라인 밖에 없지만, 리뷰를 달고자 하는 라인숫자를 누르고 아래와 같이 리뷰를 입력해줍니다.
-
그리고 SAVE를 클릭해줍니다.
-
그리고 우측 상단에 `Up`을 누릅니다.
-
REPLY를 누른 후 상대방에게 내가 한 피드백을 보내주기 위해 Code-Review와 Workflow를 각 0점으로 주고 SEND를 누릅니다.
코드 기여자 역할
-
코드 수정자가 아래 처럼 피드백을 확인할 수 있습니다.
-
다시 파이참으로 넘어와 코드를 피드백 받은것처럼 수정을 합니다.
주의사항
- sandbox는 여러 사람이 연습용으로 사용하기 때문에 수시로 repo가 변경될 수 있으니 add 전 pull 당겨서 최신화를 체크해줍니다.
git pull
-
다시 add 와 commit을 수행해줍니다.
-
commit은 github처럼 새로 commit을 만들지 않고 기존 commit을
--amend
를 이용해 수정을 해줍니다. -
commit 내용은 바꿔도 되고 안바꿔도 됩니다.
-
아래와 같이 다시 git review를 실행 합니다.
git review
-
그러면 새로운 Patchset 2가 생성되어 있는것을 확인할 수 있습니다.
-
다시 수정한 파일을 클릭해줍니다.
-
Base를 눌러 Patchset 1로 바꾸어 줍니다.
-
그리고 REPLY를 눌러 코맨트를 달아줍니다.
-
아래 체크박스를 클릭해주고 우측 상단에
Up
버튼을 클릭해줍니다. -
마지막으로 작성한 코멘트를 전달하기 위해 다시 0점을 줍니다.
여기까지가 기여자의 역할 입니다. 이렇게 올린 코드에 메인테이너가 리뷰를 달아주면 위 과정을 통해 패치 코드를 다시 올릴 수 있습니다.
코어 리뷰어 역할
-
마지막으로 코멘트를 달아줍니다.
-
모든 리뷰가 끝났으니 Code-Review 2점과 Workflow 1점을 주면 됩니다.
-
조금만 기다리다 보면 아래와 같은 Merged과 되고 Zuul이
Verifiled +2
를 주고 코드가 머지 되면서 끝납니다