Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- aws cli s3 cp
- json type index
- aws cli s3
- oracle cloud
- Jenkins
- mysql json type
- 프리티어 인스턴스
- spring boot 멀티모듈
- json type column 생성
- jpa 환경에서 json type 활용하기
- aws cli s3 exclude directory
- server mode
- in memory
- 선언적 트랜잭션
- h2 연동
- Transactiona
- jenkins 배포
- 무료 인스턴스
- jpa json type
- aws cli s3 exclude folder
- JSON type
- IAM이란
- h2 intellij
- multi module
- AWS IAM MFA
- 멀티모듈
- Oracle Linux 8
- json type 활용
- IAM MFA
- 트랜잭션 전파속성
Archives
- Today
- Total
Chris Devlog
[Jenkins] 배포하기 - feat.Oracle Cloud, Github, SHH 본문
반응형
Architecture
준비물
1. Server
- Jenkins용
- Deploy용
- 서버 접속용 key(Jenkins, Deploy)
Jenkins 플러그인 설치
1. Dashboard → Jenkins 관리 → 플로그인 관리
2. 설치 가능 -> 검색 (이미 설치된 경우 설치된 플러그인 목록에서 확인 가능)
- Publish Over SSH
- Readonly Parameter plugin
- Git Parameter
시스템 설정
Dashboard → Jenkins 관리 → 시스템 설정
1. Publish Over SSH → SSH Servers
- Name: 식별용 이름
- Hostname: deploy server 공용 IP 주소
- Username: ssh 접속 username
- Remote Directory: 접속 후 기본 디렉토리
2. 고급... → key 입력(Deploy Server pem key)
- Use password authentication, or use a different key 체크
- Key: deploy 서버 접속용 key를 텍스트 편집기로 열어 안에 전체 내용을 복사하여 붙여준다
3. test Configuration 버튼을 눌러 Success 확인
Manage Credentials
1. Credentials 등록
- Stores scoped to Jenkins 하위의 항목을 클릭하면 System으로 이동함
- Add Credentials -> Github Access Token 등록
- Kind: Username with password
- Username: 깃허브 로그인 아이디
- Password: 발급받은 Github Token
- ID: Item에서 Git 설정 시 사용할 이름
Item 등록
1. Jenkins의 대시보드 → 새로운 Item
2. Item 이름 설정 → Freestyle project → OK
Item 설정
1. General
- 설명: item에 대한 설명 입력
- Github project Check! -> github project 주소 입력
- 오래된 빌드 삭제 Check! -> 보관할 최대 개수 5
- 이 빌드는 매개변수가 있습니다 Check! -> 매개변수 추가
- Readonly String parameter(plugin 설치 시 사용 가능) -> Name / Default Value
- APP_PORT / 8100
- APP_NAME / mybook
- ENV / production
- Git Parameter(plugin 설치시 사용가능)
- Name: BRANCH
- Parameter Type: Branch
- Default Value: origin/production
2. 소스 코드 관리
Git Check!
- Repositories
- Repository URL: Github Project → Code → Clone → HTTPS → Url
- Credentials: Github Access Token 선택
- Branches to build
- Branch Specifier (blank for 'any'): Git Parameter에서 등록한 매개변수(${BRANCH}) 사용
- Additional Behaviours
- Update tracking submodules to tip of branch: remote기준 서브모듈의 변경된 내용을 업데이트
3. 빌드 유발
- 사용 X
4. 빌드 환경
- Send files or execute commands over SSH after the build runs
- 빌드 실행 후 SSH를 통해 파일 보내기 또는 명령 실행
- SSH Server -> Name: 서버명
- Transfers
- Source files: jenkins 서버 소스파일 위치
- Remote prefix: remote 서버(Stage, Production)에서 제외할 경로
- Remote directory: remote 서버 파일 위치
- 실제 경로는 /home/opc/jenkins/deploy/${APP_NAME}
- SSH설정 시에 Remote Directory를 /home/opc로 지정하였기 때문에 /jenkins/deploy/${APP_NAME}로 설정
- Exec command: remote 서버에서 실행할 command 작성
echo "===================================================="
echo "> 서버 접속"
ROOT_DIR=/home/opc
APP_JAR_NAME=${APP_NAME}.jar
JENKINS_REMOTE_DIR=$ROOT_DIR/jenkins/deploy
JENKINS_JAR_FILE=$JENKINS_REMOTE_DIR/${APP_NAME}/*.jar
DEPLOY_DIR=$ROOT_DIR/deploy
APP_DEPLOY_DIR=$DEPLOY_DIR/${APP_NAME}
LOG_DIR=$ROOT_DIR/logs
echo "> APP 배포시작 ${APP_NAME}"
echo "> DEPLOY 디렉토리 정리 "
if [ ! -d $DEPLOY_DIR ] ; then
mkdir $DEPLOY_DIR
fi
if [ -d $APP_DEPLOY_DIR ] ; then
rm -rf $APP_DEPLOY_DIR
fi
mkdir $APP_DEPLOY_DIR
if [ ! -d $LOG_DIR ] ; then
mkdir $LOG_DIR
fi
echo "> JAR 파일 카피 "
cp $JENKINS_JAR_FILE $APP_DEPLOY_DIR
JAR_NAME=$(basename $APP_DEPLOY_DIR/*.jar)
echo "> JAR Link"
ln -Tfs $APP_DEPLOY_DIR/$JAR_NAME $APP_DEPLOY_DIR/$APP_JAR_NAME
echo "> kill -15 `netstat -tnlp|grep ${APP_PORT}|gawk '{ print $7 }'|grep -o '[0-9]*'`"
kill -15 `netstat -tnlp|grep ${APP_PORT}|gawk '{ print $7 }'|grep -o '[0-9]*'`
sleep 5
echo "> $APP_JAR_NAME 시작 "
nohup java -jar -Dspring.profiles.active=${ENV} $APP_DEPLOY_DIR/$APP_JAR_NAME >> $LOG_DIR/${APP_NAME}.log 2>$LOG_DIR/${APP_NAME}-deploy-err.log &
sleep 90
echo "> APP 완료 ${APP_NAME}"
echo "===================================================="
- 고급 - > Exec timeout (ms)
- jenkins 서버가 요청 후 충분한 시간 동안 기다려줄 수 있도록 0(무제한)으로 변경
5. Build
- Execute shell
- Command: jenkins 서버에서 Build시 필요한 실행 정보 입력
- 배포 시 Build가 먼저 실행되고 SSH Server → Exec command가 실행
echo ">> 전송할 폴더 생성"
mkdir -p before-deploy/${ENV}-${APP_NAME}
echo ">> jar 복사"
cp ./build/libs/*.jar before-deploy/${ENV}-${APP_NAME}/
빌드 진행
1. Dashboard → Item 선택
2. 파라미터와 함께 빌드
- Read Only 매개변수는 그대로 사용(수정 안됨)
- 빌드할 브랜치 선택 (미선택시 설정한 default branch로 빌드)
반응형
'DevOps > Jenkins' 카테고리의 다른 글
[Jenkins] 설치하기 - feat.Oracle Linux 8, Docker (0) | 2022.07.12 |
---|