[CI/CD Pipeline] 1. AWS EC2 + Jenkins 설정

AWS EC2 환경 구축

  • 필자는 EC2 인스턴스를 생성하여 젠킨스 환경을 구축했다.
  • t3.medium 스토리지 30GB로 생성함. 키젠도 생성 한다.
  • Amazon Linux 최상위 버전을 선택한다.(현 시점 2023 버전)

MobaXterm 접속

키젠을 통한 session setting을 진행 한다.

img_3.png

AWS EC2 환경에 JDK, Docker, Docker-compose 설치

# Java 설치(설치 안해도 된다)
sudo yum install -y java-17-amazon-corretto-devel

# Docker 패키지 설치
sudo yum install -y docker

# Docker 서비스 시작
sudo service docker start

# Docker 서비스가 부팅 시 자동으로 시작되도록 설정
sudo systemctl enable docker

# 현재 사용자를 docker 그룹에 추가 (로그아웃 후 다시 로그인 필요)
sudo usermod -aG docker $USER

# Docker Compose 바이너리 다운로드
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 바이너리에 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

# 심볼릭 링크 생성 (선택 사항)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

jenkins

jenkins 설치 및 설정 방법을 알아 본다.

jenkins 설치

도커로 설치하면 간편하긴 하지만 설정시 조금 더 복잡한 느낌이 든다. 서버 설치를 추가로 기술한다.

1) 설치 url

  • https://pkg.jenkins.io/redhat-stable/ 2) 터미널 작업 ```shell

    설치시 url은 최신버전으로 항상 바뀌니 확인 후 작업하자

    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm –import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

자바 및 젠킨스 설치

sudo dnf install fontconfig java-17-openjdk sudo dnf install jenkins

시작시 항상 실행

sudo systemctl enable jenkins

실행

sudo systemctl start jenkins

초기 패스워드 확인

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



### jenkins 설치(도커)
> 젠킨스 설치를 진행 한다.

1. 젠킨스 설치 url접속
[https://www.jenkins.io/download](https://www.jenkins.io/download)
2. 위 링크접속시 여러 설치 옵션이 있다.  
![img.png](/assets/img/cicd/jenkins/img.png)
3. 필자는 도커를 통한 설치를 진행 했다.  
![img_1.png](/assets/img/cicd/jenkins/img_1.png)
4. 하기 도커 명령어를 사용해 실행 한다.
```shell
docker run --name <도커서비스이름> -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 --restart=on-failure jenkins/jenkins:lts-jdk17
  1. 설치 후 로그를 확인한다.
    • docker ps 명령어로 젠킨스 서버 정보를 확인한다.
    • CONTAINER ID 또는 NAMES로 로그를 확인한다.(docker logs )
  2. 초기 패스워드 부분을 기억해 두자.(중간쯤 확인)
    img_2.png

초기 접속

  • 접속 주소 : <서버IP>:8088
  • 처음 접속시 초기 패스워드 입력란이 나온다.
  • 그 후 Customize Jenkins에서 Install suggested plugins를 선택해 준다. img.png
  • 설치 완료 후 계정 및 Url을 입력한다.(http://127.0.0.1:8080/)

JDK

  • 좌측 메뉴 Jenkins 관리 > Global Tool Configuration
  • JDK부분을 확인한다. 따로 추가를 해도 되고 안해도 된다. 추가가 필요한 경우 진행해 주자.
# 도커 컨테이너 접속
docker exec -it jenkins bash

# 접속 후 jdk 확인
java -version

메이븐 설정

  • 플러그인 다운 및 설치 img.png
  • Jenkins 관리 > Tools > Maven installations img.png
  • 설치 후 하기와 같이 확인 가능하다 img.png
  • 새로운 Item 추가에서 Maven project 선택 후 생성
  • Root POM 경로와 Goals and options을 넣어준다 img.png
  • 도커에서 젠킨스 실행시 Host pc의 Volume mount를 사용하지 않고 실행시 도커 컨테이너 하기 경로에서 확인 가능
    cd /var/jenkins_home/workspace
    

war파일을 was에 배포 하기

  • war로 만들어진 파일의 배포를 위해 Deploy to container 플러그인이 필요하다. img.png
  • 설치 후 빌드 후 서비스의 조치 항목에 Deploy war/ear to a container 에서 설정해 준다.
  • add Container 에서 was 선택 후 관련 정보를 넣어준다.
  • 예를들어 톰캣 서버의 계정을 넣어준다. img.png

Poll SCM 설정

  • 프로젝트내 빌드 유발의 Poll SCM 항목을 선택 후 스케쥴 스크립트를 넣어준다.
  • 설정된 시간에 한번씩 변경된 소스를 감지하여 자동 배포가 진행 된다.

SSH 설정

  • Deploy to container 방법 대신 사용
  • 플러그인 > publish over 검색 후 Publish Over SSH 설치 진행 img.png
  • Jenkins 관리 > System > Publish over SSH > SSH Servers 입력 img_1.png
  • 프로젝트 내의 Post Steps > Add post-build step에서 Send files or execute commands over SSH 선택
  • 기 설정했던 SSH를 선택후 Transfers 부분을 입력한다.
    • Source files : 현 위치에서 복사하여 전송할 경로 및 파일 패턴 입력
    • Remove prefix : 삭제할 prefix 입력 (ex : target/*.war 에서 war만 전송을 원할 경우 target을 적어준다)
    • Remote directory : 복사될 위치 지정 ( SSH 설정시 입력한 리모트 디렉토리를 기준으로 한다. ex : .) img.png

© 2023 Lee. All rights reserved.