Github 작업으로 PR 커밋 메시지 Linting

Conventional Commits은 커밋 메시지를 깨끗하고 일관되게 유지하는 데 도움이 되는 훌륭한 새 기능입니다. 또한 릴리스 프로세스를 자동화하는 데 도움이 됩니다. 하지만 어떻게 시행합니까? 여기에서 Github Actions가 등장합니다. 이 게시물에서는 Github Actions를 사용하여 커밋 메시지를 린트하는 방법을 보여드리겠습니다.

전통적인 커밋 메시지는 무엇입니까?



커밋 메시지는 커밋에서 변경한 내용에 대한 간단한 설명입니다. 일반적으로 명령형, 현재형으로 작성되며 길이는 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을 열 때마다 작업에서 커밋 메시지가 커밋 규칙을 준수하는지 확인합니다. 그렇지 않으면 메시지가 수정될 때까지 작업이 실패합니다.

    그게 다야!

    좋은 웹페이지 즐겨찾기