최근에 젠킨스 배포 환경을 구축하는 작업이 있었습니다.
SFTP를 이용해 빌드 파일을 배포 후 서버를 실행 하게끔 했고 해당 내용을 공유하고자 포스팅에 남깁니다.
*포스팅 내용은 빌드한 war 파일을 Tomcat 에서 실행하는 구조입니다.
1) Jenkins 관리 - 플러그인 관리
2) 플러그인 다운로드
설치 가능탭에서 Publish Over SSH 검색 후 다운로드(포스팅 당시 이미 설치를 완료한 후입니다)
3-1) SSH 설정
설치가 완료되면 1)에 시스템 설정으로 접속 - 하단에 Publish over SSH 탭 확인
원격 서버에 접속하기 위한 키를 입력한다.
Path to key에 젠킨스 디렉토리 기준 상대경로로 키 경로를 등록하거나 Key값에 개인키 내용을 넣는다.
[AWS EC2]
AWS EC2를 이용한다면 발급받은 key.pem 파일을 열어 안의 내용을 복사해 붙여넣으면 됩니다.
[이외]
젠킨스 서버
젠킨스 홈 디렉토리(/var/lib/jenkins)로 이동합니다.
cd /var/lib/jenkins
mkdir .ssh
ssh-keygen -t rsa -f ./jenkins-ssh
개인키와 공개키 두 파일(jenkins-ssh, jenkins-ssh.pub)이 생성되는데 .pub 파일의 내용을 복사한 후 배포할 서버로 이동합니다. 개인키는 젠킨스 설정에서 따로 등록하게 됩니다.
배포할 서버
cd ~/
mkdir .ssh
vi authorized_keys
공개키 내용을 붙여넣은 후 저장합니다.
3-2) SSH 서버 내용 입력
- Name : 사용할 SSH 서버 이름
- Hostname : 접속할 원격 서버 주소 ex) ec2-0-0-0-0.ap-northeast-2.compute.amazonaws.com
- Username : 접속할 원격 서버의 사용자명 ex) root, ec2user
- Remote Directory : 원격 서버에서 작업할 기준 디렉토리 ex) home 디렉토리가 기준
공개키, 개인키를 생성한 경우 고급 탭을 클릭해 개인키를 Key 영역에 붙여넣습니다.
4) 프로젝트 - 구성
5) 빌드 후 조치 - Send build artifacts over SSH
- Name : 4)에서 만든 서버 이름 선택
- Source files : 전송할 파일을 지정
- Remove prefix : 지정한 경로의 지우고자 하는 하위 폴더 ex) target/*.war -> *.war 만 전송됨
- Remote directory : 빌드 파일을 전송할 원격지 폴더 ex) /tomcat9/webapps -> /home/tomcat9/webapps 로 빌드파일이 전송됨
- Exec command : 파일이 전송된 후 실행할 스크립트. 여기서는 tomcat을 내렸다가 올리도록 했다.
6) 실행 결과