오픈소스 레포지토리를 운영하다 보면 봇이 이슈나 PR을 스팸처럼 생성하는 경우가 있는데요, 이를 막기 위해 이슈/PR 생성 시 cloudflare turnstile 인증 하도록 하는 GitHub Action을 간단하게 만들어보았습니다.

동작과정

  1. 누군가 이슈 또는 PR을 생성하면
  2. 봇이 자동으로 인증 링크가 담긴 댓글을 달고
  3. 작성자가 링크를 클릭해 인증을 완료하면 댓글이 성공 메시지로 업데이트됩니다
  4. 인증에 실패하거나 시간이 초과되면 실패 메시지로 업데이트되고, 옵션에 따라 자동으로 이슈/PR을 닫거나 라벨을 붙일 수 있습니다

사용 시에는 필요에 따라 커스텀하게 옵션을 선택할 수 있습니다.

  • 이슈/PR 이벤트 설정
  • 인증 실패 시 자동 Close, 라벨 추가 설정
  • 특정 유저는 인증 스킵 (allowed-users) 설정
  • 권한 레벨 이상이면 스킵 (trusted-permission: read / write / admin) 설정
  • 신규 기여자만 인증 요구 (first-time-only) 설정
  • 댓글 계정을 github-actions[bot] 또는 커스텀 봇 계정으로 지정 가능

코드 링크는 다음과 같습니다.
깃허브 액션 코드 : https://github.com/dohyeon5626/bot-check-action
인증 페이지 코드 : https://github.com/dohyeon5626/bot-check-page
인증 서버 코드 : https://github.com/dohyeon5626/serverless-functions/…

GeekNews에는 처음으로 글 써봅니다! 잘하시는 개발자 분이 많으신데, 피드백 주시면 많이 배워가겠습니다.
위 프로젝트 말고도 https://github.com/dohyeon5626 제 레포 무엇이든 이슈나 PR 마음대로 남기셔도 되니 피드백 편하게 주시면 감사하겠습니다!!