NodeJS 애플리케이션 Docker 배포하는 Jenkins Pipeline 생성
* 아래 강의 학습 중📚
Udemy - DevOps 학습: 파이프라인 및 Docker를 이용한 Jenkins 와의 CI/CD
환경
jenkins 2.401.3
TODO
https://juyeonee826.tistory.com/177
Jenkins로 NodeJs 애플리케이션 Docker 배포
* 아래 강의 학습 중📚 Udemy - DevOps 학습: 파이프라인 및 Docker를 이용한 Jenkins 와의 CI/CD 환경 jenkins 2.401.3 TODO Jenkins로 NodeJS 애플리케이션 도커 이미지화 해서 도커 허브에 올리기 Jenkins에 Docker 플
juyeonee826.tistory.com
위 과정을 Frestyle Project가 아닌 Pipeline Project를 생성해서 진행한다.
Jenkins Job DSL과 Jenkins Pipeline 비교
- 둘 다 CI/CD 코드를 작성할 수 있음
- 젠킨스에서의 구현이 다름
- Job DSL은 사용자가 작성한 코드 기반으로 Job을 생성하는 것
- Jenkins Pipeline은 작업 유형
- Job DSL로 Jenkins pipeline 프로젝트를 생성할 수도 있는 것임
예제 Jenkinsfile 코드 분석
node {
def commit_id
stage('Preparation') {
checkout scm
sh "git rev-parse --short HEAD > .git/commit-id"
commit_id = readFile('.git/commit-id').trim()
}
stage('test') {
nodejs(nodeJSInstallationName: 'nodejs') {
sh 'npm install --only=dev'
sh 'npm test'
}
}
stage('docker build/push') {
docker.withRegistry('https://index.docker.io/v2/', 'dockerhub') {
def app = docker.build("wardviaene/docker-nodejs-demo:${commit_id}", '.').push()
}
}
}
node : 작업이 실행될 워커 노드를 의미함, 지금은 노드가 하나뿐이라서 마스터 노드가 지정될 것임
def : 변수 선언
stage : 구축 단계 정의, 젠킨스에서 플러그인을 사용하여 구축 단계를 시각화하는 데에 쓰임
위와 같이 stage view를 통해 각 단계마다 걸리는 시간을 보고 최적화를 진행하는 데에 사용할 수 있음.
Jenkins Pipeline 프로젝트 생성
nodejs 레포지토리에 작성해둔 jenkinsfile 기반으로 배포가 진행된다.
groovy.lang.MissingPropertyException: No such property: docker for class: groovy.lang.Binding
빌드했더니 위 오류가 발생했다.
docker pipeline 플러그인을 설치하면 된다구 함!
denied: requested access to the resource is denied
docker hub에 push하는 과정에서 강사의 레포지토리에 접근하지 못해서 생긴 오류
1. https://github.com/wardviaene/docker-demo 강사 레포지토리 pork
2. jenkinsfile에 도커 레포지토리 변경하여 해결했다.