오픈스택 기여 방법

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.....
...
...

여기까지하면 공개키 생성과 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








리뷰 연습하기

  • 그러면 아래와 같이 스토리가 생성이 됩니다.
  • 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

여기까지가 기여자의 역할 입니다. 이렇게 올린 코드에 메인테이너가 리뷰를 달아주면 위 과정을 통해 패치 코드를 다시 올릴 수 있습니다.




코어 리뷰어 역할

  • 마지막으로 코멘트를 달아줍니다.

  • 모든 리뷰가 끝났으니 Code-Review 2점과 Workflow 1점을 주면 됩니다.

  • 조금만 기다리다 보면 아래와 같은 Merged과 되고 Zuul이 Verifiled +2를 주고 코드가 머지 되면서 끝납니다