인프런 커뮤니티 질문&답변

올챙이님의 프로필 이미지

작성한 질문수

실전! GitHub Actions으로 CI/CD 시작하기

시나리오1 워크플로우 구성하기 2

PR merge 시 test job 미실행 관련 문의

해결된 질문

23.12.22 18:19 작성

·

378

·

수정됨

0

안녕하세요 이상원님 수강생입니다.

 

다른 분들은 이해하셨겠지만, Job 미실행 관련 의문이 생겨 문의드립니다.

'시나리오1 워크플로우 구성하기 1,2'의 흐름과 코드를 보면 test,image-build,deploy job이 있습니다.

이해한 내용으로는 test job은 말그대로 테스트를 위한 job(코드에 문제가 없는지 판단하는 job), image-build는 그 코드를 말아서 ECR로 올리는 과정 deploy는 실제 환경에 올리는 배포 과정으로 이해했습니다.

 

이때, test job과 image build job을 같은 job에 두고 같이 실행하면 안되는 지에 대해서 의문이 생겨 문의드립니다.

 

감사합니다.

 

 

답변 1

0

이상원님의 프로필 이미지
이상원
지식공유자

2023. 12. 22. 22:04

안녕하세요, 올챙이님 좋은 질문 감사합니다.

해당 강의에 제가 자세히 설명드리지 못한 것 같습니다

 

이 강의에서는 CI 는 테스트 단계, CD는 배포 단계로 설정했습니다.

 

PR이 open, synchronize 때는 CI 단계가 실행되도록 하고

PR이 merge되면 CD 배포 단계가 실행되도록 했습니다.

 

PR 이벤트에 의해 CI or CD 둘 다 하나의 깃헙액션 워크플로우에서 실행이 되는데요 .

Job level에서의 제어를 통해 CI 와 CD 단계를 구분 지었습니다.

 

아래처럼 test job level에 있는 if condition에 의해, PR open되거나 synchronize(동기화)될 때만
실행되도록 제어하면 PR이 merge 되는 시점에는 동작하지 않고 Skip하게 됩니다.

 

image-build job은 job level에서 if condition을 통해 PR이 merge되는 시점에만 동작하게 됩니다.

on:
  pull_request:
    types: [opened, synchronize, closed]


jobs:
  test:
    if: github.event.action == 'opened' || github.event.action == 'synchronize'

  image-build:
    if: github.event.pull_request.merged == true

 

이처럼 Job level에서 if condition을 사용하면, 워크플로우가 실행될 때 잡의 실행 여부 제어가 가능합니다.

 

그래서, PR이 merge되는 시점에 test job이 실행되지 않는 이유는
job level에서의 if condition 설정 때문입니다.

 

만약, PR이 open, synchronize, merge 되는 경우에도 test job을 실행하고 싶으시다면

아래처럼 구성하시면 됩니다.

 

on:
  pull_request:
    types: [opened, synchronize, closed]


jobs:
  test:
    if: |
      github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.pull_request.merged == true