반응형
“[Infra] 3-2. Jenkins Back 빌드 & 배포 - HelloWorld Project” 게시글에서 Back 애플리케이션 빌드 및 배포 작업을 진행했다.
이번 포스팅에서는 Front의 빌드 & 배포 내용을 정리하려고 한다.
먼저, Develop-BE에 작업물이 반영되면 자동으로 깃랩에서 빌드 및 배포를 진행을 하게 되는데 이때 작업물들은 Back과 관련된 내용들이다. (이전 포스팅에서 다뤘던 내용)
Develop-FE의 작업물들이 Develop 브랜치에 Merge되면 자동으로 빌드 및 배포를 진행하게 된다. 즉, Jenkins의 Develop 프로젝트와 Develop_pipeline 파이프라인이 수행하게 된다.
(1) develop (프론트 빌드 작업)
Back과 Front는 분리하여 빌드 및 배포 작업을 수행하고 분리한 이유를 이전 게시글에 작성해뒀다.
그러므로 Develop 프로젝트에서는 프론트 작업물만 빌드 및 배포를 진행하면 된다.
(이미 back 애플리케이션 컨테이너는 구동중)
[Jenkins]
Dashboard -> develop -> Configuration -> Build Steps -> Execute Shell
[Execute Shell]
cd /var/jenkins_home/workspace/develop/FE
npm install
npm run build
cp -r /var/jenkins_home/workspace/develop/FE/dist /var/jenkins_home/workspace/deploy_test/front
- cd /var/jenkins_home/workspace/develop/FE - 해당 디렉토리로 이동.
- npm install - 해당 디렉토리에 정의된 npm 패키지들을 설치. 이 작업은 package.json 파일을 기반으로 이루어진다.
- npm run build - package.json 파일에 정의된 'build' 스크립트를 실행한다. 일반적으로 이 작업은 프로젝트를 빌드하여 배포 가능한 상태로 만든다.
- 4번째 라인. 빌드해서 만들어진 결과물(dist 폴더)를 배포 환경의 디렉토리 위치로 복사한다.
(2) develop_pipeline
pipeline{
environment {
dockerImage = ''
}
agent any
stages{
stage('Building front image') {
steps {
script {
dockerImage = docker.build("bae3007/front-zero-downtime", "/var/jenkins_home/workspace/deploy_test/front")
withCredentials([usernamePassword(credentialsId: 'bae3007', usernameVariable: 'DOCKER_HUB_USERNAME', passwordVariable: 'DOCKER_HUB_PASSWORD')]) {
sh 'docker login -u $DOCKER_HUB_USERNAME -p $DOCKER_HUB_PASSWORD'
sh 'docker push bae3007/front-zero-downtime'
}
}
}
}
stage('Run docker front image') {
steps {
dir('/var/jenkins_home/workspace/deploy_test/front'){
sh 'chmod +x deploy.sh'
sh './deploy.sh'
}
}
}
stage('not using images&containers delete '){
steps{
sh "docker image prune -a -f"
}
}
}
}
- Building front image: 이 단계에서는 Docker 이미지를 빌드하고 Docker Hub에 푸시.
- Run docker front image: 이 단계에서는 빌드한 Docker 이미지를 실행한다. 실행 스크립트는 deploy.sh 파일에 정의되어 있다.
- not using images&containers delete: 이 단계에서는 사용하지 않는 Docker 이미지를 제거한다. docker image prune -a -f 명령은 모든 사용하지 않는 이미지를 강제로 제거한다.
반응형
'기타 > 인프라 구축과정' 카테고리의 다른 글
[Infra] 7. ELK Stack & Kafka 흐름 - HelloWorld Project (0) | 2023.06.01 |
---|---|
[Infra] 6. 무중단 배포 - HelloWorld Project (1) | 2023.05.24 |
[Infra] 4. Jenkins Back 빌드 & 배포 - HelloWorld Project (0) | 2023.05.24 |
[Infra] 3. Jenkins 설정 - HelloWorld Project (0) | 2023.05.24 |
[문제점] Infra. Nginx 오류 (80포트 중복) - HelloWorld Project (0) | 2023.05.24 |
댓글