Probot으로 첫 번째 GitHub Bot 만들기

GitHub가 이것 또는 저것을 할 수 있다면 어떨까요..... 🥺.

대부분의 기능은 GitHub를 확장하고 조직 및 사용자 계정에 직접 설치하고 특정 리포지토리에 대한 액세스 권한을 부여할 수 있는 Github 앱을 통해 실제로 추가할 수 있습니다.

You might already have heard of some popular GitHub apps ImgBot, Stale, ReminderBot. After reading this article (and some practice), you will be able to create your own.



Probot을 사용하여 GitHub 봇 앱 🤖을 개발할 예정입니다.
프로봇이란?

Probot은 Node.js에서 GitHub 앱을 구축하기 위한 프레임워크입니다. webhook 수신 및 유효성 검사를 처리합니다. GitHub 상태의 변경 사항을 관찰하고 응답으로 작업을 트리거할 수 있습니다.

Probot 앱은 함수를 내보내는 Node.js 모듈입니다.

//index.js
module.exports = robot => {
  // robot is an Express App
  // our code here
}

로봇 매개변수는 Application의 인스턴스이며 모든 GitHub power💥에 대한 액세스를 제공합니다.

module.exports = robot => {
  robot.on('issues.opened', async context => {
    // A new issue was opened, what should we do with it?
  })
}

robot.on은 GitHub에 의해 트리거된 모든 웹후크 이벤트를 수신 대기하며, 앱이 알고 싶어하는 GitHub에서 흥미로운 일이 발생하면 🙄 알려줍니다.

봇 개발



Probot 앱을 개발하려면 먼저 최신 버전의 Node.js가 설치되어 있어야 합니다. 설치되어 있고 최소 8.3.0 이상이면 괜찮습니다. 그렇지 않으면 최신 버전here을 설치하십시오.

봇 생성



create-probot-app은 프로덕션 환경에서 앱을 시작하고 실행하는 데 필요한 모든 것을 갖춘 새 앱 구축을 시작하는 가장 좋은 방법입니다. 지금은 터미널에서 명령을 실행합니다.

npx create-probot-app my-first-github-app

그러면 다음과 같은 앱에 대한 일련의 질문이 표시됩니다.

Let's create a Probot app!
? App name: my-first-github-app
? Description of app: A GitHub Bot built with Probot.
? Author's full name: Kakashi Hatake
? Author's email address: [email protected]
? GitHub user or org name: Kakashi.hatake
? Repository name: my-first-github-app
? Which template would you like to use? (Use arrow keys)
❯ basic-js
  basic-ts (use this one for TypeScript support)
  checks-js
  git-data-js
  deploy-js
Finished scaffolding files!

Installing dependencies. This may take a few minutes...

Successfully created my-first-github-app.

Begin using your app with:
  cd my-first-github-app
  npm start

View your app's README for more usage instructions.

Visit the Probot docs:
  https://probot.github.io/docs/

Get help from the community:
  https://probot.github.io/community/

Enjoy building your Probot app!

생성되는 가장 중요한 파일은 앱의 코드가 들어가는 index.js와 package.json입니다.

봇 스크립팅



새 문제가 열렸는지 추적하고 해당 사용자에게 간단한 인사말 메시지에 대해 설명하는 봇을 코딩해 보겠습니다. 이제 issues.opened는 새로운 이슈가 열릴 때 트리거되고 이슈의 본문을 추출하고 아래에 게시할 댓글을 생성하는 트리거입니다.
댓글을 작성한 후 createComment 기능을 사용하여 게시합니다. createComment 함수는 이슈 본문 바로 아래에 새 댓글을 추가합니다.

module.exports = (robot) => {
  robot.on("issues.opened", async (context) => {
    const { body } = context.payload.issue;

    // create a comment
    const comment = context.issue({
      body: body.includes("Thanks") ? "You are Welcome!" : "Thanks!",
    });
    // publish it
    return context.github.issues.createComment(comment);
  });
};

로컬에서 봇 실행



이제 로컬 컴퓨터에서 앱을 실행할 준비가 되었습니다. npm run dev를 실행하여 서버를 시작합니다.

Note: If you're building a TypeScript app, be sure to run npm run build first!



dev 스크립트는 로컬 개발 환경에서 파일 변경 사항을 감시하고 자동으로 서버를 다시 시작하는 nodemon을 사용하여 앱을 시작합니다.

이제 localhost:3000을 방문하면 다음과 같이 표시됩니다.


봇 등록



봇을 행동으로 옮기자⚡. 계속해서 GitHub 앱 등록 버튼을 클릭합니다. 다음으로 앱 이름을 결정합니다. GitHub 앱을 등록한 후 리포지토리에 앱을 설치할 수 있는 페이지로 리디렉션됩니다. 아무 리포지토리에나 설치해 보십시오.

해당 저장소로 이동하여 문제를 만들고,



봇으로부터 댓글을 받는 경우 다음과 같이 표시될 수 있습니다.



자! probot으로 첫 번째 GitHub 봇을 구축했습니다.🙃

마찬가지로 모든 댓글을 검토하는 리마인더 봇과 같은 봇을 생성할 수 있으며//와 같은 특수 문자가 포함된 리마인더 목록에 추가되는 봇은 DB 테이블일 수 있습니다.

결국 이것은 원하는 방식으로 자신의 웹후크와 API를 작성할 수 있는 익스프레스 앱입니다.

다음은 GitHub Repo에 대한 링크입니다.

댓글에서 좋아하는 봇에 대해 알려주세요.

😄 멋진 하루 되세요!

좋은 웹페이지 즐겨찾기