깃헙으로 워크플로 만들어서 빌드하고 있는 데 이렇게 에러가 났다.
Run pm2 restart /home/runner/work/_temp/c04a9950-215d-4e33-bc1f-adcbbd5ab0b6.sh: line 1: pm2: command not found
여기서 포인트는 pm2: command not found 이다.
분명 pm2 를 글로벌로 설치를 했는데 command가 없다? 라는 말이 이상했다.
🙏 역시 검색해보니 글로벌로 설치하란 글이 나온다. (https://stackoverflow.com/questions/38185590/pm2-command-not-found)
npm install -g pm2
❌ 결과는 당연히 해결되지 않았다. 이미 pm2를 글로벌로 설치해 놓은 걸 기억하고 있었는데 혹시나 해서 다시 해봐도 결과는 바뀌지 않았다.
🙏 그러면서 찾아보니 Linking 작업을 해줘야한단다. (https://stackoverflow.com/questions/69644460/github-actions-pm2-command-not-found)
Linking 작업은 아래와 같이 순서대로 커맨드를 실행하면 된다.
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node" sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm" sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/pm2" "/usr/local/bin/pm2"
확인하고 싶으면 whereis pm2 를 실행해서 제대로 작업되었는 지 결과값을 볼 수 있다.
❌ 이렇게 하면 해결될 줄 알았다. 아니였다. 여전히 오류였다.
🙏 다음 해결 방법으로 제안한 것은 svc.sh 를 새로 설치하고 실행하는 것이다. (https://github.com/Unitech/pm2/issues/4989)
sudo ./svc.sh install sudo ./svc.sh start
❌ 역시나 안된다.
삽질에 삽질을 한 끝에 해결한 방법은 원인이 이 것이였다.
.yml 파일안에 아래와 같이 runs-on 부분을 볼 수 있는데
... (생략) build: runs-on: ubuntu-latest ... (생략)
바로 이 ubuntu-latest 가 문제였다.
Github Actions의 Runners 에 생성했었는데 그 때 생성한 내용을 넣었어야 했다.
Github 의 저장소에서 Settings - Actions - Runners 를 누르면 생성한 Runner가 있고 그 런너를 누르면 이런식으로 상세를 볼 수 있는데 self-hosted, Linux, X64, 런너이름 이 차례로 버튼으로 만들어져 있다.
그 버튼들을 하나하나 누르면 복사가 된다.
이 내용들은 .yml 파일안에 아래처럼 넣는다.
... (생략) build: runs-on: [self-hosted, linux, x64, 런너이름] ... (생략)
⭕️ 이렇게 하고 실행했더니 정상 작동 되었다.
물론 위에 과정들이 있었기 때문에 마지막 해결 방법이 적용된 것일 수 있다.