저장소에 사용된 언어별로 적절한 린터를 설정하는 것은 많은 시간이 소요되고 지루한 작업입니다.
그래서 많은 툴과 환경 설정이 필요하고, 사용된 모든 언어를 다루려면 최소 하나 이상의 린터가 필요합니다.
GitHub Services DevOps 엔지니어팀은 개발 조직이 문서와 코드의 일관성을 유지하면서 커뮤니케이션 및
협업을 더욱 생산적인 경험으로 만들 수 있도록 GitHub Super Linter를 구축하였습니다. 그리고 GitHub는
누구나 Super Linter을 사용하고 개선할 수 있도록 오픈소스로 공개했습니다.
Super Linter는 자동화를 통해 아래와 같은 요구사항의 많은 부분을 해결했습니다.
- 손상된 코드가 Master branches에 업로드되는 것을 방지
- 여러 언어로 코딩할 수 있는 모범 사례 수립
- 코드 레이아웃 및 포맷에 대한 가이드라인 작성
- 프로세스 자동화를 통한 코드 리뷰 간소화
그럼 Super Linter에 대한 자세한 내용을 살펴보겠습니다.
Super Linter는 Docker 컨테이너에 패키지되어 있으며, GitHub Actions에 의해 호출되는 소스 코드 저장소입니다.
이를 통해 GitHub.com의 모든 저장소가 Super Linter를 호출하여 활용할 수 있습니다. 현재 Super Linter는 많은 언어를 지원하고 있으며 앞으로 더 많은 언어를 지원할 것입니다. 더 자세한 내용은 README.md.을 참조하세요.
작동 방법
Super Linter을 실행하기 위해 repository를 설정한 경우 pull request 할 때마다 코드 케이스를 Linting 하고 Status API를 통해 결과를 받습니다. 그리고 코드 변경이 성공적으로 적용되었는지, 또는 오류가 감지되었으면 어디서 무엇이 감지되었는지 알려줍니다. 그러면 개발자는 다시 branch로 돌아가 이슈를 고친 후 열려 있는 pull request에 대해 새로운 push를 생성할 수 있습니다. 이때 Super Linter는 다시 실행되고 업데이트된 코드를 검사하는 과정을 다시 반복합니다. 그 외 방법으로는 모든 소스 코드가 병합되기 전에 반드시 체크 과정을 진행하도록 branch 보호 규칙을 설정할 수 있습니다.
개별 저장소에 Super Linter를 사용자 지정하는 데 도움이 되는 플래그와 템플릿은 무수히 많습니다.
Super Linter 저장소와 Super Linter wiki에 있는 안내를 따라 해 보세요.
코딩 규칙 설정
Super Linter에서 규칙을 표준화하는 것은 개발자마다 코딩 방식이 다르기 때문에 즐거운 도전이었습니다.
그래서 GitHub는 사용자들이 각자의 저장소에 적합한 Linter에 대한 규칙을 적용할 수 있도록 허용하고 있습니다.
하지만 규칙을 적용하지 않으면 표준 규칙으로 설정됩니다.
다른 언어의 경우, Linter을 설치할 때 기본설정인 coffeelint와yamllint을 선택해야 합니다. 다른 개발자들을 위해, GitHub는 Markdownlint와모범 사례를 이용해 간편하게 기초작업을 할 수 있도록 노력하고 있습니다.
지금 당장 Super Linter를 설정하고 시작해 보세요!
GitHub는 항상 최고의 결과물로 업데이트하고 도구를 더 쉽게 사용할 수 있도록 노력하고 있습니다.
함께 참여하고 싶으신 분들은 contributing guide를 참조하세요.
Super Linter에 대해 더 자세히 알아보고 싶으신 분들은 링크를 눌러주세요.
긴 글 읽어주셔서 감사합니다.
위 글은 GitHub의 Lucas Gravley의 Introducing GitHub Super Linter을 번역한 글입니다.
'GitHub News' 카테고리의 다른 글
MLH Fellows에 신청하세요 (0) | 2020.07.15 |
---|---|
GitHub Action을 사용한 MLOps와 데이터 사이언스 (0) | 2020.07.09 |
GitHub 사용자 교육 웨비나 Intro - 버전관리 &GitHub 소개 - (0) | 2020.06.22 |
GitHub Classroom으로 브라우저에서 코딩하기 (0) | 2020.06.18 |
Remote Work: 맞벌이 부부의 리모트 워크 (0) | 2020.06.08 |