| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 럼바우 모델링
- 기능 모델링
- vue
- 객체 모델링
- 튜플
- CORS
- 유일성
- 타디션프로젝트
- ""
- 객체지향설계원칙
- route
- 동적 모델링
- 카디널리티
- 라우트
- C언어
- 다이나믹 프로그래밍
- 릴레이션 인스턴스
- #v-on:click
- 백틱
- 후보키
- ''
- 소수판정
- NUI
- new Comparator
- ``
- 포인터
- 유효성
- 최소성
- 슈퍼키
- arrays.sort
- Today
- Total
TY_Daily
Jenkins를 이용한 CI/CD 구축하기 -3 본문
pipeline{
agent any
stages{
stage('gitclone'){
steps{
git branch: 'master',
credentialsId: 'KTY2',
url: "https://lab.ssafy.com/s11-webmobile3-sub2/S11P12D101.git"
}
}
stage('aws property file download play cp execute') {
steps {
withCredentials([file(credentialsId: 'db_properties', variable: 'dbConfigFile')]) {
script {
sh 'rm /var/jenkins_home/workspace/D101-final/BE/o2o/src/main/resources/application-aws.properties'
sh 'cp $dbConfigFile /var/jenkins_home/workspace/D101-final/BE/o2o/src/main/resources/application-aws.properties'
}
}
}
}
stage('Build Backend'){
steps {
dir('/var/jenkins_home/workspace/D101-final/BE/o2o/'){
sh 'pwd'
sh 'ls -al'
sh 'chmod +x ./gradlew'
sh 'chmod +x ./gradlew.bat'
sh 'java --version'
sh './gradlew clean build '
}
}
}
}
}
- 다음과 같은 명령어를 통해 clean build 를 통한 jar 파일을 생성하게 되면 된다!
- 그러면 다음 스텝을 생각해보면 결국에는 이 jar 파일을 통한 ssh 접속을 통한 해당 나의 aws 서버에 다시 접속해서 deploy.sh 를 실행해야겠다! 이런 생각이 들것이다!
+ 현재 제공 받은 aws 같은 경우 pem 키가 필요하다!

마찬가지로 credentials에 Global credentials 부분으로 가기!

ID나 Description 현재 젠킨슨 안에서 사용할 이름 Username같은 경우 aws 에서 사용한 username Private Key 같은경우
pem 파일 메모장으로 열면 그 파일 그대로 복사해서 붙여넣으면됨!
stage('Deploy') {
steps {
sshagent(credentials: ['ssafy_aws_key']) {
sh '''
ssh -o StrictHostKeyChecking=no ubuntu@i11d101.p.ssafy.io uptime
scp /var/jenkins_home/workspace/D101-final/BE/o2o/build/libs/o2o-0.0.1-SNAPSHOT.jar ubuntu@i11d101.p.ssafy.io:/home/ubuntu/BEserver
ssh -t ubuntu@i11d101.p.ssafy.io ./deploy.sh
'''
}
}
}
- 위의 명령어를 통해 중간에 진행하는동안 에러가 발생했음!

(원인) sshagent 플러그인을 설치안했었음! - 마찬가지로 Dashboard > Jenkins 관리 > Plugins 에 가서 해당 plugin을 설치해주자!
또한 ./deploy.sh 의 권한 이슈가 생겨서 코드를 아래와 같이 수정했음!
stage('Deploy') {
steps {
sshagent(credentials: ['ssafy_aws_key']) {
sh '''
ssh -o StrictHostKeyChecking=no ubuntu@i11d101.p.ssafy.io uptime
scp /var/jenkins_home/workspace/D101-final/BE/o2o/build/libs/o2o-0.0.1-SNAPSHOT.jar ubuntu@i11d101.p.ssafy.io:/home/ubuntu/BEserver
ssh -t ubuntu@i11d101.p.ssafy.io "chmod +x ./deploy.sh && ./deploy.sh"
'''
}
}
}
- && 명령어를 통해 권한 chmod 실패 하면 뒤에것을 실패하도록 설계하였음!
- 위 코드에 대해 간단한 설명을 추가해보자면 StrictHostKeyChecking 의미는 연결 및 인증단계 중 호스트 키 검사 방법을 지정하는것으로 무시하고 진행하도록 비활성화 시킨것!
- scp 명령어를 통해 빌드된 jar 파일을 운영 서버로 전송, 운영 서버에 미리 작성한 deploy.sh 파일 을 통한 빌드된 파일을 실행하는 것으로 명령어를 실행하는것이다!
- deploy.sh 명령어
#!/bin/bash
pid=$(pgrep -f BEserver)
if [ -n "${pid}" ]
then
kill -15 ${pid}
echo kill process ${pid}
else
echo no process
fi
chmod +x ./BEserver/o2o-0.0.1-SNAPSHOT.jar
nohup java -jar ./BEserver/o2o-0.0.1-SNAPSHOT.jar >> application.log 2> /dev/null &
- 일단 nohup 명령어를 통해 local 에서 백에서 진행되도록 만들었음
- jar 파일을 이용해 aws 내에서 백그라운드로 실행!

- 이렇게 성공!
- 이제 해야할일은 Webhook 등록하기, aws 백그라운드가 아닌 도커 컨테이너를 통한 run 실행, nginx, Fronted CI/CD 구축, 무중단 배포이렇게 진행될 예정이다!
'SSAFY프로젝트' 카테고리의 다른 글
| 젠킨슨 백업 (0) | 2024.08.07 |
|---|---|
| Jenkins를 이용한 CI/CD 구축하기 -4 (백엔드 build & 배포 성공) (0) | 2024.08.02 |
| Jenkins를 이용한 CI/CD 구축하기 -2 (0) | 2024.07.30 |
| Jenkins를 이용한 CI/CD 구축하기 -1 (0) | 2024.07.30 |
| Spring Boot MySQL DB 연결 (0) | 2024.07.23 |