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 | 31 |
Tags
- 격파르타후기
- 격파르타장점
- 프로그래머스
- 격파르타비전공자
- java참조자료형
- 인터프린터언어
- java map
- java map 저장
- 항해15기
- javaJRE
- 노베이스부트캠프
- java알고리즘문제풀이
- 작은수제거하기
- java 자료구조 활용
- 컴파일
- java set 출력
- java list 출력
- 프로그래머스제일작은수
- java list 저장
- java map 출력
- 항해99후기
- 격파르타합격후기
- javaJVM
- java set 저장
- java최솟값구하기
- 코딩부트캠프후기
- java알고리즘
- 비전공자sqld
- java기본자료형
- sqld자격증합격
Archives
- Today
- Total
코딩과 결혼합니다
YAML 코드 분석 본문
728x90
name: Build and Deploy Spring Boot to AWS EC2
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# 새로 추가된 부분
- name: Grant execute permission to gradlew
run: chmod +x ./gradlew
# 여기까지
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: build
- name: Deploy Prod use SCP
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PASSWORD }}
source: "./build/libs/*.jar"
target: "/home/ubuntu/deploy"
strip_components: 2
- name: Transfer Deploy Script use SCP
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PASSWORD }}
source: "deploy.sh"
target: "/home/ubuntu/deploy"
- name: Execute Server Init Script
uses: appleboy/ssh-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PASSWORD }}
script_stop: true
script: chmod +x /home/ubuntu/deploy/deploy.sh && sh /home/ubuntu/deploy/deploy.sh
위 코드는 GitHub Actions을 사용하여 Spring Boot 애플리케이션을 빌드하고 AWS EC2 인스턴스에 배포하는 작업을 정의한 YAML 파일입니다. 여기에서는 Gradle을 사용하여 애플리케이션을 빌드하고 SCP를 사용하여 빌드된 JAR 파일과 배포 스크립트를 AWS EC2 인스턴스로 전송한 후 SSH를 사용하여 인스턴스에서 배포 스크립트를 실행합니다.
여러 단계로 구성된 작업은 다음과 같이 실행됩니다:
- GitHub 저장소에 변경 사항이 푸시 또는 풀 리퀘스트가 생성될 때 작업이 실행됩니다. 브랜치는 "main"으로 설정되어 있습니다.
- 빌드 단계: Ubuntu 환경에서 실행됩니다.
- GitHub Actions에서 소스 코드를 체크아웃합니다.
- JDK 17을 설치합니다.
- gradlew 스크립트에 실행 권한을 부여합니다.
- Gradle을 사용하여 프로젝트를 빌드합니다.
- 애플리케이션 JAR 파일을 SCP를 사용하여 AWS EC2 인스턴스로 전송합니다. $secrets.HOST, $secrets.PASSWORD는 GitHub Secrets로 설정된 값을 사용하여 인스턴스에 연결합니다.
- 배포 스크립트 deploy.sh를 AWS EC2 인스턴스로 전송합니다.
- SSH를 사용하여 AWS EC2 인스턴스에서 배포 스크립트를 실행합니다. chmod +x 명령을 사용하여 스크립트에 실행 권한을 부여하고, sh를 사용하여 스크립트를 실행합니다.
위 코드에서 ${{ secrets.HOST }}와 ${{ secrets.PASSWORD }}는 GitHub Secrets에 저장된 호스트 및 비밀번호 값으로 대체됩니다. 이러한 값들은 보안을 위해 저장소의 Secrets에 설정되어야 합니다.
이 작업을 사용하려면 다음 단계를 따라야 합니다:
- AWS EC2 인스턴스를 설정하고 SSH 키를 생성합니다.
- AWS EC2 인스턴스에 대한 호스트 및 비밀번호 정보를 GitHub Secrets에 저장합니다.
- Gradle 빌드 스크립트와 배포 스크립트를 프로젝트 루트에 생성합니다.
- 위의 YAML 파일(.github/workflows/build-and-deploy.yml)을 프로젝트 루트에 생성합니다.
GitHub Actions를 설정하여 Spring Boot 애플리케이션을 자동으로 빌드하고 배포할 수 있습니다. 하지만 주의할 점은 보안에 유의해야 하며, Secrets에 민감한 정보를 저장하는 경우 반드시 적절한 보안 조치를 취해야 합니다.
'청첩장 > 결혼식장 : 코린이의 저장소' 카테고리의 다른 글
| 코딩테스트 준비中 (0) | 2023.11.28 |
|---|---|
| 230923 - 인텔리픽 모의 면접 후기 (0) | 2023.09.22 |
| OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended (0) | 2023.08.05 |
| Failed to configure a DataSource 에러와 원인과 해결 방법 (0) | 2023.08.05 |
| NoSQL 과 RDBMS의 차이점과 장,단점 (0) | 2023.08.01 |