Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Java CD with Gradle

on:
push:
branches: [ "main" ]
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
type: choice
options:
- info
- warning
- debug
tags:
description: 'Test scenario tags'
required: false
type: boolean
environment:
description: 'Environment to run tests against'
type: environment
required: false

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
steps:
# 1. checkout
- uses: actions/checkout@v3

# 2. Java 17 설정
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

# 3. properties 설정
- name: Set up application.yml
run: |
mkdir -p src/main/resources
echo "${{ secrets.APPLICATION }}" > src/main/resources/application.yml

# 4. gradlew build
- name: Build with Gradle
uses: gradle/gradle-build-action@v2 # v2.6.0
with:
arguments: build

# 5. Docker 이미지 빌드
- name: docker image build
run: docker build -t ${{ secrets.DOCKER_USERNAME }}/warmlink-was .

# 6. DockerHub 로그인
- name: docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

# 7. Docker Hub 이미지 푸시
- name: docker Hub push
run: docker push ${{ secrets.DOCKER_USERNAME }}/warmlink-was

# 8. EC2 pull
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.AWS_HOST }}
username: ${{ secrets.AWS_USERNAME }}
key: ${{ secrets.AWS_KEY }}
port: ${{ secrets.AWS_PORT }}
script: |
sudo docker stop warmlink-was
sudo docker rm warmlink-was
sudo docker image prune -af
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/warmlink-was
sudo docker run -d -p 8080:8080 --name warmlink-was -e TZ=Asia/Seoul ${{ secrets.DOCKER_USERNAME }}/warmlink-was
57 changes: 57 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Java CI with Gradle

on:
pull_request:
branches: [ "main" ]
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
type: choice
options:
- info
- warning
- debug
tags:
description: 'Test scenario tags'
required: false
type: boolean
environment:
description: 'Environment to run tests against'
type: environment
required: false

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
steps:
# 1. checkout
- uses: actions/checkout@v3

# 2. Java 17 설정
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

# 3. properties 설정
- name: Set up application.yml
run: |
mkdir -p src/main/resources
echo "${{ secrets.APPLICATION }}" > src/main/resources/application.yml

# 4. gradlew 실행 권한 설정
- name: Run chmod to make gradlew executable
run: chmod +x ./gradlew

# 5. gradlew build
- name: Build with Gradle
uses: gradle/gradle-build-action@v2
with:
arguments: build
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ build/
!**/src/main/**/build/
!**/src/test/**/build/

### APPLICATION ###
src/main/resources/application.yml

### STS ###
.apt_generated
.classpath
Expand Down
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", "-jar", "app.jar"]
7 changes: 7 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,15 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// mysql
implementation 'com.mysql:mysql-connector-j'
}

tasks.named('test') {
useJUnitPlatform()
}

jar {
enabled = false
}
Loading