본문 바로가기
AWS

[AWS/Docker] 실전 클라우드 서버 구축 올인원 패키지 Online / 패스트캠퍼스 챌린지 15일차

by 원동호 2021. 9. 20.
반응형

Ch 06. AWS Server

  • 18. Jenkins Pipe Line 만들기 1
  • 19. Jenkins Pipe Line 만들기 2

Jenkins Pipe Line 만들기

기존 젠킨스

기존의 젠킨스는 소스를 내려받고 빌드하고 배포하는 모든 과정을 하나의 JOB 으로 진행을 했었다.

젠킨스 파이프라인

파이프라인은 이벤트 혹은 Job의 그룹이다. 기존 젠킨스와의 다른점은 각각의 영역이 분리되어 있다는 점이다. 분리된 영역에서

시간이 얼마나 걸렸는지 알 수 있고 가시적으로 확인이 가능하다.

파이프라인 생성

좌측 메뉴 중 새로운 Item 항목을 클릭한다.

 

이름을 입력하고 Pipeline항목을 클릭한다.

 

파이프라인

Pipeline 항목을 클릭하면 script를 입력할 수 있는 에디터를 확인할 수 있다.

우측의 try sample Pipeline항목을 클릭하면 샘플코드를 확인할 수 있다.

아래는 강의 영상에서 제공하는 샘플 script코드이다. 단계별로 하나하나 살펴보겠다.

파이프라인에서 스테이지가 의미하는건 각각의 단계들을 의미하고 steps 들은  세부적인 단계로 나눈 과정이다.

 

pipeline {
   agent any

   tools {
      maven "maven" // 메이븐 기존에 세팅한 명칭
   }

   stages {
       stage('git Pull') {
         .
         .
       }
       .
       .
       .
       stage('RESTART'){
           steps {
           	  .
              .
           }
          
      }
   }
}

 

1.  maven 설정

tools {
      maven "maven" // 메이븐 기존에 세팅한 명칭
}

젠킨스 메인 화면 좌측 Jenkins 관리 -> Global Tool Configuration -> Maven 항목을 확인한다.

2. git 설정

github 또는 bitbucket에 올라가있는 소스의 경로를 세팅해준다.

stage('git Pull') {
	steps {
    	git [git pull 주소] // 세팅한 git 주소
    }
}

 

3. build 설정

  • sh : 터미널에서 해당 명령어를 입력하겠다.
  • mvn : 메이븐 빌드를 실행하는 명령어이다.
-D : 메이븐 테스트가 빌드 실패시에도 무시
-f : pom.xml 의 위치
clean, package : 빌드 후 패키징
stage('Build') {
	steps {
         sh "mvn -Dmaven.test.failure.ignore=true -N -f review/pom.xml clean package" // 빌드하기, pom.xml 의 위치
    }
}

 

4. 배포 설정

이전에 젠킨스에서 배포를 했던 방식은 빌드후 조치에 Send build artifacts over SSH 선택해서 값들을 세팅해 주었다.

이번에 사용한 방식은  scp 라는 명령어로 파일 전송을 시도한다. 

stage('Deploy'){
	steps {
    	sh "scp -i [pem 파일 경로] [복사하고자 하는 로컬 디렉토리 혹은 파일 명] [ec2계정명]@[dns or pulbic ip]:[복사 받고자 하는 aws 디렉토리]"  // WAR 파일 복사 구문
    }
}

 

5. 재시작

stage('RESTART'){
	steps {
    	sh "ssh -i [pem 파일 경로] [복사하고자 하는 로컬 디렉토리 혹은 파일 명] [ec2계정명]@[dns or pulbic ip] sudo systemctl restart tomcat"  // 재시작 명령어
    }     
}

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

-> https://bit.ly/37BpXiC

반응형

댓글