오픈소스 컨트리뷰션에 멘티로 참여했습니다. 제 목표 오픈소스는 ArgoWorkflows.
멘티로 첫번째 활동에 대한 기록입니다.
멘티로 첫번째 활동에 대해 지령을 받았습니다. 오픈소스 기여에 필요한 내용들을 연습하기 위해 멘토님이 레포지토리를 하나 만들어 주셨는데 해당 레포지토리를 fork해서 주어진 이슈 템플릿을 골라 생성하고 목표를 이뤄야 했는데 목표는 간단했습니다.
docs/users/[이름].md 문서 추가하기
docs/users/users.md 에 내 md문서 링크 걸기
단! PR컨벤션 지키기,커밋 메시지 컨벤션 적용해보기(optional), DCO 봇의 체크 통과하기, GPG를 이용해 서명된 커밋 작성하기
다른건 몰라도 GPG, DCO봇은 처음 들어보는거였는데 친절하게 참고링크도 다 걸어주셔서 금방 이해했습니다👍
GPG란? (GNU Privacy Guard)
GPG란 PGP 라는 전자우편 암호화 도구를 기반으로 만든 소프트웨어로 여러가지의 암호화를 지원하며 디폴트로 RSA 알고리즘을 사용합니다.
사용 이유
깃허브에서 이 GPG 키를 등록하면 커밋, 태그에 로컬로 서명하여 사람들에게 변경 내용에 출처에 대한 신뢰를 줄 수 있습니다. 검증된 커밋이라고 위에 보이는 사진처럼 Verified 태그도 달아주죠! 무엇보다 ArgoWorkflows 프로젝트에는 검증된 커밋을 사용해 커밋을 올리라는 조건이 존재했습니다.
GPG 설치 및 설정
저는 맥os 사용자이기에 brew를 이용했습니다.
gpg --gen-key를 입력하면 이름, 이메일을 입력하라고 나오는데 사용하실 이름과 이메일을 입력하시면 됩니다. (이메일은 깃허브에 등록해야하니 깃허브에 등록된 이메일과 통일하시면 편해요!) 그리고 다 입력했다면 O 를 입력해주면 프롬프트가 나오는데 앞으로 커밋을 보낼 때 등등 사용할 암호를 설정해주시면 됩니다. 계속 사용하니 잊지않는걸로 설정하세요!
완료되면 해당 메세지가 보일텐데 여기 보이는 key는 나중에 필요하니 따로 메모장같은곳에 적어두시는걸 추천합니다! RSA3072 암호화 알고리즘을 적용했다고 합니다.
그리고 위처럼 깃 설정을 변경 해주시면 됩니다! email, name, signingkey에는 위에서 입력한 이메일과 이름 그리고 키를 입력하시면 됩니다.
그리고 다른 프로젝트에서 커밋 메세지를 작성해 보시면 비밀번호 입력하는 창이 나올겁니다! 커밋을 추가하시고 git log를 확인하면 gpg 서명이 되어있는걸 확인하실 수 있습니다.
암호를 묻는 창이 나오지 않고 에러가 나온다면 export GPG_TTY=$(tty) 을 입력후에 다시 시도해보세요.
저는 IDE를 껐다가 프로젝트 킬때마다 에러가 생겨서 고정했는데 만약 고정하고 싶으시다면 맥os에 root폴더에서 숨김파일을 해제하신 후 .zshrc 파일에 하단에 저 코드를 입력해두시면 다시 입력해주지 않아도 괜찮습니다👍
깃허브에 GPG키 등록해주기
아까 말씀드린것처럼 이메일을 등록해줘야 하는데 이미 등록되어 있으시다면 이메일 등록은 넘어가시면 됩니다.
GPG키를 이제 github에 등록해줘야하는데 프로필을 눌러 Settings에 들어가신 후 SSH and GPG Keys 를 클릭하시면 new GPG key를 눌러 등록하시면 됩니다.
넣어줘야할 내용은 터미널로 돌아가셔서 gpg --armor --export [아까 등록할때 받은 키]를 입력하시면 이런 내용을 받을 수 있는데 절취선까지 모두 복사해서 깃허브에 넣어주시면 됩니다. 그럼 키까지 등록 완료! 이후에 커밋을 올려보시면 Verified 태그가 달린걸 확인할 수 있습니다.
github DCO(Developer Certificate of Origin) 통과하기
DCO는 오픈소스 프로젝트에 컨트리뷰터가 PR 등 코드에 자신의 기여를 인증하는 방법입니다. 모든 커밋 메시지에 작성자와 일치하는 이메일 주소가 포함되어야 합니다.
DCO봇 체크를 하는 방법은 간단합니다!
이런식으로 -s 옵션을 걸어주면 커밋 하단에 이미지 처럼 자동으로 Signed-off-by: [이름] [이메일]이 들어가게 되고 DCO봇의 체크를 넘어가게 됩니다.
후기
리액트쿼리 튜토리얼에 기여하며 그냥 fork 후에 PR을 올리면 끝인 줄 알았는데 이런 절차들이 있는 줄 꿈에도 몰랐습니다.. 아직 오픈소스에 기여하기 위한 준비단계 이지만 이름있는 프로젝트에 기여할 생각하니 벌써부터 재밌는거 같아요 남은 활동도 열심히 해보겠습니다🔥