openstack에 컨트리뷰션 해보기

27
Sejong System Engineering Laboratory [email protected] Kim Young Woo OpenStackContribution 하는 법 OpenStack Korea Community 2016 fall upstream training study 2017-02-10 1

Upload: -

Post on 12-Apr-2017

555 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Openstack에 컨트리뷰션 해보기

Sejong System Engineering Laboratory

[email protected]

Kim Young Woo

OpenStack에 Contribution 하는법OpenStack Korea Community

2016 fall upstream training study

2017-02-101

Page 2: Openstack에 컨트리뷰션 해보기

2017-02-102

명령어는우분투 16.04 기준으로작성됬습니다.

(패키지다운명령어를제외하고별차이없음)

Page 3: Openstack에 컨트리뷰션 해보기

Contents• IRC 참여하기

• Contribution을위한계정등록

• 일반적인 Github Workflow vs OpenStack Contribution Workflow

• Sandbox에 Commit 해보기

• 실제 Commit 해보기

2017-02-103

Page 4: Openstack에 컨트리뷰션 해보기

2017-02-104

IRC 참여하기

Page 5: Openstack에 컨트리뷰션 해보기

프로젝트 IRC 채널참여하기 (https://wiki.openstack.org/wiki/IRC 에서채널과 IRC 로그들확인가능)

• IRC 클라이언트이용 (network : freenode, channel : 위링크에서선택)

• 예)

1. https://hexchat.github.io/downloads.html 에서 IRC Client 다운, 설치

2. Nickname, username 입력후 freenode network로 connect

2017-02-105

IRC 참여하기

Page 6: Openstack에 컨트리뷰션 해보기

프로젝트 IRC 채널참여하기 (https://wiki.openstack.org/wiki/IRC 에서채널과 IRC 로그들확인가능)

• IRC 클라이언트이용 (network : freenode, channel : 위링크에서선택)

• 예)

3. Server -> Join Channel 클릭후원하는 channel 입력

2017-02-106

IRC 참여하기

Page 7: Openstack에 컨트리뷰션 해보기

프로젝트 IRC 채널참여하기 (https://wiki.openstack.org/wiki/IRC 에서채널과 IRC 로그들확인가능)

• IRC 클라이언트이용 (network : freenode, channel : 위링크에서선택)

• 예)

2017-02-107

IRC 참여하기

Page 8: Openstack에 컨트리뷰션 해보기

2017-02-108

Contribution을위한계정등록

Page 9: Openstack에 컨트리뷰션 해보기

1. Openstack foundation 계정만들기 (https://www.openstack.org/join/ 에서가입가능)

1. Community Member가 아닌 Foundation Member로 가입

2017-02-109

Contribution을위한계정등록

2. Gerrit 이용을위한 Ubuntu one 가입하기 (http://launchpad.net/ 에서가입가능)

1. http://review.openstack.org 에로그인2. 오른쪽위의아이디클릭 -> settings -> username 생성3. 왼쪽메뉴에서 agreements에서 ICLA 동의4. Contact Information에서 save changes 클릭 (Contact Information last updated on ~~ 문구가나와야함)

5. SSH Public Keys에 SSH 키등록

참고• Gerrit 이란 ? (http://review.openstack.org)

• Gerrit is a free, web-based team code collaboration tool. (출처 : wiki)

• Git 과연동해서사용하는코드리뷰툴

• Launchpad 란? (http://launchpad.net)• Launchpad is an open source suite of tools that help people and teams to work together on software projects. (출처 : launchpad 홈페이지)

• 버그리포팅, 할당, 수정, 추적등을통해버그들을관리하는툴

• 오픈스택의공식저장소는 git.openstack.org 지만 github.com/openstack 에도미러링됨. Gerrit의 email과 github email이동일하면컨트리뷰션내용이 github에연동됨

Page 10: Openstack에 컨트리뷰션 해보기

2017-02-1010

Contribution을위한계정등록

Gerrit에 ssh key 등록하기1. Ssh key 생성

1. $ ssh-keygen

2. 계속엔터

2. Ssh 공개키복사1. $ cd ~/.ssh

2. $ cat id_rsa.pub

3. 출력된공개키복사

Page 11: Openstack에 컨트리뷰션 해보기

2017-02-1011

Contribution을위한계정등록

Gerrit에 ssh key 등록하기3. gerrit에등록

1. http://review.openstack.org 접속/ 로그인

2. 우측상단에계정클릭, Settings 클릭

3. 좌측메뉴중 SSH Public Keys 클릭, Add key 클릭

4. 복사한공개키붙여넣기후Add 클릭

Page 12: Openstack에 컨트리뷰션 해보기

2017-02-1012

일반적인 Github Workflow vs OpenStack Contribution Workflow

Page 13: Openstack에 컨트리뷰션 해보기

일반적인 Github workflow

2017-02-1013

일반적인 Github Workflow vs OpenStack Contribution Workflow

Origin

저장소내저장소

1. fork

Local

2. Clone

Github

내저장소

3. Branch 생성후작업

5. Push

4. Local에 Commit

6. Pull Request 승인후 merge

Page 14: Openstack에 컨트리뷰션 해보기

OpenStack Contribution Workflow

2017-02-1014

Origin

저장소

Local

1. Clone

Openstack Git Repository

내저장소

2. Branch 생성후작업

4. git-review로 gerrit에 push

3. Local에 Commit

Gerrit

Patch

5. Jenkins, Community

member에의한 review

및테스팅

6. Review 반영및충돌해결

7. Merge

일반적인 Github Workflow vs OpenStack Contribution Workflow

Page 15: Openstack에 컨트리뷰션 해보기

2017-02-1015

Sandbox에 Commit 해보기

• Sandbox 란 ? • 샌드박스는 실험적 의미의프로그램을 연결하는 곳을지칭하기도 한다. (wiki)

• 즉, 연습용저장소

Page 16: Openstack에 컨트리뷰션 해보기

1. git 설치하기1. $ sudo apt install git

2. $ git config --global user.name “YOURNAME” (gerrit의 username과 동일하게기입)

3. $ git config --global user.email “YOUREMAIL” (gerrit에 등록된 email과 동일하게기입)

2017-02-1016

Sandbox에 Commit 해보기

2. Sandbox 저장소클론하기1. $ git clone git://git.openstack.org/openstack-dev/sandbox.git

Page 17: Openstack에 컨트리뷰션 해보기

3. git-review 설치하기1. $ sudo apt install git-review

2. $ git config --global gitreview.username “USERNAME” (gerrit에 등록된 username과 동일하게기입)

3. cd ~/sandbox (Clone 한 sandbox 저장소로이동)

4. $ git review -s (git review setup)

5. $ git config –l (설정이잘됬나확인)

2017-02-1017

Sandbox에 Commit 해보기

Page 18: Openstack에 컨트리뷰션 해보기

4. Launchpad에버그등록하기1. http://bugs.launchpad.net/openstack-dev-sandbox 접속, 로그인2. 우측상단의 Report a bug 클릭후 bug summary 입력

2017-02-1018

Sandbox에 Commit 해보기

Page 19: Openstack에 컨트리뷰션 해보기

4. Launchpad에버그등록하기3. Bug에대한추가정보입력후, Submit Bug report

4. Bug를내가해결하겠다.! 나에게할당

2017-02-1019

Sandbox에 Commit 해보기

• Bug 번호• Commit Message에 입력해 gerrit과 Launchpad를 상호참조하게 만들수있음

Page 20: Openstack에 컨트리뷰션 해보기

5. Sandbox에서버그수정하기 (이예에서는단순파일추가)

1. $ git checkout –b sandbox-bugfix-test (Sandbox 저장소에서브랜치생성및변경)

2. Sandbox에파일추가 (이행위가버그를고치는행위라가정)

3. $ git add “FILENAME”

4. $ git commit

2017-02-1020

Sandbox에 Commit 해보기

Page 21: Openstack에 컨트리뷰션 해보기

5. Sandbox에서버그수정하기 (이예에서는단순파일추가)

5. 커밋메시지작성

6. $ git review

2017-02-1021

Sandbox에 Commit 해보기

• Commit message 작성법• https://b.ssut.me/55

• https://wiki.openstack.org/wiki/GitCommitMessages

• Bug 상태명시 (Gerrit에서 버그상태를 확인할 수있는 Launchpad 링크로 생성됨)

• Closes-Bug: #~~~~ (해당 버그를 내가모두고쳤다.!!)

• Partial-Bug: #~~~~ (해당 버그의 일부만내가고쳤다. 누군가 더고쳐줘!!)

• Related-Bug: #~~~~ (이 Commit과관련된 버그를표시)

• 해당 URL에 접속하면 gerrit에 커밋이 등록된 것을확인할 수있다.

Page 22: Openstack에 컨트리뷰션 해보기

6. Gerrit 에서코드리뷰받기1. gerrit URL 접속, reviewer 추가 (제 commit review 좀해주세요~)

2. launchpad에서버그상태확인가능

2017-02-1022

Sandbox에 Commit 해보기

Page 23: Openstack에 컨트리뷰션 해보기

6. Gerrit 에서코드리뷰받기3. reviewer가 코드리뷰4. Commit이 merge (일반적으로 Code-Review +2 두번, Workflow +1 이면머지됨. Luanchpad 에서버그상태확인가능)

2017-02-1023

Sandbox에 Commit 해보기

Page 24: Openstack에 컨트리뷰션 해보기

6. Abandon된 commit 수정하기 (abandon은자기자신또는 +2 권한이있는사람만가능)

1. Commit 할내용수정

2. git add . && git commit -a --amend

3. git review

2017-02-1024

Sandbox에 Commit 해보기

Page 25: Openstack에 컨트리뷰션 해보기

2017-02-1025

실제 Commit 해보기

Page 26: Openstack에 컨트리뷰션 해보기

1. Bug 찾기 – 오타발견 !

2017-02-1026

실제 Commit 해보기

2. Bug 등록 (연습용)

Page 27: Openstack에 컨트리뷰션 해보기

3. 수정후 gerrit에 commit

2017-02-1027

실제 Commit 해보기

4. 코드리뷰후머지