[Centos] CentOs에서 젠킨스(Jenkins)를 설치하는 방법


Development note/Linux  2021. 10. 18. 16:54

안녕하세요. 명월입니다.


이 글은 CentOs에서 젠킨스(Jenkins)를 설치하는 방법에 대한 글입니다.


젠킨스(Jenkins)란 소프트웨어 개발 할 때에 사용되는 통합 서비스를 하는 툴, 즉 CI(Continuous Integration)이라고 합니다.

통합 서비스를 하는 툴이라는 뜻은 우리가 프로젝트 개발을 할 때, 한명이 아닌 다수의 인원과 개발을 할 때, 하나의 브런치로 통합하여 업로드하는 툴을 이야기합니다.


먼저 소스를 통합해주는 툴로서는 최근에 자주 사용되는 Git이 있고 SVN등등이 있습니다. 이건 소스를 통합해주는 툴로써 CI툴과는 차이가 있습니다.

각자의 로컬 PC에서 개발을 하면 우리가 Git을 통해서 커밋 및 Pull request를 진행합니다. 하지만 이건 각자의 환경에서 개발한 것이므로 모두의 환경에서 통합이 된 것이라고 할 수는 없습니다.

즉, 내 로컬에서는 오류가 없었는데, 막상 환경이 다른 개발 환경(Dev env)아니 실 서버(Prod env)에 가면 에러가 발생하는 경우가 있습니다.

대표적으로 데이터 베이스 접속 설정이나 파일 경로의 차이가 있을 수 있겠네요.


그래서 이 젠킨스를 통해서 통합 환경에서 재 Deploy를 하고 최종적으로 서버스를 안전하게 구동하기 위한 툴로 생각하면 좋습니다.

사실 설명은 이런데.. 위의 에러 처리까지 다 작성하려면 꽤나 복잡한 작업을 통해야 하고, 그냥 소스를 재통합해서 해당 서버에서 재빌드 후 Deploy하는 기능으로 보면 됩니다.


먼저 Centos에 이 Jenkins를 설치하는 방법에는 두가지 방법이 있습니다.

yum을 통해서 install하는 방법이 있고 소스를 그대로 Deploy해서 사용하는 방법이 있습니다.

저도 안해봐서 자세히 설명하기는 어렵지만 yum을 통해서 하는 방법은 설치는 편한데 권한 설정이 조금 복잡하더라고요. 그래서 저는 여기서 그냥 소스를 받아와서 설치하는 방법으로 하겠습니다.(제 개발서버는 한개라 두번을 하기가 힘들어요.)

Jenkins를 설치하기 위해서는 java가 필요하고 tomcat과 git, 그리고 maven를 설치해야 합니다.

link - [CentOS] Java 설치하기

link - [CentOS] tomcat 설치하기


git과 maven은 따로 글이 없기 때문에 설치하는 방법을 소개하겠습니다.

git은 그냥 yum으로 설치합니다.

yum install git

maven은 yum으로 설치하면 조금 귀찮은 일이 많이 생기기 때문에 그냥 소스를 받아서 압축을 풀고 PATH 설정을 합니다.

link - https://maven.apache.org/download.cgi

## 다운로드
wget https://dlcdn.apache.org/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz --no-check-certificate
## 압축풀기
tar -zxvf apache-maven-3.8.3-bin.tar.gz
## 심복릭 링크 설정
ln -s apache-maven-3.8.3 maven

그리고 마지막으로 /etc/profile의 환경설정입니다.

export MAVEN_HOME=/usr/local/maven
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin

export PATH

이렇게 java, tomcat, git과 maven을 설치 했습니다.


먼저 Jenkins 홈페이지에 가서 Jenkins를 다운로드 받습니다.

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

최신 버전을 받아도 되는데 저는 조금 더 안정적인 LTS 버전을 다운 받겠습니다.

그리고 webapps로 가서 ROOT 폴더 안을 전부 지우고 파일을 이동시킵니다.

이제 jar xvf 명령어로 war 파일의 압축을 풉니다.

이제 압축이 풀렸으면 tomcat을 기동합니다.

저는 설치 중에 에러가 발생했네요...

사실 예전에 제가 할떄는 catalina.sh에 JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"만 추가하면 해결이 됐는데.. 지금은 도저히 안되네요..

그러던 중 발견한 블로그..

link - https://it00.tistory.com/39

openjdk 8과 11에서만 동작한다고...;;;

그래서 openjdk를 버전 다운 시켰습니다.. 감사합니다...

자바가 요즘에 버전마다 되는게 있고 안되는게 있고 이게 너무 심해서... 버전업 한 번 할때마다.. 머리털이 다 빠진다는...


다시 기동했습니다.

정상 작동하네요.

이제 저 위치에 가보면 패스워드가 있습니다.

입력을 하면 플러그인을 설치하라고 나옵니다.

플러그인은 따로 설치가 가능하니깐 일단 제안하는 플러그인만 설치합시다.

그러면 처음 관리자 아이디와 패스워드 설정화면이 나옵니다.

그리고 URL 설정인데, 도메인을 가지고 있으면 도메인 명을 넣으면 되고, 저는 테스트 서버이기 때문에 그냥 아이피를 넣겠습니다.

설정이 완료되었습니다.

이제 github를 연결해서 작성해 보겠습니다.

본인 github에 접속해서 프로그램 토큰 키를 가져와야 합니다.

Settings 메뉴로 이동해서 Developer settings로 이동합니다.

그리고 Personal access tokens 메뉴로 이동해서 토큰을 하나 생성합니다.

Note에 토큰 이름을 작성하고 repo와 hook, org를 선택합니다.

필요한 게 있으면 더 클릭해도 됩니다.

생성을 하게 되면 tokens 키가 생성이 됩니다.

다시 젠킨스(jenkins)로 돌아옵니다.


그리고 Item을 만듭니다.

적당하게 프로젝트 이름을 넣고 Freestyle project를 선택합니다.

그리고 가져올 Github 주소를 넣습니다.

그리고 Credentials를 추가합니다.

그리고 종류를 Secret Text 타입으로 하고 Secret를 아까 Github에 받았던 tokens 키를 넣습니다.

그리고 Jenkins에서는 commit를 할 때 넣을 ID명을 넣습니다. (자신이 commit 되었을 때 식별할 수 있는 이름을 넣으면 됩니다.)

브런치는 계획된 브런치를 넣으면 됩니다. 저는 그냥 master 넣습니다.

그리고 Build가 끝나면 처리할 shell 명령어를 넣습니다.

# 톰캣 서버 중지
/****/catalina.sh stop
sleep1s
# 빌드
mvn package -Dmaven.test.skip=true
sleep 1s
# war 파일 복사
cp -rf ./target/nowonbun*.war /****/nowonbun.war
sleep 1s
# war 파일 삭제
rm -rf ./target/nowonbun*.war
sleep 1s
# 톰캣 Deploy 폴더로 이동
cd /****/
# 기존 파일 삭제
rm -rf ROOT
sleep 1s
# ROOT 폴더 생성
mkdir ROOT
sleep 1s
# war 파일 이동
mv nowonbun.war ./ROOT/nowonbun.war
sleep 1s
# ROOT 폴더 이동
cd ROOT
# 압축 풀기
jar xvf nowonbun.war
sleep 1s
# war 파일 삭제
rm -rf nowonbun.war
sleep 1s
# 기타 환경 파일 설정
cd WEB-INF
cd classes
cp -rf /home/shared/env/nowonbun/* .
sleep 1s
# 톰캣 서버기동
/****/catalina.sh start
sleep 1s

위 예제는 제가 임의로 tomcat를 새로 설정해서 Deploy하는 예제를 작성했습니다.

위처럼 쉘 명령어를 사용하면 git로부터 pull이 완료되면 실행됩니다.


이제 실행 버튼을 누릅니다.

그러면 콘솔 결과를 보면 pull이 완료되고 shell이 실행되는 것을 확인할 수 있습니다.

실제 서버에서 확인해 보니 소스가 tomcat 서버에 제대로 압축이 풀리는 것을 확인할 수 있습니다.


여기까지 CentOs에서 (Jenkins)를 설치하는 방법에 대한 글이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.