일단 내가 학습한 내용을 가지고 아주 간단하게 CI 테스트를 위한 workflow yaml파일을 만들어 보았다.
name: CI
on:
push:
branches: [ "master", "dev" ] // "master", "dev" 브렌치로 푸시를 하거나
pull_request:
branches: [ "master", "dev" ] // "master", "dev" 브렌치로 PR를 날리면 아래의 job을 실행한다.
jobs:
CI: //CI라는 이름으로
runs-on: ubuntu-18.04 // ubuntu-18.04의 동작환경을 가지고
steps:
- uses: actions/checkout@v3
- name: set-up node.js 18.x // node 18버전을 미리 설치하고
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'npm'
- name: clean install node package // package.lockjson에 명시된 모듈의 의존성을 위한 파일을 설치하고
run: npm ci
- name: run test // 테스트를 진행한다.
run: npm test
위의 간단한 CI로직의 동작이 예상치 못한 상황을 나타내었다. unit 테스트의 케이스가 150개 가량되긴하지만, 그래도 10분이나 걸릴 이유가 없다. 무엇인가 잘 못된 것이었다.
어떤게 문제일까? 이렇게 까지 간단한 내용인데도 불구 하고 동작이 불확실한이유에 대해서 구글을 뒤적였는데 답은 금새 찾을 수 있었다.
github action의 이슈 중에 ubuntu-18.04환경에 대한 제공을 23년 4월3일경까지 제공하고 중단하였다. 따라서 파일작성에 문법에 대한 문제는 없지만 이제는 제공하지 않는 ubuntu-18.04환경으로 action을 사용하려고 하였기 때문에 문제가 발생하였다.
그럼 나는 왜 ubuntu-18.04환경으로 동작시키려 했을까?
내 믿을 수 없는 기억력이 위와 같은 휴먼에러를 발생시켰다. 나는 내 AWS EC2가 ubuntu-18.04버전이라고 생각하고 있었다. 뭐가 문제지? 라는 생각에 다시 EC2의 버전을 확인하러 가보았는데..
AMI 이름만 보아도 아.. 20.04버전이구나.. 내가 왜 18.04버전으로 CI를 작성하려 했지? 예전에 어떤 강의에서 18.04버전으로 EC2인스턴스를 생성했던 기억이 있는데, 이 기억을 착각했었나 보다.. 어이가 없었다.
ubuntu-20.04로 변경하고 다시 pr을 날려보니 아래와 같이 정상 동작하는 것을 확인할 수 있었다.