최근 스프링부트 프로젝트의 Back-End CI/CD를 진행하던중 젠킨스서버에서 운영서버로 배포파일들을 전달하기 위해, SSH플러그인을 사용하려고 했는데 Jenkins의 Publish over SSH가 검색을 해도 나오지 않았습니다.
그래서 구글링을 해보니?
젠킨스 홈페이지에서 Publish Over SSH는 2022년 1월 12일 플러그인이 중지가 된 것을 확인할 수 있었습니다. 이유는 보안에 취약한 문제가 있기 때문임을 확인할 수 있었습니다.
이미 제가 참고하고 있던 블로그, https://backtony.github.io/spring/aws/2021-08-08-spring-cicd-1/를 포함해서 많은 CI/CD 예제들이 Publish Over SSH로 되어있어서 어떻게 해야 될지 난감했습니다.
구글링을 하며 해결책을 찾던 중 Publish Over SSH 대신 사용할 수 있는 SSH2 Easy Plugin이 있음을 확인했습니다.
지금부터 SSH2 Easy Plugin 사용법에 대해 알아보겠습니다. 먼저, 도커로 띄운 Jenkins홈페이지에 접속해서 SSH2 Easy Plugin을 설치해줍니다.
이후, 클라우드 사업자 아마존의 EC2를 사용하고 계신 분들이라면 운영서버 인스턴스의 보안그룹에 SSH포트 22번과 젠킨스 서버의 IP를 입력해줍니다.
정리하자면 젠킨스 서버에서 운영 서버로 파일을 업로드할 것이기 때문에 젠킨스 서버의 IP번호를 입력해주고, 파일을 전달하는 프로토콜은 SSH방식입니다.
이후, 젠킨스 홈페이지로 돌아와 젠킨스 관리를 입력해 다음과 같은 예시처럼 입력합니다.
ServerGroup에서 Username과 password를 입력하는 부분은 파일을 전송받을 운영서버의 리눅스 아이디와 비밀번호를 뜻합니다. 초기에는 비밀번호가 설정이 안되어있을텐데 비밀번호를 설정해주시고 아이디/비밀번호 접속이 가능하게 설정해주시면 됩니다.
비밀번호 설정 참고 블로그 -> https://nhj12311.tistory.com/15
그리고 서버리스트의 IP는 파일을 받고자 하는 운영 서버의 IP를 작성합니다.
이후, 젠킨스 홈페이지에서 프로젝트의 구성에 들어가줍니다.
제일 아래로 내려가면 Add build step이 보일텐데, 빌드단계에 어떤 작업을 추가할건지를 선택할 수 있습니다.
SSH2 Easy Plugin을 설치하면서 Remote Command, Remote SFTP Download, Remote SFTP Upload, Remote Shell과 같은 기능들을 사용할 수 있습니다.
여기서 Upload는 젠킨스 서버에서 운영 서버로 파일을 업로드 한다는 뜻이고, Download는 운영 서버에서 젠킨스 서버로 파일을 다운로드 한다는 의미입니다. 저는 젠킨스 서버에서 운영 서버로 파일을 보내고, 운영 서버에서 명령어를 실행하기 위해 Remote Upload와 Remote Command를 사용해보겠습니다.
Remote SFTP Upload화면입니다. 사실 이 부분에서 기존의 publish over ssh의 경로방식과는 다르고, 경로를 어떻게 적어줘야 할지 구글링을 해도 예시들이 많이 없어서 맨땅에 헤딩해보며 알아냈습니다..
localFilePath는 젠킨스 서버에서 운영 서버로 전송하고자 하는 파일의 경로를 적습니다. 즉, 자신이 젠킨스 서버에서 가지고 있는 파일 경로를 작성합니다.
먼저, 젠킨스 관리에 들어가보면 홈 디렉토리를 확인할 수 있습니다. 이를 기반으로 자신의 작업 공간에 들어가게 되는 경로 workspace/hup-server/ 까지 적어주고 자신의 경로를 추가로 적어주면 됩니다.
즉, 젠킨스의 작업 공간을 누르면 보이는 경로는 /var/jenkins_home/workspace/hup-server/까지입니다.
remoteLocation은 운영 서버에서 파일을 받을 때 어떤 경로로 파일을 받을지를 적어줍니다. 이때 운영서버에 해당하는 폴더가 없다면 빌드 과정에서 에러가 납니다.
fileName은 받고자 하는 파일명을 작성해줍니다.
이후 운영서버에서 실행하고자 하는 명령어를 다음과 같이 작성해줍니다.
빌드 과정을 확인해보면
다음과 같이 파일도 잘 전송되고, 명령어도 잘 실행되는 모습을 확인할 수 있습니다.
++구글링을 해도 SSH2 Easy Plugin에 대한 내용이 많이 없고, 파일 업로드 다운로드 과정에서 폴더 경로에 대한 자료가 정말... 많이 없다보니 적용하기 쉽지 않았습니다. 특히나 publish over ssh 플러그인이 불과 일주일전에 보안상 문제로 닫혀 대체에 대한 자료가 많이 없었던 것 같습니다. 자료가 많이 없어도 부딪혀보고 오래 고민해보면서 해답을 찾을 수 있었습니다!
++이번 포스팅은 SSH2 Easy Plugin에 대해서만 작성했지만, CI/CD를 이용해 배포하는 과정에서 정말 많은 부족함을 느꼈습니다 ㅜㅜ 리눅스에 대한 이해와 명령어 작성법, Docker, Docker compose, Docker Hub 명령어, 윈도우에서 리눅스 서버로 원격 접속하기 위한 Putty, AWS, Github에 대한 웹훅 등등 알아야 할 것이 정말 많아서 추가적으로 많은 학습이 필요함을 깨달았습니다!
'Dev > CI CD' 카테고리의 다른 글
[CI/CD] Travis CI -> Github Actions 전환기(Organization Public Repository) (0) | 2022.04.29 |
---|