깃랩과 외부 jenkins 서버 연동해 그래들 자동 배포하기

노문택·2022년 3월 24일
0

기존의 깃허브 jenkins 연동 파트와 매우 유사하다

깃랩 배포토큰먼저 만들어보자

Setting - repository - Deploytokens로 이동해서 배포토큰 추가하기

그럼 이렇게 토큰줌

잘외워둘것..

설정 소스코드 관리에서 git 누르고 설정해주기

노드 url 알아서 설정해주기

진행 ㄱㄱ

외부 jenkins 다보니 외부에서 내부에 접근할 정보가필요하다

  1. jenkins 서버의 접속정보를 알고있는경우 내부서버에 이동후
vi ~/.ssh/authorized_keys

에 외부서버 정보를 등록해주기

  1. 내부의 키를 만들어서 진행하기
    내부서버에서
mkdir /var/lib/jenkins/.ssh
ssh-keygen -t rsa -f /var/lib/jenkins/.ssh/key

해당 repo 이동시 private & pub key가나오는데ㅐ

이 이후부터는 해당 포스팅을 참고하면서 진행하면 될것같다.

https://hwannny.tistory.com/89

필자는 1번의경우임 ㄱㄱ

jenkins 외부서버의 인증정보를 이용해 추가해줫다고 가정하고 진행

그래들로 배포 한다고 추가 가정

build > add build step > execute shell 추가후 테스트 빌드 스크립트 설정


깃랩 그래들.build 파일이 SeoulEmergency 파일안에있으니까..


요렇게적어주고

task 꼭적어주기 (안적어주면 작동안함 )

고급설정 누른다음에 빌드파일 설정해주기

그리고 수동빌드를 눌러서 테스트해주면

;;


문제는 gradle-wrapper.jar의 부재의문제였다.. 해당 깃랩 레포지터리 가서 ignore 파일에 확인해보니

gradle-wrapper.jar파일이 없넹..

다시 넣어주고 진행했더니 다음과같이됨

그럼 이걸 이제 ssh를 통해 빌드시에 자동으로 넣어주는 작업을 해보자

아까 빌드후 활동에 이제 그래들 다음 step을 만들어주도록 한다.

execute Shell로 만들어주고

해당 디렉토리에 있는 jar파일을 옮겨줘보기

그래들의 경우 gradle/build/libs 에 만들어져있음

scp ./SeoulEmergency/build/libs/*.jar 아이피 : 경로

이거를 아까 만든 build step 에 execute shell로 넣어준다

build를 해주고 결과를 보면

성공했으니 내 우분투 가서 제대로 들어왔는지 확인

굿 그러면 이걸 자동으로 restart해줄 명령어 셸 스크립트를 작성해보자

restart_SeoulEmergency_backend.sh
필자의경우 jar파일과 같은 위치에 만들어줌

#!/bin/bash
# SDKMAN only for java
#source "/home/ubuntu/.sdkman/bin/sdkman-init.sh"

kill $(pgrep -f SeoulEmergency-1.0-SNAPSHOT.jar)
nohup java -jar ~/SeoulEmergencyBackend/SeoulEmergency-1.0-SNAPSHOT.jar --server.servlet.context-path=/api \
--server.address=127.0.0.1 --server.port=8080 >> app1.log 2>&1 &
# pid 생성 기다리기
sleep 2
pid1=$(pgrep -f SeoulEmergency-1.0-SNAPSHOT.jar)
echo "complate deploy seoulemrgency pid=${pid1}"

실행을 ./restart_SeoulEmergency_backend.sh 로 해주고 ps -ef|grep jar로 확인

아까 로그를 파일로 저장한다고했으니까

cat app1.log 해보면 요런식으로 나오게됨

그러면 다시 돌아가서 빌드 스텝에 셸 추가해서 저거를 불러주면된다.

ssh 아이피주소 '~/SeoulEmergencyBackend/restart_SeoulEmergency_backend.sh

이런 과정을 build step 에 넣고 다시 재가동해보자


젠킨스 로그 pid와 일치하는지 확인해보자

굿
이제 배포까지 되었으니 깃랩 커밋 푸시를 인식해서 자동빌드해주는 단계만 설정해주면된다.

그럼 다시 설정가서 빌드유발 봐보기

url : 하고 비워져있는부분은 제가지운건데 이거 복사해두기..
아무튼 저거누르면 아래 해당리스트 나오는데 고급누르기

누르면 시크릿 토큰 파트가나온다 생성 ㄱㄱ
혹시 모든 브런치에 다 트리거를 달꺼지만 필요없는 트리거 까지 제외하고싶다면 allowed branches에서 filter branches로 정규표현식 혹은 이름으로 처리가가능하다 필자는 안처리함

토큰도 생성하고 복사해두기..

복사하고 깃랩 웹훅 가기 ㄱㄱㄱ


그러면 아까 입력한 url & secret token을 입력해주고
push event에 알맞은 브런치 이름 설정 후에 add webhook 눌러주면

요래 만들어지는데

이거누르고
테스트 해보자..

제대로되면

욜케맨트뜨고 내 젠킨스가보자

굿
필자는 Backend 브런치를 일단 설정을 해놓았고

혹시 몰라서 깃랩 Backend 브런치를 한번 임의로 커밋해보앗다..

웹 커밋과 로컬 커밋 둘다 잘 발생한다..

profile
노력하는 뚠뚠이

0개의 댓글