[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
'CI-CD > GitHub Actions' 카테고리의 다른 글
[GitHub Actions] workflows 이름 설정하기 (0) | 2024.03.21 |
---|---|
[GitHub Actions] actions artifact 기능을 통한 데이터 공유 및 저장 (0) | 2024.03.19 |
[GitHub Action] actions/cache 기능을 통한 데이터 캐싱 (0) | 2024.03.15 |
[GitHub Action] workflow_call를 통한 다른 workflow 실행하기 (2) | 2024.03.13 |
[GitHub Actions] workflows 설정 및 기본 실행 (0) | 2024.02.08 |