오늘 한 일

  • 2주에 한 번씩 월요일은 한 스프린트의 마지막날이 된다. 오늘이 그날이었고, 따라서 지난주 금요일에는 이번 스프린트에서 개발한 기능들이 제대로 돌아가는지 내부 테스트와 마무리 작업을 거쳤다.
  • 그러나 항상 그렇듯, 꼭 거의 마지막이 되어서야 급하게 해야 하는 작업이 생긴다거나, 그동안 풀리지 않던 것이 그제야 실마리를 내보인다거나, 또는 평소와는 다른 집중력이 발휘되어 일의 효율이 높아지기 일쑤지만 이건 내가 평소 게을러서인 것 같다. 아무튼 금요일 업무 시간이 끝나기 1~2시간 전에 여러 pr들이 올라갔고 동시다발적으로 각 피쳐 브랜치에서 dev로 머지 되었다.
  • 그리고 그렇게 잘 마무리된 줄 알았지만, 주말 내내 푹 쉬고 가볍게 시작한 월요일 아침에 지난 주까지의 작업들이 개발 서버에 잘 올라갔는지 확인하던 찰나 뭔가 이상하다는 걸 깨달았다. 별다른 특이사항은 없었던 것 같은데 해당 기능이 반영되지 않은 것이었다.
  • 급히 민에게 확인을 부탁했고, 그래서 aws elastic beanstalk 로그를 확인해 보니 헬스 체크에 문제가 있었고, 이것저것 찾아보다가 덴마에게 여쭤본 결과 아무래도 pr이 동시에 올라가 똑같은 워크플로우가 여러 개 돌다 보니 충돌이 일어난 것 같다는 결론을 주셨다.

오늘 배운 것

  • 배포할 때 깃헙 액션에서 사용하는 워크플로우 yaml 파일에 concurrency라는 설정을 넣으면, 같은 그룹으로 묶인 워크플로우는 한 번에 하나만 실행된다. 이미 같은 워크플로우, 또는 같은 그룹의 워크플로우가 실행되고 있는 경우, 실행 중인 워크플로우를 취소하고 새로운 워크플로우를 실행할 수도 있다.
concurrency:
	group: ${{ github.ref }} # 또는 github.base_ref, github.head_ref를 넣기도 한다.
    	cancel-in-progress: true
  • 공식문서에 나와 있는, concurrency 설정에 대한 자세한 설명.
 

Workflow syntax for GitHub Actions - GitHub Docs

About YAML syntax for workflows Workflow files use YAML syntax, and must have either a .yml or .yaml file extension. If you're new to YAML and want to learn more, see "Learn YAML in Y minutes." You must store workflow files in the .github/workflows directo

docs.github.com

  • concurrency 이외에도, 효율적이고 경제적인 github CI workflow 설정에 대해 정리한 블로그 글이다.
 

Home

yceffort

yceffort.kr

 

+ Recent posts