[ 이준형 애플리케이션 배포 자동화와 CI/CD #1 ] Jenkins 서버 세팅하기

김수호·2024년 7월 4일
0
post-thumbnail

만약 우리가 프로젝트를 수동으로 배포한다고 하면, 대략적으로 아래와 같은 과정대로 진행하게 될 것이다.

  • 수동 배포
    • 1) 우리 PC에서 소스 코드를 커밋하고 github 에 push 한다.
    • 2) 서버에 ssh 로 접속을 해서, (git clone or wget) 명령어 등으로 소스코드를 가져온 다음, 서비스를 실행시켜서 배포한다.

이러한 수동 배포는 사람이 모든 과정에 직접 개입하기 때문에, 배포해야 할 서버가 많아질수록 또는 배포 자체를 해야할 경우가 많아질수록, 점점 효율이 떨어지게 되고, 실수할 가능성 또한 늘어나게 된다.
그래서 일반적으로 실무에서는 이러한 배포과정을 수동으로 하지 않고, 자동화한다.

배포를 자동화 하기 위한 방법과 도구에는 여러가지가 있지만, 이 강의에서는 Jenkins 를 통해 배포를 자동화하는 학습을 진행한다.

만약 위 과정에서 Jenkins 를 활용해서 배포를 자동화한다고 가정해보자.
그러면 배포 단계에서 Jenkins 가 개입하게 되고, 아래와 같은 구조가 만들어지게 된다.

  • Jenkins 를 활용한 배포
    • Jenkins 서버를 세팅하고 프로젝트 배포를 위한 환경 설정까지 마치고 나면, Jenkins 에 접속해 한 번의 버튼 클릭만으로 간단히 배포를 해볼 수 있다.
      • 1) Jenkins 에 접속해서 배포 명령을 요청한다.
      • 2) Jenkins 는 설정된 대로 github 에 있는 소스코드를 가져온다.
      • 3) 그리고 프로젝트 소스코드를 Jenkins 내에서 빌드하고 패키징한다.
      • 4) 이후 패키징된 파일을 서버에 전송하고 실행한다.
        • 설정만 잘 되어있다면, 한 번에 여러 서버에 전송하고 실행하는 것도 가능하다.
    • 참고) 물론 Jenkins 역시, 서버에 설치가 되어야 한다. 따라서 우리는 먼저 Jenkins 를 설치할 서버를 생성하고, Jenkins 를 설치한 뒤 실행해볼 것이다.

Jenkins 서버 세팅하기

  • 사전 작업) Jenkins 설치를 위한 서버 생성 (Vultr)
    • 참고로 Jenkins 를 사용할 때, 메모리는 반드시 2기가 이상이어야 한다.
    • 메모리가 1기가일때에는, 정상적으로 실행되지 않는 경우가 있다.
    • 참고) 인스턴스 이름: jenkins-instance 로 해주었다.
  • 1) putty 를 이용해 서버 접속
  • 2) 리눅스 서버 패키지 업데이트
    • sudo dnf update -y
  • 3) 도커 설치
    • 참고) 강의에서는 도커를 사용해서 Jenkins 를 띄워볼 것이다.
    • sudo dnf install dnf-plugins-core -y
    • sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • sudo dnf install docker-ce docker-ce-cli containerd.io -y
  • 4) 도커 서비스 시작
    • sudo systemctl start docker
    • sudo systemctl enable docker
  • 5) 젠킨스 도커 이미지 Pull & 컨테이너 시작
    • sudo docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --restart=always -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
    • 참고) 만약 특정 버전의 Jenkins 로 사용하고자 하는 경우 lts 대신 버전을 입력해주면 된다. ( ex. 2.440.3 )
  • 6) 초기 비밀번호 보기
    • sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  • 7) 웹 브라우저에서 jenkins-instance-서버IP:8080 로 접속해보자.
    • 참고) 젠킨스는 기본적으로 8080 포트로 지정되어 있다.
  • 8) 비밀번호 입력 창이 나오면 5) 에서 결과로 나온 값을 입력한다.
  • 9) Install suggested plugins 와 Select plugins to install 두 개의 버튼이 있는데, 우리는 Install suggested plugins 를 클릭한다.
    • Install suggested plugins 를 사용해서, 기본적으로 설치되어야 할 패키지들만 설치해주고, 필요한건 따로 설치하자. ( Jenkins 는 플러그인을 추가로 설치하는게 굉장히 간단해서 이렇게 설치를 해도 괜찮다. )
    • 참고) Install suggested plugins 버튼을 누르면 다음과 같이 플러그인들이 설치되는 것을 확인할 수 있다.
      • 참고) 오래 걸린다.
  • 10) 플러그인이 다 설치되었으면, 어드민 계정을 만들라는 내용이 나온다. 사용할 계정 정보를 입력해주면 된다.
    • 작성 후 Save and Continue 버튼을 클릭하자.
  • 11) 다음 화면으로는, Jenkins URL 을 입력하라는 창이 나온다.
    • 만약에 도메인 주소가 있으면, 그 도메인 주소를 입력하면 되고, 없으면 이미 자동으로 작성되어 있던 것( http:jenkins-instance IP주소:8080 )을 그대로 두고, Save and Finish 버튼을 클릭하자.
  • 12) Start using Jenkins 버튼을 클릭해보자.
    • Jenkins 의 초기 페이지로 넘어온다. ( 이 상태가 Jenkins 설치가 완료된 것이다. )

 

지금까지 Jenkins 서버를 세팅했다.

다음 내용에서는 Jenkins 를 활용해서 배포할 수 있는 환경설정을 해보자.


강의를 듣고 정리한 글입니다. 코드와 그림 등의 출처는 이준형 강사님께 있습니다.

profile
현실에서 한 발자국

0개의 댓글