문제 제기
Git Action을 사용하는 도중, 브랜치 별로 다른 설정을 해야 할 일이 생겼습니다.
정확히는 main 브랜치에 push가 들어올 경우에만 review를 받은 후 action을 동작시켜야 했습니다.
팀에서 해결 방법을 찾지 못해 똑같은 파이프라인 yaml 파일을 두 개(ci-prd.yaml, ci.yaml) 만들어 사용했습니다.
한 파일은 main 브랜치에 push가 들어왔을 때, 다른 파일은 dev, stg 브랜치에 push가 들어왔을 때.
이러면 코드를 수정할 때 두 파일을 모두 수정해주어야 하고, 이로 인해 휴먼에러가 생기겠다 싶었습니다.
처음엔 브랜치 별로 job을 나눠서 job을 두 개 돌릴까도 생각해봤는데, 그러면 똑같은 코드를 두 번 써야하는 건 마찬가지라 패스했습니다.
environment: [main, dev] 식으로 배열을 넣고자 했는데, environment는 무조건 string으로 입력받아서 실패했습니다.
해결
찾아낸 방법은 environment 값으로 브랜치 이름을 주는 것입니다.
name: CI
on:
push:
branches: [ "main", "dev" ]
jobs:
build:
runs-on: ubuntu-latest
environment: ${{ github.ref_name }}
steps:
- uses: actions/checkout@v3
- name: Run a one-line script
run: echo Hello, world!
git action 변수 ${{ github.ref_name }}을 사용하면 push가 들어온 브랜치 이름을 가져올 수 있습니다.
따라서 Environments에 브랜치 이름과 같은 환경들을 만들어줍니다.
environment: main
일 경우, main 브랜치에 push가 들어온 것이고, review를 필수로 받은 후 action이 동작합니다.
Deployment branches는 안 걸어줘도 상관없지만, 혹시 몰라 main으로 걸어줬습니다.
environment: dev
일 경우, dev 브랜치에 push가 들어온 것이고 review 없이 바로 action이 동작합니다.
혹시나 환경 별로 다른 environment 변수들이 필요하다면 Environments/configure 안에서 변수와 시크릿을 따로 생성할 수 있습니다. 이러면 prd, dev에 각각 다른 시크릿을 제공할 수 있습니다.
main에 push가 들어오면 review를 필수로 받습니다.
dev에 push가 들어온 경우, review를 받지 않고 action이 동작합니다.
오늘도 문제를 하나 해결했습니다. 핵뿌듯하네요.
참고
https://docs.github.com/ko/actions/using-jobs/using-environments-for-jobs
작업에 환경 사용 - GitHub Docs
작업에 대한 환경을 지정합니다.
docs.github.com
https://blog.outsider.ne.kr/1556
GitHub Actions 워크플로우의 승인 기능 사용하기 :: Outsider's Dev Story
[GitHub Actions](https://github.com/features/actions)에 CI/CD도 다양하게 사용할 수 있도록 작년에 기능이 추가된 것 같은데 [지난달에 모두가 이용할 수 있도록 공개](https://github.blog/changelog/2021-0...
blog.outsider.ne.kr
https://flowlog.tistory.com/93
[Github Actions] CI-CD Pipeline 구축 테스트
11월 3주간 Github Actions과 AzureDevop Pipeline 을 테스트 해보았고 Rest API 호출 테스트까지 케이스를 정리해보려 한다. 추가로 Github Enterprise (일명 GHES) 도 구축하여 이것저것 사용해 보았는데 Actions 사
flowlog.tistory.com
배포에 환경 사용 - GitHub Docs
Environments are used to describe a general deployment target like production, staging, or development. When a GitHub Actions workflow deploys to an environment, the environment is displayed on the main page of the repository. For more information about vi
docs.github.com