-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #96 from mju-likelion/develop
배포
- Loading branch information
Showing
87 changed files
with
3,466 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
name: Java CI/CD with Gradle # 워크플로우 이름 | ||
|
||
on: # 언제 실행할 것인지에 대한 설정 | ||
push: # 푸시 이벤트가 발생할 때 | ||
branches: [ "main" ] # main 브랜치에 푸시 이벤트가 발생할 때 | ||
|
||
permissions: # 권한 설정 | ||
contents: read # 해당 레포지토리의 모든 파일을 읽기 권한을 부여한다. | ||
|
||
jobs: # 실행할 작업들에 대한 설정 | ||
# Spring Boot 애플리케이션을 빌드하여 도커허브에 푸시하는 과정 | ||
build-docker-image: # 작업 이름 - 애플리케이션을 빌드하여 도커허브에 푸시하는 작업 | ||
runs-on: ubuntu-latest # 실행 환경 설정 | ||
steps: # 작업 내용 | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Grant execute permission for gradlew # gradlew 파일에 실행 권한 부여 | ||
run: chmod +x gradlew # gradlew 파일에 실행 권한을 부여한다. | ||
|
||
- name: Set up JDK 17 # 1. Java 17 세팅 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
- name: make application.properties # 2. application.properties 파일 생성 | ||
run: | | ||
mkdir -p ./src/main/resources | ||
cd ./src/main/resources | ||
touch ./application.properties | ||
echo "${{ secrets.PROPERTIES }}" > ./application.properties | ||
shell: bash | ||
|
||
- name: Build with Gradle # 3. Spring Boot 애플리케이션 빌드, jar 파일 생성 | ||
uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0 | ||
with: | ||
arguments: clean bootJar | ||
|
||
- name: docker image build # 4. Docker 이미지 빌드 | ||
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE }} . | ||
|
||
- name: docker login # 5. DockerHub 로그인 | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_PASSWORD }} | ||
|
||
- name: docker Hub push # 6. Docker Hub 이미지 푸시 | ||
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE }} | ||
|
||
deploy: # 작업 이름 - 도커허브에 푸시한 이미지를 서버에 배포하는 작업 | ||
needs: build-docker-image # build-docker-image 작업이 성공적으로 완료되어야 함 | ||
runs-on: ubuntu-latest # 실행 환경 설정 | ||
steps: # 작업 내용 | ||
- name: ssh connect & production # EC2에 접속하여 도커 이미지 실행 | ||
uses: appleboy/ssh-action@master | ||
with: | ||
host: ${{secrets.HOST}} # EC2 인스턴스의 IP 주소 | ||
username: ${{secrets.USERNAME}} # EC2 인스턴스의 사용자 이름 (ubuntu) | ||
key: ${{secrets.PASSWORD}} # EC2 인스턴스의 비밀번호 (SSH 키) | ||
script: | # 실행할 스크립트 | ||
sudo docker login --username ${{secrets.DOCKERHUB_USERNAME}} --password ${{secrets.DOCKERHUB_PASSWORD}} | ||
sudo docker pull ${{secrets.DOCKERHUB_USERNAME}}/${{secrets.DOCKERHUB_IMAGE}} | ||
sudo docker ps -q | xargs -r sudo docker stop | ||
sudo docker ps -aq | xargs -r sudo docker rm | ||
sudo docker run --name redis --rm -d -p 6379:6379 redis | ||
sudo docker run --name ${{secrets.DOCKERHUB_IMAGE}} --rm -d -p 8080:8080 ${{secrets.DOCKERHUB_USERNAME}}/${{secrets.DOCKERHUB_IMAGE}} | ||
sudo docker system prune -f |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
HELP.md | ||
.gradle | ||
build/ | ||
!gradle/wrapper/gradle-wrapper.jar | ||
!**/src/main/**/build/ | ||
!**/src/test/**/build/ | ||
|
||
### STS ### | ||
.apt_generated | ||
.classpath | ||
.factorypath | ||
.project | ||
.settings | ||
.springBeans | ||
.sts4-cache | ||
bin/ | ||
!**/src/main/**/bin/ | ||
!**/src/test/**/bin/ | ||
|
||
### IntelliJ IDEA ### | ||
.idea | ||
*.iws | ||
*.iml | ||
*.ipr | ||
out/ | ||
!**/src/main/**/out/ | ||
!**/src/test/**/out/ | ||
|
||
### NetBeans ### | ||
/nbproject/private/ | ||
/nbbuild/ | ||
/dist/ | ||
/nbdist/ | ||
/.nb-gradle/ | ||
|
||
### VS Code ### | ||
.vscode/ | ||
|
||
### IntelliJ IDEA ### | ||
application.properties |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
################ | ||
# <타입>: <제목> - <이슈번호> 의 형식으로 제목을 아래 공백줄에 작성 | ||
# 제목은 50자 이내 / 변경사항이 "무엇"인지 명확히 작성 / 끝에 마침표 금지 | ||
# 예) feat: 로그인 기능 추가 - #2 | ||
# 바로 아래 공백은 제목과 본문의 분리를 위함 | ||
################ | ||
# 본문(구체적인 내용)을 아랫줄에 작성 | ||
# 여러 줄의 메시지를 작성할 땐 "-"로 구분 (한 줄은 72자 이내) | ||
################ | ||
#feat | ||
#새로운 기능 추가 | ||
# | ||
#fix | ||
#버그 수정 | ||
# | ||
#design | ||
#CSS 등 사용자 UI 디자인 변경 | ||
# | ||
#!BREAKING CHANGE | ||
#커다란 API 변경의 경우 | ||
# | ||
#!HOTFIX | ||
#급하게 치명적인 버그를 고쳐야하는 경우 | ||
# | ||
#style | ||
#코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우 | ||
# | ||
#refactor | ||
#프로덕션 코드 리팩토링 | ||
# | ||
#comment | ||
#필요한 주석 추가 및 변경 | ||
# | ||
#docs | ||
#문서 수정 | ||
# | ||
#test | ||
#테스트 추가, 테스트 리팩토링(프로덕션 코드 변경 X) | ||
# | ||
#setting | ||
#패키지 설치, 개발 설정 | ||
# | ||
#chore | ||
#빌드 테스트 업데이트, 패키지 매니저를 설정하는 경우(프로덕션 코드 변경 X) | ||
# | ||
#rename | ||
#파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 | ||
# | ||
#remove | ||
#파일을 삭제하는 작업만 수행한 경우 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
FROM openjdk:17-jdk | ||
ARG JAR_FILE=build/libs/*.jar | ||
COPY ${JAR_FILE} app.jar | ||
ENTRYPOINT ["java", "-Dspring.profiles.active=docker", "-Duser.timezone=Asia/Seoul", "-jar", "app.jar"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
plugins { | ||
id 'java' | ||
id 'org.springframework.boot' version '3.3.1' | ||
id 'io.spring.dependency-management' version '1.1.5' | ||
} | ||
|
||
group = 'com.hackathonteam1' | ||
version = '0.0.1-SNAPSHOT' | ||
|
||
java { | ||
toolchain { | ||
languageVersion = JavaLanguageVersion.of(17) | ||
} | ||
} | ||
|
||
repositories { | ||
mavenCentral() | ||
} | ||
|
||
dependencies { | ||
implementation 'org.springframework.boot:spring-boot-starter-web' | ||
testImplementation 'org.springframework.boot:spring-boot-starter-test' | ||
testRuntimeOnly 'org.junit.platform:junit-platform-launcher' | ||
|
||
compileOnly 'org.projectlombok:lombok:1.18.32' | ||
annotationProcessor 'org.projectlombok:lombok:1.18.32' | ||
|
||
testCompileOnly 'org.projectlombok:lombok:1.18.32' | ||
testAnnotationProcessor 'org.projectlombok:lombok:1.18.32' | ||
|
||
implementation 'org.springframework.boot:spring-boot-starter-validation' | ||
|
||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'//JPA | ||
implementation 'org.springframework.boot:spring-boot-starter-jdbc'//JDBC | ||
runtimeOnly 'com.mysql:mysql-connector-j'//MySQL | ||
|
||
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'//JWT | ||
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'//JWT | ||
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'//JWT | ||
implementation 'javax.xml.bind:jaxb-api:2.3.1'//JAXB | ||
|
||
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'//AWS | ||
|
||
implementation 'org.springframework.boot:spring-boot-starter-data-redis'//Redis | ||
} | ||
|
||
tasks.named('test') { | ||
useJUnitPlatform() | ||
} |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip | ||
networkTimeout=10000 | ||
validateDistributionUrl=true | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists |
Oops, something went wrong.