본문 바로가기
개발공부 개발새발/CICD

CI ) Jenkins 로 빌드 및 테스트 자동화하기

by 휴일이 2024. 5. 10.

Step.1 : 젠킨스 서버 설정

빌드 테스트 자동화를 위해 Github 와 Jenkins , Maven과 Jenkins 를 통합하여 젠킨스 서버를 설정하자!

java 및 jenkins 다운로드

 

Redhat Jenkins Packages

Jenkins Redhat Packages To use this repository, run the following command: 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 If you've pre

pkg.jenkins.io

 

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>

# amazon-linux 사용하니까 저 명령어로 java17 설치가 안 돼서 이걸로 함
yum install java-17
yum install jenkins

# jenkins 서버 상태 확인 후 시작
service jenkins status
service jenkins start

이후 publicIP:8080 으로 접속하면 젠킨스 서버가 정상적으로 작동함.

  • 기본 패스워드는 /var/lib/jenkins/secreats/initalAdminPassword 에 있다고 나와있음!

  • 패스워드를 입력하면 플러그인을 설치하라고 함. 여기에서 일단 창을 닫아주자.

  • ㄱㄱ 굿

  • 대시보드에서 새로운 아이템을 추가해주자.
    • 이름과 프로젝트 설정 가능

  • 이렇게 빌드 관리를 할 수 있는 설정 등 여러가지 목록도 뜬다.
  • Build Steps → linux 시스템을 사용하고 있으니 Execute shell 설정
echo "Hello World"
uptime
  • 그러면 빌드 시 Command 를 설정할 수 있는데 난 이렇게만 설정했다.

  • 빌드해보면 이렇게 초록색이 !
    • 하기 위해 TempSpace 를 수정해주었다..
    • df -h 해서 나오는 /tmp 사이즈를 2G 로 올려줬다. 자세한 건 검색하시오.

  • console 에 정상적으로 출력도 되는 것을 볼 수 있음.ㅎㅅㅎ

Step.2 : Git 과 Jenkins 연동

Jenkins 가 Git 에서 코드를 당겨오게 하기 위해 Git / Jenkins 를 연동해보자

일단 hostname 을 변경해준다

nano /etc/hostname
  • 나는 jenkins-server 라고 바꿔주었다.
  • hostname HOST_NAME 으로 일시적으로 바꿀 수도 있지만 그냥 영구적으로 바꿔주자~ 어차피 계속 쓸 거니까.

깃을 설치해준다.

yum install git

git --version

젠킨스 GUI (대시보드)로 가서 git 플러그인을 설치해준다.

Tool 에서 깃을 설정해준다.

  • Path to Git executable 에서 깃 경로를 쓰면 되는데 원래 깃은 환경변수때문에 git ~~ 만 써도 명령어를 알아들을 수 있어서 그냥 git 이라고만 해도 된다.
  • 만약 git 이라고 썼는데 못알아먹는다면
  • 리눅스에 whereis git 이라고 쓴다음에 나오는 경로를 써주면 됨.

Step3. 깃에서 코드 가져오기

새 아이템을 추가하고 소스코드 관리에 Git Repo 주소를 준다.

  • Public Repo 라서 자격증명은 필요하지 않음 (누구나 땡겨올 수 있기 때문에)
  • 만약 공개 범위가 Private 이라면 인증해줘야하지만 일단 none 으로 두고 저장해준당.

  • 빌드해주면 콘솔에 출력된 명령어들!!
  • Clone 하는 걸 확인 가능하다. workspace 에서 하는 모양이니 한번 가보자.

  • 기본적으로 이 디렉토리에 Cloning 한당.

Step4. Maven 과 Jenkins 통합하기

해당 프로젝트가 Maven 으로 빌드하기 때문에 Jenkins 와 Maven 을 통합해줘야한다.

  • Maven documentation 에 자세히 나와있음

Maven 을 Jenkins Server 에 셋팅

  • Maven 공식 documentation 에 맨 첫 번째 링크 주소를 복사한 뒤 젠킨스 서버에 install
cd /opt
# 복사한 링크 주소
wget <https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz>
# 압축 풀기
tar apache-maven-3.9.6-bin.tar.gz
# 압축 풀면 나오는 메이븐 파일을 maven 디렉토리로 이동시키기 (없으면 만들어서 이동시킴)
mv apache-maven-3.9.6 maven

# 여기 들어가서 mvn 있으면 정상적으로 설치된 것이 맞음
cd maven/bin

# 메이븐 버전 확인
./mvn -v

maven 을 환경변수로 설정

# 루트 디렉토리로 이동
cd

# bash_profile 에 환경변수 설정
vi .bash_profile

---

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
M2_HOME=/opt/maven
M2=/opt/maven/bin
JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto.x86_64
# User specific environment and startup programs

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

export PATH

---

# 환경변수 저장해주기
source .bash_profile

# 잘 저장됐다면 이제 mvn 명령어로도 버전 확인 가능
mvn -v

Maven Plugin 을 젠킨스에 설치

  • 전에 했던 것처럼 maven 검색해서 나오는 플러그인 설치해줌.

Maven 및 Java 구성

  • HOME 경로 모르겠으면 echo $PATH 해서 찾으면 됨
    • 우리가 아까 환경변수 설정했잖아!

Step5. Maven 프로젝트 빌드하기

설정

  • 우리가 플러그인을 추가한 덕분에 이제 새 아이템을 추가할 때 Maven Project 설정을 해줄 수 있음! 당장 하자!

  • git Repository 주소를 써준 뒤 Build 로 이동한다.
  • pom.xml 을 명시해주고 실행목표를 설정해준다. 이게 뭐냐면..

  • maven 의 수명 주기, 빌드 단계가 있는데 어디서부터 어디까지 관리할래 ~ 인데
    • clean 이전 빌드에서 생성된 파일 모두 제거 ~
    • install 다른 프로젝트에서 로컬로 종속성으로 사용하기 위해 패키지를 로컬 저장소에 설치.
  • 단계까지를 목표로 했다.

빌드

  • 빌드하기를 누르면 이전 빌드보다 속도가 좀 걸리는 것을 확인할 수 있는데.. 종속성을 설치하는 과정을 거쳐서 그렇다.
    • 콘솔 출력에 가보면 어떤 것들이 출력되는지 확인 가능

  • 세 개의 프로젝트 (Maven Project, Server, Webapp) 전부 성공했고, 정상적으로 빌드됐음을 확인 가능함.

  • 작업 공간에서 target 경로로 들어가면 webapp.war 아티펙트를 찾을 수 있당.
      •  
728x90