Skip to Content
Suffering builds character
아카이브25.devopsJenkins특징11.배포 자동화

11.배포 자동화

젠킨스가 빌드한 결과물(demo-1.0.0-snapshot.jar)을 운영 서버인 스프링 애플리케이션이 배포된 EC2 서버에 전달(Delivery)해야함

빌드 결과물을 전달하기 위해서는 SSH 플러그인이 설치되어 있어야 함

1. 젠킨스에서 스프링 서버가 설치된 EC2에 접근하기 위해 젠킨스에 SSH 플러그인 설치

Jenkins → System Configuration → Plugins 탭 선택

좌측 Available plugins 선택

SSH Agent 검색 후 설치(install)

SSH Agent 플러그인 설치 되었으면 젠킨스 재시작(Restart) 하단 ‘설치가 끝나고 실행 중인 작업이 없으면 Jenkins 재시작’ 체크박스 선택

자동으로 재실행이 되지 않을 경우 jenkins 컨테이너 재시작하기

💡
Tip

젠킨스 서버에서 스프링 서버로 접근하기 위한 다른 방법
.pem키를 젠킨스 서버에 두고 해당 키를 사용하여 접근

2. Jenkins 서버에서 스프링 서버로 접속하기 위한 EC2 SSH 키 추가

Jenkins 관리 → Credentials → Stores scoped to Jenkins 탭에서 System 하이퍼링크 클릭

Global credentials 클릭 → 우측 상단 Add Credentials 선택(Add domain 아님)

Kind
SSH Username with private key

Scope
Global

Username
ubuntu (linux 계정이름)

Password
스프링 EC2 서버에 접속할 때 사용하던 pem 키의 값(하단 pem 키 조회 참조)

ID
from-jenkins-to-aws-ec2-access-key

Description
access-key-for-spring-ec2-server

Treat username as secret 체크

Private Key 탭 하단

Enter directly 선택
Key 부분 하단 Add 버튼 누른 후 spring-ec2 서버에 연결할 때 사용되는 pem 키의 내용 입력 후 저장

3. pem 키 정보를 추가하기 위해 pem 키 조회

pem 키가 있는 폴더에서 shell 에디터 실행 후 cate 명령어로 pem 내부 키값 조회

terminal
cat {key이름}.pem

—BEGIN 부터 —끝까지 전체 복사 후 붙여넣기

4. 운영 서버로의 자동 배포를 위한 파이프라인 스크립트 작성

ssh를 통해 접속할 ubuntu ip 주소는 private ip 사용,

하단 스크립트에서 {스프링 EC2 private IP주소}와 같은 주소 입력 부분의 경우 { } 기호는 지우고 작성해야 함

파이프라인 스크립트
stage('Deploy') { steps { sshagent(credentials: ['from-jenkins-to-aws-ec2-access-key']) { sh ''' ssh -o StrictHostKeyChecking=no ubuntu@{스프링 EC2 private IP주소} uptime scp /var/jenkins_home/workspace/my-first-pipeline/build/libs/demo-0.0.1-SNAPSHOT.jar ubuntu@{스프링 EC2 private IP주소}:/home/ubuntu/mydemo ssh -t ubuntu@{스프링 EC2 private IP주소} chmod +x ./deploy.sh ssh -t ubuntu@{스프링 EC2 private IP주소} ./deploy.sh ''' } } }
Last updated on