본문 바로가기

AWS - KOR

# 019 ) AWS EC2 ( + Jenkins 서버/ Maven ) CICD 기초

https://www.jenkins.io/download/

 

Jenkins download and deployment

Jenkins download and deployment The Jenkins project produces two release lines: Stable (LTS) and regular (Weekly). Depending on your organization's needs, one may be preferred over the other. See the links below for more information and recommendations abo

www.jenkins.io

CICD1.txt
0.00MB

CI/CD 란?

어플리케이션 개발부터 배포까지 소프트 웨어 제공에 필요한 모든 단계를

자동화해서 빠르고 효율적으로 최종 목적지인 사용자에게 배포하는 방법입니다.

수동 오류를 최소화 시켜주고 시간적으로 엄청난 단축 시켜주는 장점으로 DevOps 에서 핵심적인 도구 입니다.

CI ( Continuous Integration ) - 지속적 통합으로 새로운 업데이트 검증과 오류 발견에 신속히 대응할 수 있습니다.
예시로 여러 개발자들이 각각 개발한 코드를 병합 ( merge ) 할때 오류를 최소화 하기 위해 CI 를 통해 지속적으로
코드 통합을 시도해서 테스트 할 수 있습니다. 
CD ( Continuous Delivery/Deployment ) - 지속적 배포로 자동으로 배포할 수 있는 방법 입니다.
즉 코드 변경사항이 있을 때 직접 매번 배포하지 않아도 자동으로 배포해주어 수고로움을 덜어 줍니다.


Jenkins 이란?

다양한 플러그인을 활용해 build,test,deployment 등의 일련의 작업들을 자동화해주는 서버입니다.

Maven 이란?

java 기반의 프로젝트를 빌드하고 관리할 수 있는 툴로 JDK 설치가 동반되어야 합니다.
자바 프로젝트 진행시 단순 코드파일로만 개발하는것이 아닌 많은 수의 라이브버리를 활용해야하는
경우가 있습니다. 이때 Maven이 자바 표준의 라이브러리를 관리를 손쉽게 할 수 있으며 
소스코드의 공유만으로도 라이브러리의 공동 작업을 동등하게 할 수 있습니다. 
라이브러리를 pom.xml 에 정의함으로써 자동으로 다운로드하게 해 주고 경로까지 설정 해 줍니다.

 

 

 

 

 

 

 

1. EC2 생성하기

 

젠킨스 서버를 위한 EC2 를 생성 해 줍니다.  네트워크 환경을 해주고 가지고 있는 키를 설정 해 줍니다.

 

 

보안 그룹에서는 다음과 같은 포트를 열어서 생성한 보안그룹을 연결 해 주었습니다.

 

 

사용자 데이터에는 지역 타임존 세팅만 하는 명령어를 진행 하였습니다.

#!/bin/bash
timedatectl set-timezone Asia/Seoul

 

 

 

Mobaxterm 을 이용해 생성된 ec2 의 퍼블릭 ip 를 이용한 접속을 시도합니다.

 

 

2. Jenkins 설치하기

 

sudo su -
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y fontconfig java-11-openjdk
amazon-linux-extras install -y java-openjdk11
yum install -y jenkins
systemctl enable --now jenkins
cat /var/lib/jenkins/secrets/initialAdminPassword # 패스워드 수정

jenkins 설치를 위한 명령어를 진행 해 봅니다. 마지막 패스워드 수정을 위한 일련번호가 나오는데 따로 복사 해 두었다가 나중에 서버가 설치되면 다시 사용 합니다.

 

 

hostnamectl set-hostname jenkins-server
yum install -y git

젠킨슨 서버를 위한 설치를 마무리 해 줍니다.

 

 

ss -nat 명령어로 현재 열린 포트를 확인하고 8080 포트를 이용해 접속을 시도 해 봅니다.

 

 

 

ip 주소:8080 으로 접속 시 다음과 같은 창이 뜹니다. 패스워드 부분에 위에 따로 받아놓은 비밀번호를 적어주고 들어가면Cutomize Jenkins 창은 닫아주고,  start using Jenkins 으로 시작 해 줍니다.

 

 

 

Admin 대시보드로 가서 설정으로 가면 Password/ timezone 을 변경 할 수 있습니다.

 

 

재 접속을 위해 admin 유저이름과 바뀐 비밀번호로 다시 접속 합니다.

 

 

dashboard - new item 생성으로 새로 추가할 아이템이름을 작성하고 아래 Freestyle project 를 눌러 줍니다.

 

해당 아이템의 간략한 설명을 적어 줍니다.

 

 

Build 의 Shell 실행으로 옵션을 적어주고 원하는 테스트시 확인 해 볼 명령어들을 적어주고 Apply- 저장 해 줍니다.

 

 

 

지금 빌드를 누르면 하단의 빌드된 프로젝트가 빌드된 시간과 함께 나오는데 이를 클릭 해 봅니다.

 

 

콘솔 출력창으로 가면 앞서 적어둔 명령어에 따라 잘 나오고 있는것을 확인 할 수 있습니다.

 

 

3. Github 연동 시키기

 

github 에서 코드를 가져오기 위해 구성환경을 구축 해 봅니다. Jenkins 관리의 플러그인 관리로 갑니다.

 

사용가능 플러그인에 github 를 검색 한 뒤 체크하고 install without restart 를 눌러 줍니다.

 

 

해당 플러그인이 성공적으로 install 되면 메인 페이지로 돌아 갑니다.

 

 

시스템 관리의 global tool configuration 으로 들어 가 줍니다.

 

 

Git 섹션의 이름을 적어 주고 저장 해 줍니다.

 

 

 

깃을 활용하기 위한 두번째 프로젝트를 생성 해 보겠습니다.

이름을 적어주고 Freestyle project 를 눌러 진행 합니다.

 

해당 프로젝트의 설명을 적어 줍니다.

 

 

소스코드 관리에 코드를 가져올 깃허브 주소를 그대로 붙여 넣어줍니다. 

Apply- 저장을 눌러서 완료 합니다.

 

 

지금 빌드로 프로젝트를 빌드 해 주고 들어 가 줍니다.

 

콘솔 출력이 완료되고 확인 할 수 있습니다. 해당 워크스페이스 주소로 들어가 봅니다.

 

다음과 같이 여러 파일들이 잘 가져와진 것을 확인 합니다.

 

 

4. Maven 연동 시키기

 

 

cd /opt
wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
tar -xvzf apache-maven-3.8.6-bin.tar.gz
mv apache-maven-3.8.6 maven
cd maven
cd bin
cd ~
find / -name java-11*

vi .bash_profile
  M2_HOME=/opt/maven
  M2=/opt/maven/bin
  JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.amzn2.0.3.x86_64
  # User specific environment and startup programs

  PATH=$PATH:$HOME/bin:$JAVA_HOME:$M2_HOME:$M2

echo $PATH
source .bash_profile
echo $PATH
mvn -v

Maven 설치를 위한 명령어 입니다.

vi 편집기에 있는 첫 3줄 명령어는 그대로 # 문구를 기준으로 붙여 넣어주고 맨 아래 PATH 명령어는 누락된 부분만 붙여 넣어 줍니다.

 

이전에 플러그인 설치했던 과정처럼 Maven Integration 을 설치 해 줍니다.

 

 

성공적으로 완료 되어 메인페이지로 돌아 갑니다.

 

 

global tool configuration에 들어가서 JDK 설치에 대한 설정을 해 줍니다.

 

아래 Maven 의 이름과 위치를 적어 줍니다.

 

 

Maven 연동을 테스터로 3번째 프로젝트를 생성 해 줍니다. 이번에는 추가 된 Maven project 를 클릭 해서 빌드 해 봅니다.

 

마찬가지로 해당 프로젝트에 대한 설명을 적어 줍니다.

 

 

소스 코드 관리에는 깃 허브에서 주소를 붙여 넣어 줍니다.

 

 

build 에 관한 설정도 적어서 마무리 해 줍니다.

 

지금 build - Console output 으로 정상적으로 진행됨을 확인 해 줍니다.

 

 

다음과 같이 워크스페이스 타켓 파일로 가면 해당 파일이 잘 보입니다.

 

젠킨스 maven 작업공간에 같은 위치를 확인했을 때도 같은 파일을 확인 할 수 있습니다.