Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Probot: Scheduler 사용하기

이전에 Probot 관련 글을 올렸는데 GitHub과 연동하는 대부분 프로그램이 그렇듯이 GitHub에 커밋이 올라오거나 이슈가 등록되는 등 이벤트가 발생했을 때 이를 받아서 프로그램이 실행되게 된다. 하지만 프로그램을 작성하다 보면 이벤트가 없이 동작해야 하는 경우가 있다.

예를 들어 하루에 한 번씩 오픈된 이슈라 Pull Reqeust를 가져와야 한다거나 리뷰를 기다리고 있는 Pull Reqeust의 목록을 가져와서 슬랙에 알려줘야 한다거나 할 때는 GitHub의 이벤트가 없이도 원하는 때에 프로그램이 동작하도록 해야 한다.

Probot: Scheduler

Probot: Scheduler는 원하는 시간에 함수가 실행되도록 할 수 있는 Probot의 스케쥴러다.

const createScheduler = require('probot-scheduler')

module.exports = robot => {
  const scheduler = createScheduler(robot, {
    interval: 24 * 60 * 60 * 1000 // 1 day
  })

  robot.on('schedule.repository', (context) => {
    // your logic here
  });
}

index.js에서 위처럼 스케쥴러를 사용할 수 있다. 스케쥴러의 간격은 createScheduler에서 옵션으로 지정할 수 있고(위에서는 1시간마다 실행된다.) 이때 schedule.repository 이벤트가 발생하므로 콜벡에서 context를 인자로 받아서 다른 이벤트처럼 사용할 수 있다.

createScheduler 옵션에는 다음 두 설정을 넣을 수 있다.

  • delay: DISABLE_DELAY를 설정하지 않으면 기본값은 true이다. false이면 앱 시작시 바로 실행되고 true이면 0부터 interval 간격 사이의 랜덤 값으로 지연시켜서 모든 앱의 스케쥴러가 동시에 실행되지 않도록 한다.
  • interval: 밀리초 단위의 스케쥴 시간이고 기본값은 1시간이다.
2018/09/23 17:40 2018/09/23 17:40