본문 바로가기
Cloud Services/AWS

Chapter 5. Jenkins

by 더 이프 2023. 6. 29.
728x90

목차

    1. Jenkins

    ■ Jenkins란?

    • 모든 언어의 조합과 소스 코드 레포지토리에 대한 지속적인 통합(Continuous integration, CI)과 지속적 배포(Conticuous delivery, CD) 환경을 구축하기 위한 도구
    • 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높임
    • 편리한 설정, 안정적인 빌드/배포 환경, 다양한 활용 및 손쉬운 확장이 가능
    • 보편적으로 EC2 인스턴스를 nginx 1개, jenkins 1개, 서버 EC2 2개를 기본으로 함
    • 아래의 배포는 서버 1개를 예시로 진행

    ■ Jenkins로 배포

    1. jenkins 이름으로 보안 그룹, 인스턴스 생성
      - 해당 링크에서 나온 방식으로 각각 생성
    2. jenkins 인스턴스 연결
    3. sudo apt update로 업데이트
    4. sudo apt install openjdk-11-jdk로 jdk 11버전 설치
    5. wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -로 GPG키를 가져옴
    6. sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'로 jenkins repository를 시스템에 추가
    7. sudo apt update로 업데이트
    8. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys PUBKEY
      - PUBKEY는 업데이트 시 나오는 PUBKEY 값 입력
    9. sudo apt update로 다시 업데이트
      - 위 과정을 진행해야 jenkins를 설치 가능
    10. sudo apt install jenkins로 jenkins 설치
    11. jenkins 인스턴스에서 퍼블릭 IPv4 주소를 복사
    12. 주소창에 붙여넣기 후 :8080을 뒤에 추가하면 해당 사이트가 나옴
    13. sudo cat /var/lib/jenkins/secrets/initialAdminPassword(위 화면에 나오는 경로임)로 패스워드를 얻음
    14. 해당 비밀번호를 Administrator password에 입력하고 Continue를 클릭
    15. Install suggested plugins를 클릭
    16. 정보를 입력하여 가입 진행
    17. 해당 영역에 jenkins 인스터늣 퍼블릭 IPv4 주소를 입력
    18. restart 후에 화면이 나오지 않으면 새로고침을 진행
    19. kenkins 로그인 화면에서 로그인 진행
    20. Jenkins 관리를 클릭
    21. Plugins를 클릭
    22. Available plugins를 클릭
    23. ssh 검색 후 Publish Over SSH 선택 후 Install without restart를 클릭
    24. 설치 후 Jenkins관리에 system을 클릭
    25. jenkins 연결 창으로 돌아와서 ssh-keygen -t rsa -f ~/.ssh/id_rsa를 입력
      - jenkins ssh 키를 생성
      - 엔터키를 계속 눌러줘야 함
    26. cd ~/.ssh로 해당 경로로 이동 후 ls를 통해 2개의 키를 확인
    27. sudo cat id_rsa, sudo cat id_rsa.pub으로 private키와 public키 값을 확인
      해당 private 키 값을 BEGIN부터 END까지 모두 system의 Publish over SSH의 Key에 입력
    28. SSH Servers를 추가
      - 이름은 back_server 입력
      - Hostname은 해당 server의 프라이빗 IPv4 주소 입력
      - Username은 ubuntu 입력
      - Remote Directory는 /home/ubuntu 입력
    29. 서버가 여러개면 추가하여 똑같이 진행
    30. back_server를 연결하여 sudo vim ~/.ssh/authorized_keys를 실행
      - O를 누른 뒤 INSERT로 변경 후 public키를 입력
      - ESC 후 :wq로 저장 후 빠져나옴
    31. Test Configuration 후 Success가 나오면 성공적으로 완료
    32. 완료 후 저장
    33. 새로운 Item클릭
    34. 이름을 back_server로 하고 Freestyle project 클릭 후 OK
    35. 빌드 후 조치 추가 클릭 후 Send build artifacts over SSH 클릭
    36. back_server의 Exec command 설정(입력한 순서대로 실행)
      - docker pull myorg/myapp
      - docker rm -f $(docker ps -qa)
      - nohup docker run -p 8080:8080 myorg/myapp > nohup.out 2>&1 &
      - 해당 명령들을 순서대로 입력
      - 서버가 2개일 경우 동일하게 입력
    37. 지금 빌드 클릭
    38. #1 클릭 후 Console Output을 클릭
    39. SUCCESS가 뜰 경우 서버가 제대로 실행
      - 이제 서버를 켜고 끄고를 자동으로 실행 가능
      - 서버를 일일이 실행할 필요가 없음