본문 바로가기

KOSA 클라우드 솔루션즈 아키텍트 양성과정

[7.27] Jenkins

CI/CD 파이프라인


--- 젠킨스 설치 https://www.jenkins.io/download/

 

$ sudo su -
=> root 사용자로 변경
# 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
=> enable 시 시간이 조금 걸리게 됨, 밑에 명령어로 수정할 임시패스워드 만드는 시간이 걸리는 것
# cat /var/lib/jenkins/secrets/initialAdminPassword # 패스워드 수정
 

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

 

 

 

cat /var/lib/jenkins/secrets/initialAdminPassword 로 확인한 비밀번호 입력
창 닫기
Start using jenkins 클릭
admin => 설정

 

새로운 패스워드 재설정, 타임존 설정 후 Apply => Save 클릭


--- CI(Continuous Integration)

새로운 패스워드로 로그인

 

새로운 아이템 클릭

 

Freestyle project : jenkins의 기본 기능들을 포함하고 있음

 

설명 입력

 

Build : jenkins에서 Build는 실행과 동일, uptime : 현재까지 가상머신이 운용된 시간을 볼 수 있음

 

지금 빌드 클릭
Build History에 로그 출력됨, #1 클릭
Console Output 클릭

 

방금 생성된 HelloWorldjob 프로젝트가 workspace 안에 저장되어 실행된 것, Hello Wolrd와 uptime 명령어 실행된 것 확인 가능


--- jenkins에 플러그인 설치

Jenkins 관리

 

플러그인 관리 클릭

 

git hub 찾아서 Install without restart 클릭, 설치 후 메인페이지로 돌아가기 클릭

 

설치한 플러그인을 설정하기 위해 Jenkins 관리 클릭

 

Global Tool Configuration 클릭

 

Jenkins에 git이 설치되어 있지 않은 상태이므로 터미널에서 git을 우선 설치해줘야 함

 

yum install -y git을 통해 젠킨스 서버에 git 설치

 

호스트 네임도 구분하기 편리하도록 jenkins server로 변경

 

다시 global tool configuration으로 가면 애러 메시지 없어져 있음, Name도 Git으로 변경하기


--- git 셋팅이 잘 되었는지 다시 새로운 프로젝트 만들기

 

새로운 item 클릭

 

item 이름 정해준 후, 아직 Maven 설치 전이므로 free style프로젝트 클릭
설명 넣어주기

 

github에 있는 소스코드를 가져오기 위해 github 리포지토리 주소 입력
지금 빌드 클릭

 

빌드된 내역 #1을 클릭하여 Console Output으로 들어가기, github으로부터 코드를 가져온 로그 확인 가능(Building in workspace 주소 복사)
배포된 내용 확인 가능


--- Maven 설치(https://maven.apache.org/install.html)

# 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
=> gz는 압축파일이기에 z가 필요함, z의 위치는 f보다 앞에 있어야함(z위치 중요, 압축을 풀면서 아카이브를 푸는 것이기 때문)
# mv apache-maven-3.8.6 maven
=> 압축 풀린 폴더 이름이 길어서 maven으로 이름 변경
# cd maven
# cd bin
mvn은 maven을 사용하기 위한 명령어

# cd ~
# find / -name java-11*
=> 설치 운영과정에서 java가 계속 필요하므로 위치를 찾아서 bash_profile에 넣어야 함
=> 11버전 java인데 릴리즈를 모르니까 *처리
# 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
bash_profile에 넣은 경로 적용시키고 경로가 환경변수로 잘 정의되어 root폴더에서 mvn 명령어 잘 실행되는지 확인하기

# mvn -v
루트 폴더에서도 maven 명령어 사용 가능

플러그인 설치 위해 Jenkins 관리로 이동
연동을 위한 도구를 플러그인에서 설치하고 global tool configuration에서 설정하는 것

 

jenkins에서 maven을 사용하기 위한 플러그인, Install without restart 클릭

 

global tool configuration 하기 위해 이동

 

global tool configuration 클릭
java와 maven에 대한 global tool configuration 완료


--- maven 셋팅이 끝났으니까 maven 프로젝트 만들어보기

새로운 ttem

 

Maven Project 클릭

 

 

지금 빌드

 

war 파일을 Tomcat으로 넘겨주면 웹 페이지로써 기능


--- CD(Continuous Deployment)

--- Tomcat 서버 설치 https://tomcat.apache.org/download-90.cgi

# hostnamectl set-hostname tomcat-server
# amazon-linux-extras install -y java-openjdk11
# cd /opt
# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
# tar -xvzf apache-tomcat-9.0.65.tar.gz
# mv apache-tomcat-9.0.65 tomcat
# cd tomcat/bin/
# ./startup.sh
=> tomcat을 기동하는 명령어가 담긴 파일, 해당 명령어를 입력하여 tomcat을 기동
tomcat에 접속하였지만, Manager App을 눌렀을 때 403 Access Denied 출력됨

 

권한 관련 설정해야 함

# cd /opt/tomcat
# find / -name context.xml
=> remote에서 tomcat에 대한 접근이 차단되어 있기 때문에 해당 파일에서 수정해야 함
# vi /opt/tomcat/webapps/host-manager/META-INF/context.xml
<!--  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
해당 부분 주석 처리, 127.0.0.1 IP인 로컬에서만 들어올 수 있도록 설정된 것을 주석 처리

# vi /opt/tomcat/webapps/manager/META-INF/context.xml
<!--  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
해당 부분 주석 처리
/opt/tomcat/conf 경로에서 사용자 정보를 지정해줄 수 있음(jenkins가 tomcat에 로그인하기 위한 정보)

# cd tomcat/bin/
# ./shutdown.sh
# ./startup.sh
# /opt/tomcat/conf
# vi tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="kosa0401" roles="manager-gui, manager-script, manager-jmx, manager-status"/>
<user username="deployer" password="kosa0401" roles="manager-script"/>
<user username="tomcat" password="kosa0401" roles="manager-gui"/>

vi tomcat-users.xml 맨 마지막 줄 다음 줄에 role 넣어주기


# ln -s /opt/tomcat/bin/startup.sh /usr/local/bin/tomcatup
# ln -s /opt/tomcat/bin/shutdown.sh /usr/local/bin/tomcatdown
=> 심볼릭 링크 생성
# tomcatdown
=> tomcat 끄기
# tomcatup
=> tomcat 켜기

Manager App => vi tomcat-users.xml에서 설정한 아이디와 패스워드 입력(jenkins가 ID와 PW를 가지고 tomcat을 셋팅할 수 있도록 해줌)
tomcat에 maven으로 만든 war파일을 배포하기 위한 플러그인
jenkins가 tomcat을 이용하기 위해 자격증명이 필요하기에 Manage Credentials

 

Jenkins 클릭

 

global credentials 클릭
Add credentials 클릭
Username과 Password가 로그인을 위한 정보, ID는 로그인을 위한 정보 아님

 

ID는 밖에서 보는 식별자의 이름

--- CD(Continuous Deployment)

새로운 Item
간단하게 설명 넣기

 

build가 끝나고 war파일이 만들어지면 container로 만들겠다는 의미

 

** : 무슨 경로가 되었든 간에, *.war : 무슨 war파일이 되었든 간에

 

'KOSA 클라우드 솔루션즈 아키텍트 양성과정' 카테고리의 다른 글

[7.29] CI/CD 복습  (0) 2022.07.29
[7.28] Jenkins Build, Git-Lab  (0) 2022.07.28
[7.26] Git lab  (0) 2022.07.26
[7.25] 참고  (0) 2022.07.26
[7.22] kubernetes(EKS에서 Deployment.yaml 실행)  (0) 2022.07.22