Skip to content

Commit

Permalink
Merge pull request #96 from mju-likelion/develop
Browse files Browse the repository at this point in the history
배포
  • Loading branch information
jher235 authored Jul 28, 2024
2 parents 752b87c + 5aa9793 commit c34eab4
Show file tree
Hide file tree
Showing 87 changed files with 3,466 additions and 0 deletions.
68 changes: 68 additions & 0 deletions .github/workflows/gradle.yml
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
40 changes: 40 additions & 0 deletions .gitignore
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
50 changes: 50 additions & 0 deletions .gitmessage.txt
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
#파일을 삭제하는 작업만 수행한 경우
4 changes: 4 additions & 0 deletions Dockerfile
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"]
49 changes: 49 additions & 0 deletions build.gradle
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 added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
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
Loading

0 comments on commit c34eab4

Please sign in to comment.