[GitHub Actions] push 이벤트로 트리거 구성하기


GitHub Actions의 workflows는 소프트웨어 개발 과정에서 자동화된 작업을 정의합니다. 이를 통해 코드 푸시, 풀 요청 또는 다른 GitHub 이벤트에 반응하여 테스트, 빌드, 배포와 같은 CI/CD 작업을 실행할 수 있습니다.

 

GitHub Actions workflows에서 on 구문을 사용하여 이벤트를 트러거할 수 있습니다. 다양한 이벤트를 지원하며 특정 이벤트가 발생했을 때 자동으로 실행되어 CI/CD 자동화 작업을 구성할 수 있습니다. push 이벤트를 트리거하여 CI/CD 자동화 작업을 구성해보도록 하겠습니다.

 

 


개요

GitHub Actions의 on 구문은 workflows가 어떤 이벤트에 의해 트리거될 것인지를 정의하는 핵심 요소입니다.
이 구문을 통해 GitHub 리포지토리에서 발생하는 다양한 이벤트를 통해 자동화된 작업을 실행할 수 있습니다.
on 구문의 사용은 workflows의 유연성을 확장시켜 활용도 높게 사용할 수 있습니다.

on 구문 기본 구조

on: 
  [event_name]:
    [options]:

 


push 이벤트

GitHub Actions에서 push 이벤트는 가장 일반적으로 사용되는 트리거 중 하나입니다.


push 이벤트는 리포지토리에 커밋이 푸시될 때 발생합니다.workflows 파일에서 on: push 구문을 사용하면 특정 조건 하에 이 이벤트가 발생할 때마다 워크플로우가 실행되도록 설정할 수 있습니다.

 

 

기본 사용법

on: push
  • 리포지토리의 어느 브랜치에든 커밋이 푸시될 때마다 workflows가 실행되도록 설정하였습니다.

 

 

브랜치 제한

on:
  push:
    branches:
      - main
  • branches 옵션을 통해 main 브랜치에 푸시될 때만 workflows가 실행되도록 설정하였습니다.
  • 복수의 브랜치를 지정하고 싶다면 브랜치 목록에 추가하면 됩니다.

 

on:
  push:
    branches-ignore:
      - 'dev'
      - 'experiment/*'
  • branches-ignore 옵션을 통해 "dev" 브랜치와 "experiment/" 로 시작하는 모든 브랜치에 대한 푸시 이벤트를 무시하고 workflows 또한 실행되지 않도록 설정하였습니다.
  • 이는 주로 안정적인 빌드나 배포 프로세스에 집중하고, 아직 개발 중이거나 실험적인 브랜치의 변경사항으로 인한 workflows 실행을 방지하고자 할 때 유용합니다.

 

branches 옵션과 branches-ignore 옵션을 동시에 사용하면 아래 오류가 발생합니다.

you may only define one of `branches` and `branches-ignore` for a single event
  • branches 옵션과 branches-ignore 옵션은 동시에 사용할 수 없으며, 이 오류를 해결하기 위해서는 하나의 이벤트에 대해 branches 옵션 또는 branches-ignore 옵션을 사용해야 합니다.

 


태그 제한

on:
  push:
    tags:
      - 'v1.*'
  • tags 옵션은 "v1." 이름으로 시작되는 모든 태그에 푸시될 때만 workflows가 실행되도록 설정하였습니다.
  • 복수의 태그를 지정하고 싶다면 태그 목록에 추가하면 됩니다.

 

on:
  push:
    tags-ignore:
      - '*beta'
  • tags-ignore 옵션은 branches-ignore 옵션과 유사하며 "beta" 로 끝나는 모든 태그에 대한 푸시 이벤트를 무시하고 workflows 또한 실행되지 않도록 설정하였습니다.

 

branches 옵션과 branches-ignore 옵션과 동일하게 tags 옵션과 tags-ignore 옵션을 같이 사용하면 아래 오류가 발생합니다.

you may only define one of `tags` and `tags-ignore` for a single event
  • tags 옵션과 tags-ignore 옵션을 동시에 사용할 수 없으며, 이 오류를 해결하기 위해서는 하나의 이벤트에 대해 tags  옵션 또는 tags-ignore 옵션을 사용해야 합니다.

 


패턴을 사용한 제한

on:
  push:
    branches:
      - 'feature/*'
      - 'releases/**'
      - '!releases/**-test'
    tags:
      - 'v1.[0-9].[0-9]'
  • "feature/" 로 시작하는 모든 브랜치 이름을 가진 브랜치에 푸시될 때 workflows가 실행되도록 설정하였습니다.
  • "releases/" 아래의 모든 하위 브랜치 이름을 가진 브랜치에 푸시될 때 workflows가 실행되도록 설정하였습니다.
    • 하지만 "releases/" 하위 브랜치 중 "-test" 로 끝나는 브랜치는 제외합니다.
  • "v1." 로 시작하고 그 다음에 숫자가 오는 태그(예: v1.0.0, v1.2.9, ...)에 대한 푸시 이벤트 발생 시 workflows가 실행되도록 설정하였습니다.
  • branches-ignore 옵션와 tags-ignore 옵션에서도 패턴을 사용할 수 있습니다.
  • 다양한 패턴을 통해 workflows를 구분하여 실행할 수 있습니다.

 

 

경로 및 파일 변경사항을 통한 제한

on:
  push:
    paths:
      - '**/*.js'
  • paths 옵션은 설정한 파일이 변경될 경우에만 워크플로우가 실행하는 옵션입니다.
  • ".js" 확장자를 가진 파일이 변경되어 푸시될 때만 워크플로우가 실행되도록 설정하였습니다.

 

 

on:
  push:
    paths-ignore:
      - 'docs/**'
  • paths-ignore 옵션은 설정한 파일이 변경되면 워크플로우를 실행하지 않는 옵션입니다.
  • "docs/" 디렉토리 내의 어떤 변경사항에도 워크플로우가 실행되지 않도록 설정하였습니다.

 

 


 

GitHub Actions의 on 구문과 push 옵션을 통해 push 이벤트 발생 시 workflows 실행되도록 설정해봤습니다.

 

GitHub Actions의 on 구문을 활용하면 리포지토리에서 발생하는 다양한 이벤트에 대응하여 workflows를 자동으로 실행할 수 있습니다. 특히, push 이벤트는 소프트웨어 개발 과정에서 매우 흔하게 발생하는 이벤트로, 이에 대해 workflows를 구성함으로써 코드의 푸시, 빌드, 테스트, 배포 등의 CI/CD 작업을 자동화할 수 있습니다.


branches, branches-ignore, tags, tags-ignore, paths, paths-ignore 등의 옵션을 사용하여 특정 조건에서만 workflows가 실행되도록 세밀하게 설정할 수 있습니다. 하지만 branches와 branches-ignore, tags와 tags-ignore는 각각 동시에 사용할 수 없으며, 이를 위반할 경우 오류가 발생함을 유의해야 합니다.

 

workflows의 다양한 옵션을 사용하여 workflows의 효율성과 유용성을 극대화하여 사용하시기 바랍니다.
지금까지 push 이벤트를 트리거하여 다양한 옵션을 통해 workflows를 실행해보는 시간을 가졌습니다....! 끝...!

 

 

 

[Reference]
https://docs.github.com/ko/actions/using-workflows/events-that-trigger-workflows

 

 

 

+ Recent posts