[ AWS ] 배포 파이프라인 만들기

2024. 7. 17. 10:10·🌥️Cloud Study🌥️/AWS

이식하는게 젤 힘들 것 같은데 ...............일단은 controller 부분만 세팅하면 된다고 하셨으니깐은....

 

보안그룹 포트 열어둔거 필요없는거 있는지 확인하고 지우는게 좋을듯함(8080 안 쓰는데 넣어뒀다거나 그런..)

 

(원본) https://github.com/dev-library/swu_prj_application.git

일단 깃허브 포크부터 떠줬다

 

이미 AWS쪽 보안 설정은 다 끝내줬는데, 이것도 나중에 문서화해서 정리해둬야겠다...

사진 다 안 찍어놓으면 나중에 다시 구축해야 할지도 . . 😑

 

저번 글에서 SSH 접속 포트를 22가 아닌 51228로 바꿨고,

웹훅말고 그 뭐지.. publish over ssh로 하는 배포에서 포트번호를 일일이 지정해줬어야 했는데

GPT한테 물어보니까 아예 통으로 바꾸는 방법이 있다길래 이 부분부터 작성해보려고 한다.

 

# Jenkins Pipeline Script Example - use sshPublisher

sshPublisher(
  publishers: [
    sshPublisherDesc(
      configName: "MyPrivateInstance",
      transfers: [
        sshTransfer(
          sourceFiles: "target/*.jar",
          removePrefix: "target/",
          remoteDirectory: "/home/ubuntu/app",
          execCommand: "nohup java -jar /home/ubuntu/app/myapp.jar > /dev/null 2>&1 &"
        )
      ],
      usePromotionTimestamp: false,
      useWorkspaceInPromotion: false,
      verbose: true
    )
  ]
)

오늘부턴 Jenkins의 파이프라인 스크립트를 사용할건데, SSH 단계에서 이런 식으로 포트를 명시하면 된다고 한다.

 

Jenkins 파이프라인 or 수동으로 Private 인스턴스에 접근한 후 GitHub에서 프로젝트를 클론하고 빌드하면 된다.

근데 아마 Controller내부포트같은거 변경해줘야 해서 fork로 긁어와서 수정 후 빌드하면 될듯함. 

 

https://github.com/lcl1380/KDT_Project2/blob/master/src/main/resources/application.properties

Properties 파일을 찾는다

 

DB 인스턴스에서 설정해줬던 대로 계정명과 비번을 입력해준다.

 


Jenkins측 Pipeline 설정

젠킨스를 활용한 CI/CD 통합 링크

CI/CD 스크립트로 진행해보기  < 일단은 이걸 기준으로 진행했음

 

빌드하기 위해 Gradle를 설정해주자.

 

대시보드-Jenkins관리-Jenkins Agent를 설치해주자.

SSH Over Publish에서 세팅한 적이 있지만 그건 그 옵션에서만 적용되는 비밀키이기 때문에

Pipeline에서 사용하기 위한 목적으로 Jenkins관리-Credentials에서 어떤 비공개키를 쓸 것인지 지정해줘야 한다.

 

해당 경로로 이동해서, Add Credentials를 클릭해주자.

 

cd .ssh

Jenkins Instance에서 생성했던 키를 입력해준다.

 

어플리케이션 이름이 헷갈려서 직접 인스턴스에 접속해서 빌드해보려고 보니까 gradlew실행이 안 먹길래

찾아보니 gradle을 설치해줘야 한다고 한다. (근데 이전 실습에서는 없어도 됐었던 것 같은데 ...)

 

sudo apt install gradle
gradle -v

설치해주자.

 

이렇게 권한 오류가 뜨는데 실행 권한을 안 줘서 그런다.

`chomod +x`로 권한을 추가해준 뒤에 다시 명령을 실행하면 잘 작동한다.

 

빌드 중에 이런 에러가 떴는데 메시지를 확인해보니까 javax.annotation 라이브러리가 클래스 경로에 없기 때문에 발생하는 문제라고 한다.

Gradle을 사용한 빌드를 진행하고 있으므로, build.gradle 파일에 javax.annotation 라이브러리를 추가하면 된다.

 

근데 추가해도 에러가 난다 .. 위아래 둘다 허허

수정해준 다음에는 `./gradlew clean build`를 통해 다시 빌드를 진행해주자.

 

GPT한테 물어보기로 했는데도 동일한 결과가 발생했다 ㅎ...

 

내일 와서 볼 것 : 

javax.annotation 라이브러리 외에도 추가적인 jakarta.annotation 라이브러리가 필요할 수 있습니다. 이를 build.gradle 파일에 추가해보세요.

 

더보기

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    testImplementation 'org.springframework.security:spring-security-test'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-web-services'
    implementation 'org.springframework.kafka:spring-kafka'
    testImplementation 'org.projectlombok:lombok:1.18.28'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.kafka:spring-kafka-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
    implementation 'com.h2database:h2'
    implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf:3.2.5'
    implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.3.0'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
    implementation 'org.springframework.session:spring-session-jdbc'
    implementation 'io.jsonwebtoken:jjwt:0.9.1'
    implementation 'javax.xml.bind:jaxb-api:2.3.1'
    
    // 추가된 javax.annotation 의존성
    implementation 'javax.annotation:javax.annotation-api:1.3.2'
    implementation 'jakarta.annotation:jakarta.annotation-api:2.0.0'
}

./gradlew clean
./gradlew --refresh-dependencies build

./gradlew wrapper --gradle-version <최신 버전>
./gradlew clean build

'🌥️Cloud Study🌥️ > AWS' 카테고리의 다른 글

[ AWS ] 파이프라인을 이용한 무중단 배포  (0) 2024.07.23
[ AWS ] 아틸러리를 이용한 부하 테스트 및 부하 분산 확인(I/O bound)  (1) 2024.07.23
[ AWS Terraform ] Terraform 코드 실행 후 할 일  (0) 2024.07.22
[ AWS-Terraform ] 테라폼을 이용한 아키텍처 구축  (0) 2024.07.18
[ AWS ] 보안그룹-인바운드 규칙 편집, 개별 인스턴스 설정  (0) 2024.07.16
'🌥️Cloud Study🌥️/AWS' 카테고리의 다른 글
  • [ AWS ] 아틸러리를 이용한 부하 테스트 및 부하 분산 확인(I/O bound)
  • [ AWS Terraform ] Terraform 코드 실행 후 할 일
  • [ AWS-Terraform ] 테라폼을 이용한 아키텍처 구축
  • [ AWS ] 보안그룹-인바운드 규칙 편집, 개별 인스턴스 설정
L_Chae
L_Chae
🎮😻🤓🖥✨
  • L_Chae
    Cherish
    L_Chae
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🌥️Cloud Study🌥️
        • AWS
        • NHN
        • KT
        • Microsoft (Azure 900)
        • TroubleShooting
        • IaC
        • Etc
      • STUDY
        • English
        • Japanese
        • 개인정보보호 관련
      • 초등학교 AI 교육 진행
        • 2024학년도 1학년-2학년
        • 2025학년도 4학년
      • 2024 KDT 📕
        • Lecture
        • Study 📗
        • Study-JAVA
        • Project
        • etc
      • INTERLUDE ✦
        • 2022 SYSTEM STUDY
        • 2022 Winter Study
        • 2023 AutoMobility STUDY
        • 2023 Summer Study (CPPG)
        • 2023 Reversing STUDY
        • etc
      • Private🔒
        • MacBook 💻
        • Screenshot 🩷
        • Photo 🖼️
        • FFXIV - Backup 🎮
        • Tistory
      • PBL 📗
        • 논문 스터디
        • Backup
      • Project 🖤
        • 2022-2) 개인정보보호 소학회
        • 2022-2) winter GURU2 - iOS
        • 2023-1) PBL 3
        • 2023-2) PBL 4
        • 2024-1) SW-AI교육 실습 일지
      • CTF 🚩
        • 2022
        • 2023
      • News scrap 📰
        • 2022
        • 2023
      • 2022 공부 로그 🐯
      • 2023 공부 로그🐰
  • 블로그 메뉴

    • 글쓰기
    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    jlpt n1 도전기
    ansible galaxy
    N1
    JLPT
    deprecation warning
    멱등성
    JLPT N1
    content collection
    ansible
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
L_Chae
[ AWS ] 배포 파이프라인 만들기
상단으로

티스토리툴바