코드 그라데이션
CI / CD 적용하기 본문
AWS IAM에 들어가 사용자 만들기
생성된 boot3을 클릭하여 [액세스 키 생성] 버튼 클릭 후 작업 시작
이제 값을 등록하기 위해
github 에 접속 후 Settings -> Secrets and Variables -> Actions 순서로 클릭
이러면 기본 세팅은 끝
이제 파일을 작성하면
가장 바깥 폴더에 .github 디렉토리 생성하고 workflow 디렉토리 하위에 생성 후 안에 cicd.yml 만들기
cicd.yml
name: CI/CD # 이 워크플로의 이름
on:
push:
branches: [main] # main 브랜치로 푸시되었을 때만 실행
jobs:
build:
runs-on: ubuntu-latest # Ubuntu 환경에서 실행
steps:
- uses: actions/checkout@v3 # GitHub 리포지토리를 체크아웃
- uses: actions/setup-java@v3 # Java를 설정합니다.
with:
distribution: 'corretto' # Amazon Corretto를 사용
java-version: '17' # Java 17을 설치
- name: Grant execute permission for gradlew # gradlew 스크립트에 실행 권한 부여
run: chmod +x gradlew
- name: Build with Gradle # Gradle을 사용하여 빌드
run: ./gradlew clean build
- name: Get current time # 현재 시간을 가져옵니다.
uses: josStorer/get-current-time@v2.0.2
id: current-time
with:
format: YYYY-MM-DDTHH-mm-ss # 시간 형식 지정
utcOffset: "+09:00" # UTC 오프셋 설정 (한국 시간: +09:00)
- name: Set artifact # 빌드 아티팩트를 환경 변수에 설정
run: echo "artifact=$(ls ./build/libs)" >> $GITHUB_ENV
- name: Beanstalk Deploy # AWS Elastic Beanstalk로 배포
uses: einaregilsson/beanstalk-deploy@v20
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }} # AWS 액세스 키 ID
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} # AWS 시크릿 액세스 키
application_name: Boot3 # Elastic Beanstalk 애플리케이션 이름
environment_name: Boot3-env # Elastic Beanstalk 환경 이름
version_label: github-action-${{steps.current-time.outputs.formattedTime}} # 배포 버전 레이블 설정
region: ap-northeast-2 # AWS 리전 설정 (아시아 태평양 - 서울)
deployment_package: ./build/libs/${{env.artifact}} # 배포 패키지 경로 지정
작성 후 커밋, 푸시 완료하면
자동 배포 성공까지 확인할 수 있음.
그런데, 이 상태에서 주의할 점이 하나 있다.
테스트 코드에 대해서 계속 실패하므로,
설정을 하나 살짝 변경해준 게 있다.
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.2'
id 'io.spring.dependency-management' version '1.1.3'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
implementation 'io.jsonwebtoken:jjwt:0.9.1'
implementation 'javax.xml.bind:jaxb-api:2.3.1'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'mysql:mysql-connector-java'
runtimeOnly 'com.h2database:h2'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
// 이거
test.onlyIf {
!project.hasProperty('test')
}
// 이거
jar {
enabled = false
}
프로젝트가 다 마무리 되고, 배포를 중단하고 싶다면!
환경 종료를 선택하면 된다.
안내 메시지가 나오는데, 모든 것이 다 종료되므로, 주의해야 한다.
728x90
'SpringBoot [예제] 블로그 만들기 > CI, CD' 카테고리의 다른 글
[사전 지식] CI / CD (0) | 2023.10.25 |
---|
Comments