본문 바로가기
프로그램/개발툴 설정

[Jenkins] 환경설정

by cbwstar 2022. 7. 15.
728x90
반응형

Jenkins를 설치후에 소스 자동 배포를 위한 환경설정

- Jenkin관리로 들어가서 필요한 플러그인 설치

플러그인 관리 에 들어간다.

설치가능 에 검색창에

Publish Over SSh 입력하여 검색한후에 해당 플러그인을 설치한다.

설치가능에 많은 플러그인들이 나오는데 굳이 다 설치 할 필요는 없고 해당 기능이 필요할때는 도움말 보고 그때 그때 상황에 맞게 설치하자

 

시스템 설정으로 이동하여 밑으로 쭈욱 내려가서 

Name : 아무이름이나 입력

Hostname : 리눅스 서버 호스트 이름 입력

UserName : 리눅스 계정 root 입력

Remode Directory : /

고급 버튼을 클릭하여 root 사용자 패스워드 입력

Use password authentication, or use a different key  체크후

Pssphrase /Password : 계정 비밀번호 입력

Port : ssh 접속 포트 입력

Test Configuration 버튼 클릭하여 서버 접속 확인 

Success  메세지가 뜨면 정상적으로 접속인 된것이다.

저장후에 Jenkins관리로 와서 Global Tool Configuration 으로 들어가서 설정

자바 경로 설정

JDK installation에 버튼 클릭하여 jdk 설정 경로를 셋팅한다.

 

밑으로 내려와서 Maven 에서 Add Maven 버튼을 클릭하여 메이븐을 버전별로 필요한 버전을 추가한후에 저장한다.

참고로 Maven 3.6.3 버전이 오류없이 잘 컴파일이 되었다.

 

* ssh 기능을 사용하기 위해서는 리눅스 서버에 ssh 공개키를 설정해야 한다.

리눅스 서버에 접속하여

ssh-keygen -t rsa 입력후 엔터 엔터 엔터 하여 키젠을 생성한다.

여러대의 서버를 운영할 경우에는 키를 서버에 배포해야 한다.

scp id_rsa root@hostname:~/.ssh/id_rsa

scp id_rsa.pub root@hostname:~/.ssh/authorized_keys

 

.ssh 폴더 궈한 확인

 cd ~/.ssh

chmod 700 .

권한이 700 이어야 하기 때문에 권한을 변경하여 준다

 

/* 암호없이 접속되는지 모든 서버에서 테스트 */

ssh 서버이름

모든서버에서 이상없이 접속되면 오케

=================================

새로운 item 버튼을 클릭하여 배포할 프로젝트를 등록한다.

 

Enter an item name : 프로젝트명을 입력하고

Freestyle project 버튼을 클릭하여 프로젝트를 셋팅한다.

오래된 빌드 삭제를 체크한후에 

Log Rotation을 선택하여 빌드 이력 유지기간을 설정한다.

빌드 매개 변수도 설정하면 빌드시 물어본다.

소스코드 관리 접속정보를 셋팅한다.

자동소스 배포가 실행될 시간을 설정한다.

Build 에 메이븐을 설정한다.

 

빌드후에 조치 

에 빌드된 파일을 ssh 설정을 통해서 서버에 배포한다.

ssh server에 서버이름 입력

source files : 패키지명/target/*.war

Remove prefix : 패키지명/target

Exec command

리눅스 명령어를 사용하여 배포한다.

cp /var/lib/jenkins/workspace/test/target/test-1.0.0.war /was
rm -rf /was/test/WEB-INF/classes
unzip -o /was/test-1.0.0.war -d /was/test
rm -rf /was/test-1.0.0.war
rm -rf /web/test/nexa
cp -r /was/test/css /web/test
cp -r /was/test/images /web/test
cp -r /was/test/js /web/test
cp -r /was/test/nexa /web/test
cp /was/test/*.html /web/test

/* 환경파일을 찾아서 서버에 맞게 변경한다 */
find /was/test/WEB-INF/classes/egovframework/egovProps/ -name globals.properties -exec perl -pi -e 's/Globals.Auth = session/Globals.Auth = security/g' {} \;
find /was/test/WEB-INF/classes/egovframework/egovProps/ -name globals.properties -exec perl -pi -e 's/Globals.fileStorePath =/#Globals.fileStorePath =/g' {} \;
find /was/test/WEB-INF/classes/egovframework/egovProps/ -name globals.properties -exec perl -pi -e 's/Globals.fileStorePath2/Globals.fileStorePath/g' {} \;
find /was/test/WEB-INF/magicline/config/ -name magicline.properties -exec perl -pi -e 's/MagicLine.jcaos.path=c:/#MagicLine.jcaos.path=c:/g' {} \;
find /was/test/WEB-INF/magicline/config/ -name magicline.properties -exec perl -pi -e 's/MagicLine.jcaos.path2/MagicLine.jcaos.path/g' {} \;
find /was/test/WEB-INF/magicline/config/ -name magicline.properties -exec perl -pi -e 's/MagicLine.log.path=c:/#MagicLine.log.path=c:/g' {} \;
find /was/test/WEB-INF/magicline/config/ -name magicline.properties -exec perl -pi -e 's/MagicLine.log.path2/MagicLine.log.path/g' {} \;
find /was/test/WEB-INF/classes/egovframework/egovProps/ -name globals.properties -exec perl -pi -e 's/Globals.Mode = LOC/Globals.Mode = DEV/g' {} \;
rm -rf /was/test/css
rm -rf /was/test/images
rm -rf /was/test/js
rm -rf /was/test/mrd
rm -rf /was/test/nexa
rm -rf /was/test/*.html
sudo -u jboss /svc/domains/test/jenkinsstopstart.sh

was 서버 중지, 재기동 스크립트를 작성하여 와스 재기동

jenkinsstopstart.sh

#!/bin/sh
  
. /svc/domains/test/env.sh

UNAME=`id -u -n`
if [ e$UNAME != "e$JBOSS_USER" ]
then
    echo "Use $JBOSS_USER account to stop JBoss SERVER - $SERVER_NAME..."
    exit;
fi

JPID="`ps -ef | grep java | grep "\-DSERVER=$SERVER_NAME" | awk '{print $2}'`"

if [ -z "$JPID" ]; then
        echo "====================================="
        echo "$SERVER_NAME is not running"
        echo "====================================="
else
#ps -ef | grep java | grep "\-DSERVER=$SERVER_NAME" | awk {'print "kill -9 " $2'} | sh -x

$JBOSS_HOME/bin/jboss-cli.sh  --controller=$CONTROLLER_IP:$CONTROLLER_PORT --connect --commands=shutdown $@

sleep 3

nohup $JBOSS_HOME/bin/standalone.sh -DSERVER=$SERVER_NAME -c $CONFIG_FILE 1>/dev/null 2>&1 &

fi

 

728x90
반응형

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading