Danger bot
GitLab CI/CD 파이프라인에서 Danger를 사용하여 코드 변경 사항을 자동으로 검사하는 danger-review job의 동작 방식과 개발 가이드라인을 설명합니다.
GitLab CI/CD 파이프라인에는 danger-review job이 포함되어 있으며, 이 job은 Danger 를 사용하여 테스트 중인 코드에 대해 다양한 자동 검사를 수행합니다. Danger는 다른 분석 도구와 마찬가지로 CI 환경에서 실행되는 gem입니다. Danger가 (예를 들어, RuboCop과) 다른 점은, 코드나 변경 사항의 속성을 테스트하기 위한 임의의 코드를 쉽게 작성할 수 있도록 설계되어 있다는 것입니다. 이를 위해 Danger는 공통 헬퍼 세트와 실제로 환경에서 변경된 내용에 대한 접근을 제공하고, 작성한 코드를 실행합니다! Danger가 머지 리퀘스트에서 무언가를 변경하도록 요청하는 경우, 그 변경을 수행하는 것이 가장 좋습니다. Danger의 작동 방식을 이해하거나 기존 규칙을 변경하려는 경우, 이 문서가 도움이 됩니다. 머지 리퀘스트에서의 Danger 코멘트 # Danger는 코멘트를 하나만 게시하고, 이후 danger-review 실행 시 해당 내용을 업데이트합니다. 따라서, Danger 코멘트는 일반적으로 머지 리퀘스트의 첫 번째 또는 초기 몇 개의 코멘트 중 하나입니다. 코멘트를 찾을 수 없다면 머지 리퀘스트의 처음부터 확인해 보세요. 장점 # danger-review 가 실행될 때마다 이메일 알림을 받지 않아도 됩니다. 단점 # Danger가 기존 코멘트를 업데이트한다는 것이 명확하지 않으므로, 업데이트 여부에 주의를 기울여야 합니다. Danger 토큰이 교체되면 혼란/복잡성이 생깁니다(이전 코멘트를 업데이트할 수 없기 때문입니다). Danger 로컬 실행 # 현재 검사 중 일부는 다음 Rake 태스크를 사용하여 로컬에서 실행할 수 있습니다: bin/rake danger_local 동작 방식 # 시작 시, Danger는 프로젝트 루트에서 Dangerfile 을 읽습니다. GitLab의 Danger 코드는 danger/ 하위 디렉터리 내의 헬퍼와 플러그인 집합으로 분리되어 있으므로, 우리의 Dangerfile 은 Danger에게 이를 모두 불러오도록 지시합니다. Danger는 각 플러그인을 머지 리퀘스트에 대해 실행하고, 각각의 출력을 수집합니다. 플러그인은 알림, 경고 또는 오류를 출력할 수 있으며, 이 모두는 CI job 로그에 복사됩니다. 오류가 발생하면 CI job(및 전체 파이프라인)이 실패합니다. 머지 리퀘스트의 경우, Danger는 MR 자체의 코멘트에도 출력을 복사하여 가시성을 높입니다. 개발 가이드라인 # Danger 코드는 Ruby 코드이므로, 모든 일반 백엔드 가이드라인 이 계속 적용됩니다. 그러나 특별히 강조할 만한 몇 가지 사항이 있습니다. Danger를 언제 사용해야 하는가 # Danger는 강력하고 유연한 도구이지만, 특정 문제나 워크플로를 해결하는 데 항상 가장 적합한 방법은 아닙니다. 먼저, GitLab의 dogfooding 원칙 을 인지하세요. Danger를 위해 작성하는 코드는 GitLab에 특화되어 있으며, 우리가 직면하는 필요를 해결하는 기능을 구현하기에 가장 적합한