본문 바로가기
기타

GitHub Actions Workflow의 Event Trigger(On, Schedule)

by Limm_jk 2020. 10. 24.

개요

이걸로 뭔가 할 수 있을 것 같은데, 당장은 못하겠고 언젠간 하려고 기록

 

Actions의 Event Trigger

저번 커밋시간 기록하는 I'm Early..? 를 작업하고 나서, 이건 어떻게 해서 자동화를 시킨거지...? 라는 생각이 들었습니다. 코드를 좀 구경하니 workflow를 이용해서 한 것 같더라구요. 이런 자동화툴 배워보고 싶었는데, 지금 간단히 찾아서 기록해보고, 나중에 이 관련해서 크롤러 자동화..? 라도 도전해보려구요.

이 글은 테스팅이나 실행은 다음에 미뤄두고, 실행의 자동화만 다루겠습니다.

 

이 글은 github doc의 actions 가이드를 해석하며 진행했습니다.

workflow Event

on : 구문을 사용해서 Event를 구성할 수 있어요. ':' 이하가 조건을 의미하고 on은 실행한다 라는 동작을 의미한다고 생각 할 수 있겠네요.

on: push

위와 같이 적으면 push가 발생할 때 workflow를 실행됩니다.

이런 방식말고 여러 동작을 list로 묶어서도 사용할 수 있습니다.

on: [push, pull_request]

이렇게 중괄호로 묶어주면 여러 동작을 함께 조건으로 사용할 수 있어요.

 

하지만, 추가 event를 지정해주려면, 분리해서 작성해야합니다.

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

 

event를 실행 trigger를 main branch로 제한하겠다고 해석할 수 있겠네요.

 

이 때, 어떤 event가 추가 event가 필요하지 않더라도 나누어서 적어주어야 합니다.

on:
  push:
  pull_request:
    branches:
      - main

Scheduled Event

schedule : 이벤트를 사용하면 지정된 시간마다 반복실행하게 만들 수 있습니다. 저희가 찾던 내용이라 할 수 있겠네요.

이 이벤트는 POSIX cron 구문을 사용하여 특정 UTC시간에 실행되도록 예약할 수 있습니다.

단, 구문 상으로 1분마다 반복되는 event를 구성할 수 있지만, github actions에서 지원하는 최소 간격은 5분이라고 합니다. 

테스트 해봤는데 1분 간격으로 하니 5분간격으로도 안해주네요. 5분 이상부터 쓰도록 합시다.

 

이 cron 구문은 공백으로 구분된 5개의 field가 있으며, 각 field는 시간 단위를 나타냅니다.

┌───────────── 분 (0 - 59)
│ ┌───────────── 시 (0 - 23)
│ │ ┌───────────── 날짜 (1 - 31)
│ │ │ ┌───────────── 달 (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── 요일 (0 - 6 or SUN-SAT)
│ │ │ │ │                                   
│ │ │ │ │
│ │ │ │ │
* * * * *

 

이 field에는 아래의 5개의 연산자를 사용할 수 있습니다.

 

연산자 기능 예시
* 모든 값 0 * * * *
매 시 0분 마다 실행
, and 20, 50 0,12 * * *
0시 12시 20분과 50분에 실행
- 범위 0 0 5-20 * *
5일에서 20일 사이 자정에 실행
/ - 마다 */15 * * * *
15분 마다 실행
20-45/15 * * * *
20분 부터 45분까지 15분마다 실행 (20, 35)

 

크롤러 자동화하는데 딱 어울리는 기능이네요. 여름에 편의점 크롤러 만들 때 알았다면 참 좋았을 기능...

 

이외 Maual과 Webhook을 이용해서 할 수 있는데, 다음 글에 이어 쓰겠습니다.

댓글