얼마 전에 GitHub 문서를 뒤지다가 우연히 GitHub의 교육 콘텐츠를 발견했고, 그중에서 궁금했던 것 중 하나를 오늘 해봤습니다. 이름 하야 "릴리즈 기반의 워크플로우 만들기"( https://lab.github.com/githubtraining/create-a-release-based-workflow ) 이 과정을 수강(?) 아니, 따라해보고 그에 대한 간단한 소개와, 후기를 남깁니다.
과정 요약.
아래는 "릴리즈 기반의 워크플로우 만들기"의 요약 본입니다. 과정을 직접 해보신다면 영어로 더 자세하고 풍부한 설명이 있으니 직접 해보시길 바랍니다. 아래 요약은 그냥 이런 것들을 하는구나 정도로 보시면 좋겠습니다.
1. Create a beta release
시작을 누르면 Issue 하나가 생성되고, 이슈에는 교육과정에 대한 간단한 소개가 담겨 있습니다. 제일 먼저 GitHub Page 설정을 하는 것을 추천하기에 GitHub Page 설정을 한 이후에 이어 갑니다.
GitHub flow는 간단하고. 브랜치를 기반으로 하는 일반 적인 프로젝트에서 사용되지만, 몇몇 프로젝트에서는 각기 다른 구조의 버전과 릴리즈를 가질 수 있다고 설명하며, 버전의 의미와 형태에 대한 설명이 이어진 이후, 몇 가지 태스크가 주어집니다.
처음 주어진 태스크는 v0.9 pre-release를 발행하는 것입니다. 태스크를 마치면, 해당 Issue에 커멘트가 달리고, Issue는 닫히면서 2단계 Issue가 생성됩니다.
2. Create a project board
이번에는 릴리즈의 종류를 분류하는 것에 대한 문제제기로 시작하며 프로젝트 보드를 만드는 태스크를 줍니다.
태스크를 마치면 이전과 마찬가지로 약간의 해설과 다음 할 일을 제시합니다. 이번에는 프로젝트에 대한 설명과 생성한 프로젝트로 가서 정해진 카드를 만들고 진행 중으로 추가하라고 합니다.
3. Triage issues in a project
프로젝트로 이동해서 "Organizing a release" 카드를 진행중으로 이동하면, 태스크가 완료되며, 잠시 후 완료로 자동으로 이동합니다. 이제 이슈로 돌아오면, 다음 태스크로 이동하라는 안내가 나옵니다.
4. Add a new feature on the release branch
팀간의 명확한 워크플로우를 만드는 것이 중요함을 얘기하고, production, dev, master 브랜치를 그리고, feature, relesse 브랜치를 사용하는 것에 대해 간단히 설명합니다. 그리고 release브랜치에서 feature 브랜치를 만드는 태스크를 줍니다.
5. Merge the new feature to the release branch
작은 변화라도 워크플로우를 지키는 것이 중요하다는 설명과 함께, 생성한 PR을 release 브랜치에 머지하라는 태스크를 줍니다.
6. Open a release pull request
릴리즈 브랜치와 마스터 브랜치에 대해서 설명합니다. 그리고 Release 브랜치에서 Master 브랜치로의 PR생성 태스크를 줍니다. PR을 생성하면 자동으로 댓글이 달리고, 다음 태스크로 이동하라는 메시지가 출력됩니다.
7. Approve changes for the next release
PR에 대한 리뷰를 남기는 태스크를 줍니다. 리뷰를 남기고 Approve합니다. 그러면 그다음 태스크를 받습니다.
8. Install and configure a GitHub app
Drafter라는 GitHub 앱을 설치합니다. 새로운 PR을 생성하라는 태스크가 주어집니다.
9. Merge the config for Release Drafter
Drafter PR을 머지합니다.
10. Merge the release branch
이제 릴리즈 브랜치를 머지합니다.
11. Finalize the release
이제 릴리즈를 마무리하나봅니다. 릴리즈 페이지에서, v1.0.0 릴리즈를 발행하는 태스크가 주어집니다.
12. Approve a hotfix pull request
발행한 릴리즈에 문제가 생겼나 봅니다. 버그 픽스 브랜치를 통해 바로 수정하는 PR을 처리하는 태스크가 주어집니다.
13. Approve the backport pull request
이전에 했던 버그 픽스는 마스터에 바로 반영했기 때문에 release 브랜치로 가져오는 태스크가 주어집니다. 리뷰를 남깁니다.
14. Create release v1.0.1
이제 마지막으로 v1.0.1 릴리즈를 남기라는 태스크가 주어지고 태스크를 마치면, 아래와 같이 격렬한 축하를 해줍니다.
후기.
옛말에 백문이 불여일타라고, 동영상 강의건 뭐 건 간에 강제로라도 따라 해 보고 설명해주는 강의를 좋아했는데, 이 과정이 딱 그랬습니다. 뭐 워크플로우야, DevOps 환경을 만들어서 일하는 곳이라면 다들 하고 있거나 더 최적화된 워크플로우를 가지고 있을 것이라 생각되지만, 툴(GitHub)을 사용해서 어떻게 사용해가는지, 자동화하는 부분은 어떻게 하는지 직접 사용해보도록 하는 점은 GitHub을 좀 더 친숙하게 만드는 요소라고 생각합니다. 그리고 진행하는 과제 조차도 게임이라는 주제라서 흥미를 갖고 시작하게 만든 점도 좋았습니다.
제가 일하는 곳도 GitHub을 사용하는데, 이런 식으로 자동화된 교육 프로그램을 한글로 만든다면 처음 GitHub을 사용하는 사람들에게 많은 도움이 될 것 같다는 생각을 해봅니다. 90분 정도 걸린다고 하지만, 빠르게 진행하면 30분이면 충분하니 궁금하신 분들은 꼭 한번 해보시길 추천합니다.