Github 작업으로 PR 커밋 메시지 Linting
3979 단어 workflowsdevopsgithubactions
전통적인 커밋 메시지는 무엇입니까?
커밋 메시지는 커밋에서 변경한 내용에 대한 간단한 설명입니다. 일반적으로 명령형, 현재형으로 작성되며 길이는 50자 미만이어야 합니다. 예를 들어 "새 블로그 게시물 추가"는 좋은 커밋 메시지인 반면 "추가된 항목"은 그렇지 않습니다.
기존 커밋은 커밋 메시지 작성을 위한 특정 규칙을 제공하여 한 단계 더 나아갑니다. 또한 커밋을 분류하는 데 사용할 수 있는 커밋 유형 목록을 제공합니다. 예를 들어
feat
유형을 사용하여 새 기능을 추가했음을 나타내거나 fix
유형을 사용하여 버그를 수정했음을 나타낼 수 있습니다.몇 가지 예:
feat: add a new blog post
fix: fix a typo in the README file
chore: update dependencies
커밋 메시지를 린트해야 하는 이유는 무엇입니까?
커밋 메시지를 린팅하는 것은 Conventional Commits 사양을 적용하는 좋은 방법입니다. 커밋 메시지를 깨끗하고 일관되게 유지하는 데 도움이 됩니다. 또한 릴리스 프로세스를 자동화하는 데 도움이 됩니다. 😎
릴리스 프로세스에 어떤 도움이 됩니까?
Conventional Commits를 사용할 때 semantic-release 과 같은 도구를 사용할 수 있습니다. 이것은 릴리스 정보를 자동으로 생성하고 패키지의 새 버전을 npm에 게시하는 도구입니다. 커밋 메시지를 사용하여 새 버전에서 변경된 유형을 결정합니다. 예를 들어 마지막 커밋 메시지가
feat: add a new blog post
인 경우 semantic-release는 새 기능이 추가되었음을 알고 마이너 버전 번호를 범프합니다.린트 PR에 대한 커밋 작업 만들기
먼저 PR 메시지가 커밋 규칙을 준수하는지 자동으로 확인하는 Github 작업을 생성해 보겠습니다.
먼저
commit-lint.yml
디렉토리에 .github/workflows
라는 새 파일을 만듭니다. 여기에 예가 있습니다.name: PR Lint
on:
pull_request:
types: [opened, edited, reopened, synchronize, ready_for_review]
branches: [main]
workflow_dispatch:
jobs:
pr-lint:
name: Validate PR commit title meets commit convention
runs-on: ubuntu-latest
steps:
- uses: amannn/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
validateSingleCommit: true
validateSingleCommitMatchesPrTitle: true
amannn/action-semantic-pull-request
작업을 사용하여 커밋 메시지를 린트합니다. 기존 커밋 사양에 대해 풀 요청 제목의 유효성을 검사하는 Github 작업입니다. 먼저 Github 토큰을 설정해야 합니다. 또한 설정할 수 있는 몇 가지 옵션이 있습니다.validateSingleCommit
옵션을 사용하면 PR에 커밋이 하나만 포함됩니다. validateSingleCommitMatchesPrTitle
옵션은 커밋 메시지가 PR 제목과 일치하도록 합니다. 그게 다야! 이제 PR을 열 때마다 작업에서 커밋 메시지가 커밋 규칙을 준수하는지 확인합니다. 그렇지 않으면 메시지가 수정될 때까지 작업이 실패합니다.
그게 다야!
Reference
이 문제에 관하여(Github 작업으로 PR 커밋 메시지 Linting), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/brianvu/linting-commit-messages-with-github-actions-388c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)