많은 사람들이 알다시피, Jenkins 는 유용한 CI / CD 오픈소스 툴이다. 온프레미스 환경 및 클라우드 환경을 넘나들며 유용하게 사용할 수 있다. Jenkins 가 제공하는 수많은 기능들이 있다. 그 수 많은 기능들 중에 이번 글에서 정리할 내용은 Publish over SSH Plugin 이다.
기존에 이미 Jenkins 는 EC2 에 설치가 되어있고 배포 대상이 되는 EC2 도 있다는 전제하에 정리해보겠다.
혹시라도 Jenkins 설치 방법이 궁금하다면 예전 글에서 정리한 것을 참고하길 바란다. https://infondgndg91.blogspot.com/2020/06/install-jenkins-in-aws-ec2.html
이번 글에서 무엇을 정리할 것인가 나열하겠다.
1. Github 에서 Source code 를 땡겨온다. ( 이번 글에서 Github 설정은 다루지 않는다. )
2. Gradle 로 Spring boot project 를 jar 로 빌드한다. ( 이번 글에서 Gradle 설정은 다루지 않는다. )
3. 빌드한 jar 를 Publish over SSH 플러그인을 통해서 Deploy EC2 에 전송한다.
4. Deploy EC2 에 있는 shell script 를 Jenkins EC2 에서 원격 호출한다.
우선, Publish over SSH 플러그인 부터 설치해보자. 아래는 해당 플러그인 공식 Documentation 이다.
https://plugins.jenkins.io/publish-over-ssh/
admin 으로 들어가든, 권한이 있는 계정으로 들어가자.
Jenkins 관리로 들어가자.
그리고, 플러그인 관리로 들어가자.
나는 이미 설치를 했기 때문에, 설치된 플러그인 목록에서 검색을 통해서 확인할 수 있다.
설치가 되지 않은 상태라면, 설치 가능 목록에서 Publish over SSH 검색 후 설치하면 된다.
플러그인 설치가 되었다면, 이제 시스템 설정으로 들어가자.
들어가서, 스크롤을 맨 아래로 내리면
아래와 같은 영역을 확인할 수 있다.
먼저 각 필드에 대해 설명하겠다.
path to key 필드와 key 필드는 private key file 의 위치 혹은 private key 를 넣으면 된다.
path 의 경우에는 절대경로를 넣어주거나 혹은 JENKINS_HOME 경로를 기준으로 상대경로도 가능하다.
필자의 경우에는 key 필드만을 이용했다.
다음으로, 사진에서도 확인할 수 있듯이 Required 라고 빨간색으로 경고를 주고 있는 필드들에 대해 알아보자.
Name : 원격 서버에 대한 별칭을 임의로 지정하면 된다.
Hostname : 말 그대로 원격 서버의 hostname 을 기입한다. 도메인이 있다면 도메인을 없다면 IP 주소를 기입하면 된다.
Username : 일반적으로 AWS EC2 를 이용한다면 ec2-user 가 되겠다.
Remote Directory: 원격 서버의 기본 디렉토리 path 를 넣어주면 된다. 일반적으로 AWS EC2 를 이용한다면, /home/ec2-user 를 넣어주면 된다.
제대로 기입했고 작동하는지 확인하려면, 사진에 Test Configuration 이라는 버튼이 있다. 해당 버튼을 눌러서 성공하면 Success 라는 문구를 확인할 수 있다. Success 문구가 아니라 실패했다고 하면, 앞서 설명했던 필드중에 올바르지 않으니까 꼼꼼하게 하나씩 확인해야 한다.
자 그렇다면, 이제 플러그인 설정이 끝났다. 배포해보자.
새로운 Item 누른다.
Freestyle project 를 만들 것이다. 이름은 당신의 마음대로 ... 이미지에선 오타가 났다. 다시 찍기 귀찮아서 패스
소스 코드 관리 섹션과, 빌드 섹션은 해당 글에서 스킵하겠다.
이번 글에서 다루고 싶은 Publish over SSH 에 대해서만 다루겠다.
따라서 빌드 후 조치 섹션에서 아래와 같이 Send build artifacts over SSH 를 선택한다.
선택하면, 아래와 같은 화면을 확인할 수 있다.
먼저 Name 필드는 앞서 정리했던 환경 설정 부분을 제대로 했다면, 지정 했던 이름이 노출되어서 건드릴 부분이 없다.
Source files : Jenkins EC2 에서 Deploy EC2 로 옮길 파일을 기입해주는 영역이다. jar 의 경우 예를 들면, **/libs/*.jar
Exec command : Deploy EC2 에서 실행할 command 를 호출할 수 있다. 예를 들어 Deploy EC2 의 기본 경로에 test.sh 라는 쉘스크립트가 존재한다면, . test.sh 와 같이 기입할 수 있다.
Remove prefix 와 Remote Directory 는 Required 가 아니다. 보다 세밀한 조정이 필요하다면 활용하도록 하자.
Jenkins 프리스타일 프로젝트를 작성하는 과정에서 Git 설정과 Build 설정을 개인적인 정보 노출을 하지 않기 위해서 뛰어 넘었다.
아래는 생성한 Jenkins 프리스타일 프로젝트를 build 했을 때 정상적으로 성공한 로그이다. 기존 로그에서 노출되면 민감한 정보들은 수정하였다.
이번 글은 여기서 마치도록 하겠다.
댓글
댓글 쓰기