Jenkins + Node.js(PM2) + GitHub를 이용한 자동배포 구축하기(1)

ButterFlakes·2022년 5월 5일
3
post-thumbnail

아무튼 자동배포를 할 일이 생겼다

거창한 이유는 아니고 그냥 컴퓨터에서 git push, 서버에 연결해서 git pull, pm2 restart를 하면서 쌓인 귀찮음 게이지가 어느 순간 임계점을 넘어버리고 말았다.

아무튼 자동배포를 해야 할 이유가 생긴 것이다.

그래서 구글에 자동배포에 대한 것들을 검색해보고 이를 적용하는 과정에서 신나게 해본 삽질들에 대한 기록을 남긴다

Jenkins

자동CI/CD를 해주는 소프트웨어들은 여러가지가 있지만 그 중 무료이면서 가장 레퍼런스-그냥 구글 검색결과-가 많은 Jenkins를 이용해 자동배포를 해보기로 했다.

본 블로그 주인장은 젠킨스와 배포 서버를 하나의 서버로 썼지만, 만일 젠킨스용 서버와 배포 서버를 따로 쓴다면 젠킨스 관련 파트는 젠킨스용 서버에, 배포 서버 관련 파트는 배포용 서버에 적용하면 된다.

Jenkins 설치하기

ubuntu 20.04 버전을 기준으로 설명하겠다. 그러니 님들도 LTS버전 많이 쓰세요

젠킨스는 Java가 있어야 작동이 된다. 그러니 먼저 자신의 우분투에 자바가 설치되어 있는지 확인하기 위해 아래와 같은 명령어를 터미널에 입력해보자

java --version
javac --version

버전이 제대로 뜨면 설치되어 있는 것이니 아래 챕터를 스킵해도 된다.

Java & javac 설치하기

자바부터 먼저 설치해보자. 터미널에 아래 명령어를 입력해주자

sudo apt-get install default-jdk

그럼 터미널에 무슨 글자들이 좌라락 지나가며 자바의 설치가 진행될 것이다.

설치가 완료됐으면 제대로 설치되었는지 확인할 차례다. 아래의 명령어를 터미널에 입력해주자

java --version

이 명령어를 입력했을 때 아래와 같이 버전 정보가 뜨면 제대로 자바가 설치된 것이다

javac도 제대로 설치되어 있는지 확인하기 위해 아래 명령어도 터미널에 입력해보자.

javac --version


위 사진과 같이 버전이 뜨면 제대로 설치된 것이다.

서버에 Jenkins 설치

자바가 제대로 설치되었다면 젠킨스를 설치해줄 차례다.
아래의 명령어들을 차례로 입력해주자.

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins

자세한 정보는 https://www.jenkins.io/ 에 가면 더 많이 나와있다.

젠킨스의 설치가 완료됐으면 방화벽의 포트를 열어주어야 한다. 젠킨스는 8080 포트 위에서 작동하니 8080번 포트를 열어주자.

sudo ufw allow 8080

만일 AWS나 구글 클라우드 플랫폼 같이 클라우드 서비스를 통해 서버를 빌려 쓰고 있다면 별도로 해당 서비스의 보안 규칙 등을 수정해서 8080번 포트를 통한 액세스를 허용해줄 필요가 있다.

이제 젠킨스를 실행할 준비가 끝났다.

Jenkins 실행

http://본인의 서버주소:8080 으로 접속하자. 그럼 아래와 같은 화면이 뜰 것이다.

대충 저기 /var/lib 어쩌고 저쩌고 하는 링크에 패스워드가 존재한다는 말이다.
아래의 명령어를 터미널에 입력하고 나오는 코드를 저기에 입력해주자

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

터미널에 출력되는 코드를 입력해주고 나면 아래와 같은 화면으로 넘어간다.

두 가지 옵션이 있는데 아무 거나 골라도 된다. 일단 Install suggested plugins를 선택해 설치해보자.

그럼 위와 같은 화면이 뜨면서 플러그인 설치가 진행된다. 시간이 좀 걸리는 편이니 느긋하게 유튜브 영상이라도 한 편 보고 오거나 커피라도 한 잔 마시고 오자.

플러그인 설치를 마치고 나면 위와 같이 유저 정보를 입력하는 창이 뜬다. 유저 정보를 입력하고 Save and Continue를 눌러주자

젠킨스 인스턴스 연결 정보를 설정하는 화면이 나온다. 이 정보를 바꿔도 되고 기본으로 생성해주는 값을 그대로 써도 된다.

이제 젠킨스의 설정이 완료되었다.

GitHub SSH키 등록하기

이대로 GitHub에 연결할 수 있는건 아니다. 깃허브에 연결하기 위해서 git clone 을 하면 아래와 같은 오류가 뜬다

개인키를 깃허브에 등록해 놓아야 깃허브에 연결할 수 있다. 우선 아래 명령어를 터미널에 입력해서 ssh를 설정하는 폴더로 이동하자

cd ~/.ssh

그리고 아래의 명령어를 입력해서 ssh 키를 생성하면 된다

ssh-keygen -t ed25519 -C "<이메일 주소>"

다음으로 패스워드를 지정할 지 물어보는데 만일 패스워드를 지정하게 되면 깃허브에 연결할 때 마다 패스워드를 입력해야하니 그냥 엔터를 눌러서 넘기도록 하자

그럼 id_ed25519 라는 파일과 id_ed25519.pub 라는 두 개의 파일이 생성되엇을 건데 id_ed25519.pub에 적힌 내용을 깃허브에 등록해주면 된다.

cat id_ed25519.pub

이렇게 해서 나온 내용을 깃허브에 등록해주면 된다

그 다음 깃허브의 계정설정으로 이동해서 SSH ans GPG keys 메뉴로 이동하자

New SSH key를 눌러서 ssh 키를 등록하자

Key에다 pub파일의 내용을 등록해주면 된다. 주의할 점으로는 키를 생성하면서 입력한 이메일까지 모두 입력해줘야 제대로 작동한다

등록했다면 터미널에서 아래 명령어를 입력해보자

ssh -T git@github.com


위와 같이 나오면 성공적으로 등록한 것이다. 이제 문제없이 git clone이 될 것이다

0개의 댓글