전편
: https://2mukee.tistory.com/254?category=976780
: 지난번에는 Jenkins를 이용해서 Docker Swarm을 실행시키는 방식으로 CI/CD를 구축했었다. 그러나, 젠킨스에서의 빌드 과정에서 Gradle로 빌드하는 것에 대해 의문점이 들었고, 검색해본 결과 젠킨스에 nodejs 플러그인을 설치하고 쉘 스크립트를 실행되게 해서 배포서버에서 아예 빌드가 되도록 만들었어야 하는 것이었다.
Jenkins에 nodejs 플러그인 설치 및 세팅
: 젠킨스 접속 > Jenkins 관리 > Plugin 관리 > 설치가능 탭 클릭 > nodejs
: nodejs 설치 후 Jenkins 재부팅
: Jenkins 관리 > Global Tool Configuration > NodeJS > Add NodeJS
: install automically > Version 선택 <프로젝트 내 node 버전에 맞게> > Save
Jenkins Project에 nodejs 세팅
: 젠킨스 접속 > 프로젝트 접속 > 구성 > 빌드 환경
> 다음과 같이 설정
: Build > Add > Execute shell > 빌드관련 커맨드 추가
NodeJS Project 설정
: VS Code로 프로젝트 실행 > package.json에 아래 내용 추가
"dependencies": {
"express": "^4.17.1",
"mongoose": "^6.0.10",
"webpack": "^5.59.1",
"webpack-node-externals": "^3.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --mode development"
},
"devDependencies": {
"webpack-cli": "^4.9.1"
}
: 저장 후 node_modules 디렉터리 삭제 > npm install
: 프로젝트 폴더에 webpack.config.js 생성 후 아래 내용 추가
const nodeExternals = require('webpack-node-externals')
module.exports = {
target: 'node',
externals: [nodeExternals()],
entry: './'
}
: 저장 후 npm run build
: 빌드 성공 시 github에 push하여 CI/CD 성공 여부 확인
결과
: 원래 컨테이너가 생성될때 npm install을 했었을때는 빌드시간이 4분 30초 정도가 나왔지만, 젠킨스에서 nodejs 빌드가 되도록 설정해놓고 컨테이너 생성시에는 생성 기능만 하도록 설정해놓으니 전체 빌드시간이 34초로 줄어들었다. 어차피 빌드 하면서 node_modules에 패키지들이 install 되있고 이는 컨테이너에 ADD 되며 젠킨스의 execute shell에서 npm install 해도 기존에 설치된 패키지들이 있어 추가 install이 없기 때문에 컨테이너 생성 시간 외에 빌드 시간이 들지 않는다
Refference
'CICD > Jenkins' 카테고리의 다른 글
alpine linux 이미지에 젠킨스 서버 올리기 (0) | 2021.11.18 |
---|---|
Jenkins에 pull request 이벤트 트리거 설정 (0) | 2021.11.17 |
Docker와 Jenkins를 이용한 CI/CD 구축 (0) | 2021.10.15 |
젠킨스 Work Space 설정 (0) | 2021.10.03 |
젠킨스 서버 시간대 변경하기 (0) | 2021.10.03 |