본문 바로가기

Back-End/Jenkins

(7)
[Jenkins] 젠킨스를 이용한 스프링 부트 CI/CD (feat. EC2) 스프링 부트 서버를 EC2 서버를 사용하여 구축하고, 서버를 실행시킬 때마다 EC2 인스턴스에 접속하여 명령어를 입력해야 하는 것이 불편해서 젠킨스를 이용해서 스프링 부트 서버의 CI/CD 를 구축하려고 합니다. 이 글은 EC2 서버 구축이 모두 완료된 상태에서 진행합니다. EC2 서버 구축은 아래의 이전 포스팅을 참고해주세요 :) [AWS] AWS EC2 에 스프링 부트 프로젝트 배포하기 (feat. MySQL) 현재 스프링 부트 프로젝트를 하고 있는데, AWS EC2 에 배포하려고 합니다. AWS 에 계정을 만들어놓은 상태이고, 스프링 부트 프로젝트를 AWS 서버에 올려보겠습니다. 1. EC2 인스턴스 생성하기 1) EC2 jeinie-developer.tistory.com 1. 젠킨스 설치 현재 사..
[Jenkins] 젠킨스에서 Permission denied 에러 발생 젠킨스에서 파이프라인으로 CI 를 구축하고 빌드를 하던 중, 다음과 같이 Permission denied 에러가 발생했습니다. 이 에러의 원인은 젠킨스 컨테이너에서 전송할 때 사용할 권한은 jenkins, 즉 일반 권한인데 Remote Diretory의 권한이 이와 다르기 때문입니다. 젠킨스 서버에서 ls -al 명령어를 통해 확인을 해보면 다음과 같이 ubuntu:ubuntu 권한으로 되어 있는 것을 확인할 수 있습니다. 따라서 위 Remote Directory 의 권한을 젠킨스의 권한과 똑같이 설정해주면 됩니다. 아래의 명령어를 입력하여 설정해줍니다. $ sudo chown jenkins:jenkins server 다음과 같이 jenkins:jenkins 권한으로 변경되었고, 빌드도 잘 됨을 확인할 ..
[Jenkins] 깃허브에 없는 파일 젠킨스에 수동으로 업로드하는 방법 젠킨스로 CI 파이프라인을 구축하다가 다음과 같은 에러가 발생했습니다. Node.js 와 파이어베이스를 연동할 때 사용되는 정보들이 담긴 json 파일이 없다고 뜨는데, 깃허브에 올릴 때 gitignore 파일에 포함시켜놓았기 때문입니다. 이렇게 깃허브에 없는 파일들로 인해 젠킨스에서 빌드를 실패하게 되는데, 이런 경우 직접 젠킨스 서버에 접속해 수동으로 파일을 가져와야 합니다. gitignore 파일에 포함시킨 파일들이 많으므로 좀 더 간편하게 Back 단의 server 폴더 자체를 가져오겠습니다. server 폴더가 로컬에 있기 때문에 SCP 를 사용하여 로컬에서 EC2 로 업로드해야 합니다. 1) 프로젝트 경로 확인 먼저, 콘솔창을 확인하면 현재 프로젝트의 경로가 아래와 나옵니다. 젠킨스 서버에서 ..
[Jenkins] Jenkins 를 통한 CI/CD 구축 (with Node.js) 젠킨스에서 CI/CD 구축을 위해서는 아이템을 생성해야 합니다. 아이템을 만드는 방법은 FreeStyle 과 Pipeline 이 있는데, 요즘에는 FreeStyle 보다 Pipeline 을 많이 사용하고 있다고 합니다. [ Pipeline 장점 ] 코드로 프로젝트 설정을 할 수 있어 FreeStyle 과 다르게 젠킨스 웹에 직접 접근하지 않아도 설정을 변경할 수 있다. (웹을 통한 설정 가능) CI/CD 파이프라인 설정을 하나의 스크립트 파일(Jenkinsfile)로 프로그래밍을 통해 할 수 있다. FreeStyle 과 다르게 하나의 스크립트 파일(Jenkinsfile)을 통해 흐름 제어를 할 수 있다. 일반 코드처럼 버전 관리가 가능하다. FreeStyle 은 간단한 빌드 및 배포를 할 경우 사용되고,..
[Jenkins] AWS EC2에 SSH 로 배포하기 (.pem 파일) 이를 하기에 앞서, Jenkins 관리 > Plugin Manager 에서 Publish Over SSH 를 검색해 설치해줍니다. 플로그인 설치가 완료되었다면, Jenkins 관리 > 시스템 설정 으로 들어가서 Publish over SSH 로 이동합니다. 1) EC2 접속을 위한 정보를 입력해주면 되는데, Name은 Job에서 식별하는 용도이므로 편한 대로 작성하면 됩니다. 이 외의 정보들은 EC2 에 SSH 연결을 하기 위한 정보입니다. Key 에는 EC2 접근을 위해 가지고 있는 .pem 파일의 내용을 넣어줍니다. 2) SSH Server 를 추가하여 아래의 내용에 따라 입력합니다. AWS 에서 EC2 의 세부정보를 참고하여 입력합니다. Name: 자신이 사용할 임의의 SSH Server 의 이름 ..
[Jenkins] Docker 활용하여 Jenkins 설치 및 Github 연동 최근 CI/CD 로 Jenkins 가 많이 사용되고 있습니다. 도커를 사용하지 않고 젠킨스를 우분투에 직접 설치하면 여러가지 환경 설정이 많기 때문에, 도커를 활용하여 간단한 명령어로 젠킨스를 설치하고 서버에 띄울 수 있습니다. 1. Jenkins 컨테이너 준비 다음 명령어로 이미지를 컨테이너에 적재합니다. $ docker run --name jenkins-docker -d -p 8080:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home -u root jenkins/jenkins:lts 다음과 같이 /home 디렉터리에 jenkins 폴더가 생긴 것을 확인할 수 있습니다. $ sudo apt-get install net-tools 위의 명령어를 입력하여 n..
[Jenkins] apt-get 명령어 apt-get 명령어는 리눅스에서 패키지를 설치하거나 삭제하는 데에 사용됩니다. 먼저, apt-get 명령어들은 다음과 같이 있습니다. apt-get update apt-get upgrade apt-get install apt-get remove apt-get purge apt-get autoremove 1. sudo apt-get update 이 명령어는 repository에 새로 추가되었거나 변경된 패키지 정보를 업데이트합니다. 업데이트하지 않을 경우 시스템은 새로운 패키지에 대한 존재를 모르기 때문에 새로운 패키지를 설치할 수 없습니다. $ sudo apt-get update 2. sudo apt-get upgrade 현재 설치된 모든 패키지를 높은 버전으로 업그레이드합니다. $ sudo apt-g..