Closed devwithpug closed 3 years ago
찾아본 결과 동일한 워크플로우에 대해 설정값, OS 환경 등을 다르게 구성하여 한번에 job을 효과적으로 여러번 돌릴 수 있는 방법이었다. 현재 랜손챗 CI 워크플로우의 문제점은 각각의 서비스들을 병렬적으로 build & push 해야한다는 점이었기 때문에 matrix 는 적용이 어려워 보였다.
job matrix와 관련된 자료들을 찾던 중 job.needs 값이 설정가능하다는 것을 알게되었고 하나의 job에 step들을 나누어 설정하는 것이 아니라 애초에 여러개의 job으로 yaml 파일을 구성하면 Github Actions에서 자동으로 각각의 job들을 병렬적으로 수행해준다는 것을 알게되었다. (왜 이제 알았을까..ㅎㅎ)
먼저, 기존에 steps에 한꺼번에 들어가있던 모든 빌드 라인들을 각각의 job으로 구성하였다. 그리고 모든 프로젝트가 build & push가 완료된 후 CodeDeploy에 트리거를 발동하도록 needs 값을 추가해주었다.
parallel_jobs.yml
ci:
runs-on: ubuntu-latest
needs: [eureka, config, gateway, chat, gesture]
steps:
- name: EC2 인스턴스 내부의 CodeDeploy 트리거 발동
run: aws deploy --region ap-northeast-2 create-deployment --application-name CodeDeploy-application-randhand --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name CodeDeploy-group-randhand --github-location repository=devwithpug/RandHand-Chat,commitId=${GITHUB_SHA}
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Default_region_name: ap-northeast-2
여러개의 job 으로 나누어 병렬적으로 프로젝트 빌드를 수행 소요 시간을 약 50% 줄일 수 있었다!
1. 이슈 내용
2. 작업 할 위치
3. 작업 목표