Study/Udemy - Jenkins 자동화

NodeJS 애플리케이션 Docker 배포하는 Jenkins Pipeline 생성

코딩콩 2023. 8. 19. 13:26

* 아래 강의 학습 중📚

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에 도커 레포지토리 변경하여 해결했다.