Mypy의 결과를 GitHub에서 코멘트 해주는 Action을 만들었다

Mypy의 결과를 GitHub로 코멘트 해 주는 GitHub Action(s)를 만들었으므로, 그 사용 방법과 GitHub Action을 만드는 과정 등의 메모입니다.
htps : // 기주 b. 코 m / 마르 tp

※ 원래 flake8을 같은 형식으로 실행하는 것이 있었으므로, 그것을 참고로 작성하고 있습니다.
htps : // 기주 b. 코 m / 마르 tp ぁ세 / 아 c 치온 s / f ぁ 케 8- 아 c 치온

실행 결과 이미지:


사용방법



flake8과 함께 사용하는 경우 다음과 같은 yml을 만들어 적절한 위치에 배치합니다.
예를 들어 .github/workflows/lint.yml 에 배치합니다.
name: Lint

on:
  push:
    paths:
      - '*.py'

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - name: Setup Python
        uses: actions/setup-python@v1
        with:
          python-version: 3.8
          architecture: x64
      - name: Checkout
        uses: actions/checkout@v1
      - name: Install flake8
        run: pip install flake8
      - name: Install mypy
        run: pip install mypy
      - name: Run flake8
        uses: suo/flake8-github-action@releases/v1
        with:
          checkName: 'lint'   # NOTE: this needs to be the same as the job name
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        if: ${{ always() }}
      - name: Run mypy
        uses: sasanquaneuf/mypy-github-action@releases/v1
        with:
          checkName: 'lint'   # NOTE: this needs to be the same as the job name
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        if: ${{ always() }}

이 설정의 경우, *.py에 변경이 있었을 경우에 한해 flake8과 mypy를 실행해, 에러가 있었을 경우에는 코멘트해 줍니다.
병용했을 경우의 코멘트 이미지는 다음과 같습니다.


제작 과정



동기 부여



flake8/mypy를 실행하는 GitHub Action을 찾아 보았는데, flake8에서는 코멘트를 붙여주는 그것 같은 것이 있었기 때문에, mypy에서도 같은 것을 만들기로 했습니다.

리포지토리 만들기



참고로 한 것은
htps : // 기주 b. 코 m / suo / f 8-Gi Teu B-A C Chion # Rea d
하지만 GitHub의 화면 왼쪽 상단에 "generated from actions/typescript-action"이라고 써 있었으므로, 이 템플릿을 바탕으로 리포지토리를 만들었습니다.

dependabot의 PR 병합



템플릿으로 만든 리포지토리입니다만, 갑자기 dependeabot에서 PR가 와 있었으므로, 테스트가 망가지지 않는 것에 대해서는 시험에 병합해 보겠습니다. (이런 가벼운 기분으로 병합해도 좋은가 하는 문제도 있습니다만, 이번에는 아직 아무도 사용하기 시작하지 않았기 때문에, 첫회라고 하는 것으로 시험에 병합해 보았습니다.)
※「Bump eslint-plugin-github from 4.1.1 to 4.3.0」의 i18n의 에러에 대해서는, 일단 ignore 하는 설정을 짜넣었지만, 병합을 잊고 있었으므로 일단 그대로 하고 있습니다.

구현



리포지토리를 clone하면 main.ts가 있으므로 flake8-github-action의 내용을 참고로 main.ts의 내용을 다시 씁니다.

불필요한 코드 삭제



샘플 불필요한 wait.ts와 그 테스트를 제거합니다.

README.md 및 action.yml 재작성



README.md와 action.yml의 내용을 적절한 내용으로 다시 씁니다.

GitHub 화면에서 릴리스(태그) 만들기



위의 내용을 반영하여 GitHub에 푸시하면 GitHub의 리포지토리 화면에 마켓플레이스에 출시할 것인지의 링크가 표시되므로 거기에서 출시를 생성하는 화면으로 이동하여 출시를 생성합니다. .

다른 리포지토리에서 찾아보고 실행할 수 있는지 확인



다른 리포지토리에서 flake8-github-action과 마찬가지로 mypy-github-action을 참조하여 작동하는지 확인합니다.

감상



GitHub Action(s)은 상당히 간단하게 만들 수 있다고 생각했습니다.
상기의 순서에 대해서도, 실제로는 「push한 후에 릴리스의 화면에서의 메세지에 의해 action.yml의 설정을 깨닫는다」라고 하는 일도 있어, 친절한 화면이 되어 있는 것이라고 느꼈습니다.
개인적으로는, 자주 사용하고 있는 Circle CI에 대한 불만은 특별히 없습니다만, GitHub상의 코멘트로서 flake8/mypy의 결과를 간단하게 낼 수 있는 것은, 사람에 따라서는 편리할 것이라고 생각했습니다(flake8/mypy 의 결과는 원래 행수라든지 나오고 있으므로, 조사하려고 하면 간단하게 조사할 수 있는 것이 있습니다만...)

좋은 웹페이지 즐겨찾기