디버깅 다이어리

jenkins CI CD 구축 디버깅

첫번째 Permission denied 오류
git에 권한 없이 커밋을 했다.
git ls-tree HEAD 권한 확인한 다음 권한을 나타내는 숫자가 644로 돼있는 파일들의 권한을 실행 가능하도록 바꿔준다.
git update-index --chmod=+x [파일이름] 실행 권한 부여
그 후 커밋하고 푸시해준다.

 

 


두번째 Jest Permission denied 오류
깃에 모듈파일들을 함께 올려 Jest 모듈에서 충돌이 난듯하다.




세번째 제스트 테스트 코드가 실행이 종료되지 않아 젠킨스에서 테스트 코드가 계속 돌아갔다.

"scripts": {
        "test": "jest --detectOpenHandles --forceExit"
    },

위처럼 프로젝트의 package.json 스크립트 부분에 옵션을 추가한다.

 

 

 

네번째 host key verification failed 오류

root 사용자로 ssh 공개키를 설치하지 않아서 생긴 오류이다.

root 사용자로 ssh 키를 설치한다.

 

 

 

다섯번째 pseudo-terminal will not be allocated because stdin is not a terminal

위 오류가 뜰시 deploy 스크립트에 ssh -t -t 옵션을 추가해서 우분투에 접속한다.

 

 

 

여섯번째 pm2 error process or namespace app.js not found

젠킨스에서 pm2를 실행할 때 app.js를 찾지 못하는 오류가 생겼다.

ecosystem.config.js 파일을 만든 뒤 ecosystem.config.js로 pm2 실행
ecosystem 파일의 목적은 애플리케이션의 모든 option 과 환경 변수들을 모아두는 것이다.

 

프로젝트 루트 폴더에 ecosystem.config.js 파일 생성
module.exports = {
    apps: [
        {
            name: "jenkins-tutorial", //자신이 만든 프로젝트 이름
            script: "npm",
            args: "start",
        },
    ],
};
package.json에 start 스크립트 추가
"scripts": {
        "start": "node app.js",
        "test": "jest --detectOpenHandles --forceExit"
    },
pm2가 deploy를 실행하도록 deploy 파일 수정
#!/bin/sh
ssh -t -t ubuntu@3.38.98.38<<EOF
    cd ~/jenkins-tutorial
    sudo -s	
    git pull origin main
    curl -o-   https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh    | bash
    . ~/.nvm/nvm.sh 
    nvm install 14.17.1	
    npm install
    npm install -g pm2
    pm2 restart ecosystem.config.js
    exit
EOF