Github Actions Event Trigger

SeHun.J·2024년 1월 8일
0
post-thumbnail

Action 발동 조건

우리가 코드를 관리하는 GitHub의 저장소(repository)에서는 여러가지 일(event)들이 발생합니다. GitHub Actions를 사용하면 GitHub 저장소에서 일어나는 다양한 이벤트에 자동으로 반응하도록 워크플로우(workflow)를 구성할 수 있습니다.

이때, 워크플로우가 작동하는 기준인 이벤트 트리거를 자세히 공부하기 위해 작성했습니다.

Event Trigger

name: Workflow Name
on: ...

워크플로우가 작동하기 위해서는 언제 작동할지에 대한 조건 명시가 필요합니다. 여기에 해당하는 키가 바로 on 입니다.

여러 개의 조건을 부여하고 싶다면, 리스트 형태로 작성해도 되고, 상세하게 옵션을 줘서 나열할 수도 있습니다.

name: Workflow Name
on: [push, pull_request]
name: Workflow Name
on:
  push:
    branchs:
      - main
  pull_request:
    type: [closed]

이제 어떤 조건들이 있는지 살펴봅시다.

on.<push|pull_request>.<branches|tags>

읽기 어렵게 생겼지만 < ... > 안에 |을 기준으로 옵션들을 사용할 수 있다고 생각하시면 됩니다.

ex. on.push.branches , on.push.tags , on.pull_request.branches ...

Push, PR 이벤트를 사용할때, 특정한 브랜치 또는 태그에 대해서만 workflow를 실행하도록 설정할 수 있습니다. branches / branches-ignore / tags / tags-ignore를 event의 glob pattern(글롭 패턴) 또한 사용할 수 있는데 자세한 필터 설정은 링크에서 확인할 수 있습니다.

on:
  push:
    branches:
      - main
      - 'releases/**'

    tags:
      - v1
      - v1.*

주의해야할 점으로는 branches / branches-ignore를 같이 쓸 수 없습니다. 마찬가지로 tags / tags-ignore도 같이 사용할 수 없습니다. 함께 사용해야 하는 경우에는 !를 사용하여 포함시키지 않을 대상을 지정할 수 있습니다.

on:
  push:
    branches:
      - 'feat/**'
      - '!feat/**-ignore'

on.<push|pull_request>.paths

업데이트된 파일 경로를 이벤트 트리거로서 지정할 수도 있습니다. paths는 보통 특정 경로 업데이트사항은 제외하고자 할 때 많이 사용할 듯 싶습니다. 아래의 예시는 Github Actions Workflow에 대한 Commit 내역만 존재할 경우 작동하지 않습니다. 그 외의 Commit 내역이 존재할 경우에는 작동합니다.

on:
  push:
    paths-ignore:
      - '.github/workflows/**'

on.schedule

crontab 처럼 POSIX unix time을 활용하여 스케쥴링을 만들 수 있습니다. 가능한 최소 시간은 5분입니다.

on:
  schedule:
    # yml 파일에서 *는 특수 문자이기 때문에 꼭 따옴표로 감싸주어야 한다.
    # 15분마다 작동하는 스케줄링
    - cron: '*/15 * * * *'
profile
취직 준비중인 개발자

0개의 댓글