728x90
목차
1. Jenkins
■ Jenkins란?
- 모든 언어의 조합과 소스 코드 레포지토리에 대한 지속적인 통합(Continuous integration, CI)과 지속적 배포(Conticuous delivery, CD) 환경을 구축하기 위한 도구
- 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높임
- 편리한 설정, 안정적인 빌드/배포 환경, 다양한 활용 및 손쉬운 확장이 가능
- 보편적으로 EC2 인스턴스를 nginx 1개, jenkins 1개, 서버 EC2 2개를 기본으로 함
- 아래의 배포는 서버 1개를 예시로 진행
■ Jenkins로 배포
- jenkins 이름으로 보안 그룹, 인스턴스 생성
- 해당 링크에서 나온 방식으로 각각 생성 - jenkins 인스턴스 연결
- sudo apt update로 업데이트
- sudo apt install openjdk-11-jdk로 jdk 11버전 설치
- wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -로 GPG키를 가져옴
- sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'로 jenkins repository를 시스템에 추가
- sudo apt update로 업데이트
- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys PUBKEY
- PUBKEY는 업데이트 시 나오는 PUBKEY 값 입력
- sudo apt update로 다시 업데이트
- 위 과정을 진행해야 jenkins를 설치 가능 - sudo apt install jenkins로 jenkins 설치
- jenkins 인스턴스에서 퍼블릭 IPv4 주소를 복사
- 주소창에 붙여넣기 후 :8080을 뒤에 추가하면 해당 사이트가 나옴
- sudo cat /var/lib/jenkins/secrets/initialAdminPassword(위 화면에 나오는 경로임)로 패스워드를 얻음
- 해당 비밀번호를 Administrator password에 입력하고 Continue를 클릭
- Install suggested plugins를 클릭
- 정보를 입력하여 가입 진행
- 해당 영역에 jenkins 인스터늣 퍼블릭 IPv4 주소를 입력
- restart 후에 화면이 나오지 않으면 새로고침을 진행
- kenkins 로그인 화면에서 로그인 진행
- Jenkins 관리를 클릭
- Plugins를 클릭
- Available plugins를 클릭
- ssh 검색 후 Publish Over SSH 선택 후 Install without restart를 클릭
- 설치 후 Jenkins관리에 system을 클릭
- jenkins 연결 창으로 돌아와서 ssh-keygen -t rsa -f ~/.ssh/id_rsa를 입력
- jenkins ssh 키를 생성
- 엔터키를 계속 눌러줘야 함
- cd ~/.ssh로 해당 경로로 이동 후 ls를 통해 2개의 키를 확인
- sudo cat id_rsa, sudo cat id_rsa.pub으로 private키와 public키 값을 확인
해당 private 키 값을 BEGIN부터 END까지 모두 system의 Publish over SSH의 Key에 입력
- SSH Servers를 추가
- 이름은 back_server 입력
- Hostname은 해당 server의 프라이빗 IPv4 주소 입력
- Username은 ubuntu 입력
- Remote Directory는 /home/ubuntu 입력
- 서버가 여러개면 추가하여 똑같이 진행
- back_server를 연결하여 sudo vim ~/.ssh/authorized_keys를 실행
- O를 누른 뒤 INSERT로 변경 후 public키를 입력
- ESC 후 :wq로 저장 후 빠져나옴
- Test Configuration 후 Success가 나오면 성공적으로 완료
- 완료 후 저장
- 새로운 Item클릭
- 이름을 back_server로 하고 Freestyle project 클릭 후 OK
- 빌드 후 조치 추가 클릭 후 Send build artifacts over SSH 클릭
- 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개일 경우 동일하게 입력
- 지금 빌드 클릭
- #1 클릭 후 Console Output을 클릭
- SUCCESS가 뜰 경우 서버가 제대로 실행
- 이제 서버를 켜고 끄고를 자동으로 실행 가능
- 서버를 일일이 실행할 필요가 없음