코딩테스트 레포에 일정 시간마다 제가 출제한 문제들의 solved 티어를 업그레이드 하는 작업을 만들었습니다. 이를, github action을 이용하면 매우 간단하게 할 수 있는데요. 간단하게 알아보겠습니다.

 


 먼저 제 cicd_test 레포에 아래와 같이 세팅하였습니다. .github 밑에 workflows에 자동으로 실행할 작업들을 정의합니다.

 

 auto.yml 파일을 보겠습니다. 일정 시간마다 자동으로 스크립트를 실행하는 것은 스케쥴러가 하는 일입니다. 그렇기 때문에, on:의 schedule:을 이용해서, 해당 Script가 실행될 시간을 잡아주었습니다. cron 형식으로 */15 * * * * 이라는 정보를 넘겨주었는데요. 이는, 매 15분마다 실행됨을 의미합니다.

 

 상당히 많이 쓰이니 이 사이트를 참고해서 작성해 보는 쪽도 좋겠네요.

 

 다음에, 조금 길어 보이는 내용을 하나씩 보겠습니다. jobs가 있는데, build라는 job이 있네요. 이 일을 먼저 분석해 보겠습니다. 먼저, ubuntu-latest에서 실행됩니다. 그리고, 여라 step들이 있습니다. 이 순서대로 실행된다는 의미인데, 간단하게 볼게요.

 

 

 실행 순서는 이러 합니다. checkout을 먼저 하고, python 환경을 세팅한 다음에, test script를 돌립니다. checkout 과정에서 코드를 내려받고, setup python을 하는 과정에서 파이썬 환경을 설정합니다. 여기까지는 공통으로 쓸 것이니 그리 어렵지는 않습니다. 다음에, Run test script 라는 이름을 가진 step을 보겠습니다.

 

 이 step에는 run:이 있는데요. 명령어들을 실행하기 위해 위에 파이프를 썼음을 알 수 있습니다. python scripts/main.py --all 명령어 하나를 써서 scripts 아래에 있는 main.py를 실행시킵니다.

 

 

 이 스크립트는 hello git action을 출력합니다.

 

 

 action의 실행 결과를 보면, Hello git action이 잘 출력되어음을 알 수 있습니다. 지금은 1월 1일에만 실행되게 바꾸었습니다.

 


 requests와 같이 특정한 파이썬 패키지를 깔아야 할 수도 있어요. 이런 경우에는 어떻게 하면 될까요? 제 코딩테스트 레포에 있는 yml 파일을 보시면 알 수 있어요. 간단하게 보겠습니다.

 

 

 먼저, 매 0시 0분에 돌도록 설정하였습니다. utc 기반으로 동작하므로, 한국 시간으로는 매일 9시에 동작한다고 보는 거이 맞겠습니다.

 

 다음에 Setup python까지도 동일합니다. 중요한 것은 pip를 설치한 다음에, 스크립트 파일에서 필요한 requests까지 같이 설치해야 한다는 것인데요. steps를 하나 더 두어서 해결하였습니다.

 

 

 Setup pip를 봅시다. run: | 이라고 되어 있는데요. 그 다음에 나오는 명령어 2개를 실행시킨다는 의미입니다. 먼저, pip를 깐 다음에, requests 패키지를 전역으로 깔아버립니다. 그러면, Run update codingest readme 단계에서 쓰이는 스크립트 파일들이 requests를 잘 쓸 수 있을 겁니다.

 

 

중요한 부분의 step만 정리하면 위와 같습니다. 그 이후에 commit 하고 push 하는 step은 빠져 있습니다.