GitHub Actions를 사용하여 할 일 주석을 추적하는 방법

소프트웨어 개발자라면 다음 시나리오에 익숙할 것입니다. 새로운 기능에 대해 작업하거나 버그를 수정하려고 하는데 일부 코드를 읽는 동안 기존 코드를 읽는 동안 더 좋은 작성 방법이 있음을 알게 됩니다. 또는 잠재적인 엣지 케이스가 처리되지 않을 수 있습니다.
그러나 여기서 어디로 가야합니까? 할일 댓글을 작성하고 미래의 자신이 처리하도록 하세요!



이것이 최적의 솔루션이 아닐 수도 있지만 수정 사항이 너무 복잡하여 바로 구현할 수 없는 경우 반복적으로 내 브라우저로 전환하고 의미 있는 설명이 있는 문제를 생성하는 것이 상당히 산만해질 수 있으므로 여전히 정기적으로 todo 주석을 사용합니다.

Jira 문제와 동기화된 할 일 댓글을 유지하는 방법



그러나 이것은 문제를 가져옵니다. 이러한 할일은 Jira 보드와 분리되어 있으므로 스프린트를 계획할 때 고려하지 않았습니다.
코드의 주석을 Jira 문제와 수동으로 동기화하려면 상당한 노력이 필요합니다. 우리는 주기적으로 전체 코드베이스를 검토하고 새로운 할 일에 대한 문제를 생성해야 할 뿐만 아니라 해당 항목이 제거된 경우 문제와 할 일을 삭제해야 합니다.
대신 Jira 마켓플레이스에서 여러 GitHub 통합을 살펴보았지만 유사한 기능을 가진 기존 솔루션을 찾을 수 없었기 때문에 할일을 자동으로 추적하는 데 도움이 되는 GitHub Action을 구현하기로 결정했습니다.


구조에 대한 GitHub 작업



무언가가 메인 브랜치로 푸시될 때마다 Python 스크립트를 호출하여 어려운 작업을 수행하는 GitHub 워크플로가 트리거됩니다.
스크립트 자체는 다음 정규식을 사용하여 Python 파일에서 할 일 주석을 찾습니다.

pattern = r"(^[ \t]*#) TODO ?\[(LOWEST|LOW|MEDIUM|HIGH|HIGHEST|[A-Z]*?-[0-9]*?)\]:(.*$\n(\1 {2}.*$\n)*)"


걱정하지 마세요. 이 표현이 어떻게 작동하는지 자세히 설명하지는 않겠지만, 본질적으로 우리의 todo 주석이 특정 구문(대문자 TODO로 시작하는 주석은 대괄호 안에 우선 순위가 있고 콜론) 스크립트가 감지할 수 있도록 합니다.
문법적으로 올바른 할 일이 모두 발견되면 다음과 같이 처리됩니다.

  • 새 할 일에 대한 문제 만들기: 새 코드가 저장소의 기본 분기에 병합될 때마다 스크립트는 모든 새 할 일을 감지하고 지정된 우선 순위와 설명으로 Jira 문제를 만듭니다. 생성된 문제에는 더 많은 컨텍스트를 위한 실제 댓글에 대한 github 링크가 포함되어 있으며 나중에 빠르게 찾을 수 있도록 별도의 레이블로 태그가 지정됩니다. 또한 생성된 이슈에 대한 참조를 포함하도록 댓글을 수정합니다. 이는 중복된 이슈 생성을 방지하는 데 사용될 뿐만 아니라 댓글을 발견하고 예를 들어 이미 작업 중인 사람이 있는지 확인하려는 경우 매우 유용합니다.

    # before
    # TODO [HIGH]: Do something very important here
    
    # after
    # TODO [ENG-123]: Do something very important here
    


  • 종료된 문제에 대한 todos 삭제: 현재 우리의 코드베이스는 매우 빠르게 발전하고 있으며 때때로 사용되지 않는 일부 문제를 종료했습니다. 할 일 댓글과 문제를 자동으로 동기화하기 위해 스크립트는 해당 문제가 종료될 때 할 일 댓글도 삭제합니다.
  • 할 일 삭제 시 태그 문제: 이제 처리해야 할 사례가 하나뿐입니다. 할 일 주석이 삭제되고 해당 문제가 아직 열려 있으면 어떻게 됩니까? 실수로 삭제된 댓글을 방지하기 위해 문제를 자동으로 종료하지 않고 신중하게 처리하기로 결정했습니다. 대신 스크립트는 이러한 "고아"문제에 별도의 레이블을 추가하여 계획 회의 중에 실제로 종료해야 하는지 여부를 쉽게 논의할 수 있습니다.

  • 자세한 내용에 관심이 있거나 프로젝트에 유사한 항목이 있는 경우 script 및 함께 제공되는 GitHub workflow 을 확인하십시오.

    Michael Schuster는 ZenML의 기계 학습 엔지니어입니다.

    좋은 웹페이지 즐겨찾기