Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
294b112
ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ Spring init ๋ฐ ๊ธฐ๋ณธ workflow ๊ตฌํ˜„ ํ•„์š” : feat : ํ…œํ”Œ๋ฆฟ ์ฝ”๋“œ init https://โ€ฆ
Cassiiopeia Jan 12, 2026
4d8aa63
MapSy-BE ๋ฒ„์ „ ๊ด€๋ฆฌ : docs : v0.1.8 README ๋ฒ„์ „ ์ •๋ณด ์—…๋ฐ์ดํŠธ [skip ci]
actions-user Jan 18, 2026
eb043fb
ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ Spring init ๋ฐ ๊ธฐ๋ณธ workflow ๊ตฌํ˜„ ํ•„์š” : fix : ์“ฐ์ง€์•Š๋Š” ๋กœ์ง ์‚ญ์ œ https://giโ€ฆ
Cassiiopeia Jan 18, 2026
d0d73f4
Merge branch 'main' of https://github.com/MapSee-Lab/MapSy-BE
Cassiiopeia Jan 18, 2026
73093f8
MapSy-BE ๋ฒ„์ „ ์ •๋ณด ๊ด€๋ฆฌ: chore: ๋ฒ„์ „ 0.1.9 [skip ci]
actions-user Jan 18, 2026
ac53130
ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ Spring init ๋ฐ ๊ธฐ๋ณธ workflow ๊ตฌํ˜„ ํ•„์š” : fix : JsonMapper.builder()๋ฅผโ€ฆ
Cassiiopeia Jan 18, 2026
16a7f42
Merge branch 'main' of https://github.com/MapSee-Lab/MapSy-BE
Cassiiopeia Jan 18, 2026
d290b80
MapSy-BE ๋ฒ„์ „ ์ •๋ณด ๊ด€๋ฆฌ: chore: ๋ฒ„์ „ 0.1.10 [skip ci]
actions-user Jan 18, 2026
1a6f047
ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ Spring init ๋ฐ ๊ธฐ๋ณธ workflow ๊ตฌํ˜„ ํ•„์š” : fix : WebClientConfig์—์„œ Webโ€ฆ
Cassiiopeia Jan 18, 2026
5af84ca
Merge branch 'main' of https://github.com/MapSee-Lab/MapSy-BE
Cassiiopeia Jan 18, 2026
2a528e0
MapSy-BE ๋ฒ„์ „ ์ •๋ณด ๊ด€๋ฆฌ: chore: ๋ฒ„์ „ 0.1.11 [skip ci]
actions-user Jan 18, 2026
c1c6152
ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ Spring init ๋ฐ ๊ธฐ๋ณธ workflow ๊ตฌํ˜„ ํ•„์š” : pull : main pull conflict ํ•ดโ€ฆ
Cassiiopeia Jan 19, 2026
c572a66
MapSy-BE ๋ฒ„์ „ ์ •๋ณด ๊ด€๋ฆฌ: chore: ๋ฒ„์ „ 0.1.12 [skip ci]
actions-user Jan 19, 2026
51d1608
ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ Spring init ๋ฐ ๊ธฐ๋ณธ workflow ๊ตฌํ˜„ ํ•„์š” : fix : tripgether ์ฃผ์„ ๋ฐ ๋„๋ฉ”์ธ mโ€ฆ
Cassiiopeia Jan 19, 2026
fce1cc3
Merge branch 'main' of https://github.com/MapSee-Lab/MapSy-BE
Cassiiopeia Jan 19, 2026
1481b42
MapSy-BE ๋ฒ„์ „ ์ •๋ณด ๊ด€๋ฆฌ: chore: ๋ฒ„์ „ 0.1.13 [skip ci]
actions-user Jan 19, 2026
ef9fd4a
MapSy-BE ๋ฒ„์ „ ๊ด€๋ฆฌ : docs : v0.1.13 ๋ฆด๋ฆฌ์ฆˆ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ (PR #7)
actions-user Jan 19, 2026
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
326 changes: 326 additions & 0 deletions .github/workflows/PROJECT-SPRING-SYNOLOGY-SIMPLE-CICD.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,326 @@
# ===================================================================
# Spring Boot ์ „์šฉ CI/CD ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ
# ===================================================================

name: PROJECT-SPRING-SYNOLOGY-CICD

# ===================================================================
# ๐Ÿ“‹ ํ•„์ˆ˜ GitHub Secrets ์„ค์ • ๊ฐ€์ด๋“œ
# ===================================================================
#
# โš ๏ธ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ๋‹ค์Œ GitHub Secrets๋ฅผ ์„ค์ •ํ•˜์„ธ์š”!
# (์ €์žฅ์†Œ Settings > Secrets and variables > Actions์—์„œ ์„ค์ •)
#
# ๐Ÿ”ง ํ•„์ˆ˜ Secrets:
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
# โ”‚ Secret ์ด๋ฆ„ โ”‚ ์„ค๋ช… โ”‚
# โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
# โ”‚ APPLICATION_PROD_YML โ”‚ Spring Boot ์šด์˜ ์„ค์ • ํŒŒ์ผ ๋‚ด์šฉ โ”‚
# โ”‚ DOCKERHUB_USERNAME โ”‚ DockerHub ์‚ฌ์šฉ์ž๋ช… โ”‚
# โ”‚ DOCKERHUB_TOKEN โ”‚ DockerHub ์•ก์„ธ์Šค ํ† ํฐ โ”‚
# โ”‚ SERVER_HOST โ”‚ ๋ฐฐํฌ ๋Œ€์ƒ ์„œ๋ฒ„ IP/๋„๋ฉ”์ธ โ”‚
# โ”‚ SERVER_USER โ”‚ ์„œ๋ฒ„ SSH ์ ‘์† ์‚ฌ์šฉ์ž๋ช… โ”‚
# โ”‚ SERVER_PASSWORD โ”‚ ์„œ๋ฒ„ SSH ์ ‘์† ๋น„๋ฐ€๋ฒˆํ˜ธ โ”‚
# โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
#
# ๐Ÿงช ์„ ํƒ์  Secrets (ํฌํŠธ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์‹œ):
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
# โ”‚ PROJECT_DEPLOY_PORT โ”‚ deploy ๋ธŒ๋žœ์น˜ ๋ฐฐํฌ ํฌํŠธ (๊ธฐ๋ณธ: 8081) โ”‚
# โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
#
# ๐Ÿ’ก ํฌํŠธ ์„ค์ • ์˜ˆ์‹œ:
# - PROJECT_DEPLOY_PORT: 8080 (๋ฐฐํฌ ์„œ๋น„์Šค ํฌํŠธ)
# - PROJECT_TEST_PORT: 8081 (ํ…Œ์ŠคํŠธ ์„œ๋น„์Šค ํฌํŠธ)
#
# โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ:
# 1. ํฌํŠธ๋Š” ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฌํŠธ๋ฅผ ์„ ํƒํ•˜์„ธ์š”
# 2. ๋ฐฉํ™”๋ฒฝ์—์„œ ํ•ด๋‹น ํฌํŠธ๊ฐ€ ์—ด๋ ค์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”
# 3. ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์™€ ํฌํŠธ๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์„ธ์š”
#
# ๐Ÿ“ APPLICATION_PROD_YML ์˜ˆ์‹œ:
# spring:
# datasource:
# url: jdbc:mysql://localhost:3306/your_db
# username: your_username
# password: your_password
# jpa:
# hibernate:
# ddl-auto: update
#
# ===================================================================
#
# ๐Ÿš€ ์›Œํฌํ”Œ๋กœ์šฐ ๊ธฐ๋Šฅ:
# - Spring Boot ํ”„๋กœ์ ํŠธ Gradle ๋นŒ๋“œ
# - Docker ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ DockerHub ํ‘ธ์‹œ
# - SSH๋ฅผ ํ†ตํ•œ ์›๊ฒฉ ์„œ๋ฒ„ ๋ฐฐํฌ
# - ๋ธŒ๋žœ์น˜๋ณ„ ๋‹ค๋ฅธ ํฌํŠธ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ
# - ํฌํŠธ ์ถฉ๋Œ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ธฐ๋ฐ˜ ํฌํŠธ ์„ค์ •
#
# ๐ŸŒฟ ๋ธŒ๋žœ์น˜๋ณ„ ๋ฐฐํฌ ์ „๋žต:
# - deploy ๋ธŒ๋žœ์น˜: ๋ฐฐํฌ ํ™˜๊ฒฝ (PROJECT_DEPLOY_PORT ์‚ฌ์šฉ, ๊ธฐ๋ณธ: 8080)
# - main ๋ธŒ๋žœ์น˜: ๋ฐฐํฌ ํ™˜๊ฒฝ (์ˆ˜๋™ ์‹คํ–‰์‹œ, PROJECT_DEPLOY_PORT ์‚ฌ์šฉ, ๊ธฐ๋ณธ: 8080)
# - test ๋ธŒ๋žœ์น˜: ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ (PROJECT_TEST_PORT ์‚ฌ์šฉ, ๊ธฐ๋ณธ: 8081)
#
# ๐Ÿ“ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•:
# 1. ์œ„์˜ GitHub Secrets ์„ค์ •
# 2. ์•„๋ž˜ PROJECT_NAME์„ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ช…์œผ๋กœ ๋ณ€๊ฒฝ
# 3. deploy์™€ test ๋ธŒ๋žœ์น˜์— pushํ•˜๋ฉด ์ž๋™์œผ๋กœ CI/CD ์‹คํ–‰ (main ๋ธŒ๋žœ์น˜๋Š” ์ˆ˜๋™ ์‹คํ–‰๋งŒ ๊ฐ€๋Šฅ)
# 4. GitHub Secrets์—์„œ ํฌํŠธ ์„ค์ • (๊ธฐ๋ณธ๊ฐ’: deploy=8080, test=8081)
#
# ===================================================================

# ===================================================================
# ํŠธ๋ฆฌ๊ฑฐ ์„ค์ •
# ===================================================================
# deploy์™€ test ๋ธŒ๋žœ์น˜์— pushํ•  ๋•Œ ์ž๋™์œผ๋กœ CI/CD๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
# main ๋ธŒ๋žœ์น˜๋Š” workflow_dispatch๋กœ ์ˆ˜๋™ ์‹คํ–‰๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
on:
push:
branches:
- deploy # ๋ฐฐํฌ ํ™˜๊ฒฝ (8080 ํฌํŠธ)
- test # ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ (8081 ํฌํŠธ)
workflow_dispatch: # ์ˆ˜๋™ ์‹คํ–‰ ํ—ˆ์šฉ

# ===================================================================
# ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
# ===================================================================
env:
# ๐Ÿ”ง ํ”„๋กœ์ ํŠธ ์„ค์ • - ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ช…์œผ๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”
PROJECT_NAME: "project" # ๊ธฐ๋ณธ๊ฐ’: project (ํ”„๋กœ์ ํŠธ๋ช…์— ๋งž๊ฒŒ ์ˆ˜์ • ํ•„์š”)

# ๐Ÿณ Docker ์„ค์ •
DOCKER_IMAGE_PREFIX: "back-container"

# โ˜๏ธ Spring Boot ์„ค์ •
SPRING_PROFILE: "prod"
JAVA_VERSION: "17"
GRADLE_OPTS: "-Dspring.profiles.active=prod"

jobs:
# ===================================================================
# ๋นŒ๋“œ ์ž‘์—…
# ===================================================================
build:
name: Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ
runs-on: ubuntu-latest

steps:
# 1. ์†Œ์Šค์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ
- name: ์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ
uses: actions/checkout@v4

# 2. Java ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •
- name: Java ์„ค์ •
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'temurin'
cache: 'gradle'

# 3. Gradle ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
- name: Gradle Wrapper ์‹คํ–‰๊ถŒํ•œ ๋ถ€์—ฌ
run: chmod +x gradlew

# 4. Spring Boot ์šด์˜ ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ
# GitHub Secrets์—์„œ APPLICATION_PROD_YML ๊ฐ’์„ ์ฝ์–ด์™€์„œ
# src/main/resources/application-prod.yml ํŒŒ์ผ๋กœ ์ƒ์„ฑ
- name: application-prod.yml ์ƒ์„ฑ
run: |
# ๋ฆฌ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ (ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๊ฒฝ๋กœ ์กฐ์ • ํ•„์š”)
mkdir -p src/main/resources

# GitHub Secrets์˜ APPLICATION_PROD_YML ๋‚ด์šฉ์„ ํŒŒ์ผ๋กœ ์ €์žฅ
cat << 'EOF' > ./src/main/resources/application-prod.yml
${{ secrets.APPLICATION_PROD_YML }}
EOF

echo "โœ… application-prod.yml ํŒŒ์ผ ์ƒ์„ฑ ์™„๋ฃŒ"

# 5. Gradle ๋นŒ๋“œ ์‹คํ–‰
# ํ…Œ์ŠคํŠธ๋Š” ์ œ์™ธํ•˜๊ณ  ์šด์˜ ํ”„๋กœํŒŒ์ผ๋กœ ๋นŒ๋“œ
- name: Build with Gradle
run: ./gradlew clean build -x test ${{ env.GRADLE_OPTS }}

# 6. Docker ๋นŒ๋“œ ํ™˜๊ฒฝ ์„ค์ •
- name: Docker ๋นŒ๋“œํ™˜๊ฒฝ ์„ค์ •
uses: docker/setup-buildx-action@v3

# 7. DockerHub ๋กœ๊ทธ์ธ
- name: DockerHub ๋กœ๊ทธ์ธ
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

# 8. Docker ๋ ˆ์ด์–ด ์บ์‹ฑ ์„ค์ •
# ๋นŒ๋“œ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์บ์‹œ ์„ค์ •
- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ hashFiles('Dockerfile') }}
restore-keys: |
${{ runner.os }}-buildx-

# 9. Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ํ‘ธ์‹œ
# ๋ธŒ๋žœ์น˜๋ช…์„ ํƒœ๊ทธ๋กœ ์‚ฌ์šฉํ•˜์—ฌ main/test ํ™˜๊ฒฝ๋ณ„๋กœ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ
- name: Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ํ‘ธ์‹œ
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.PROJECT_NAME }}-${{ env.DOCKER_IMAGE_PREFIX }}:${{ github.ref_name }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max

# 10. Docker ์บ์‹œ ์ •๋ฆฌ
- name: Move Docker cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache

# ===================================================================
# ๋ฐฐํฌ ์ž‘์—…
# ===================================================================
deploy:
name: ์›๊ฒฉ ์„œ๋ฒ„ ๋ฐฐํฌ
needs: build
runs-on: ubuntu-latest

steps:
# SSH๋ฅผ ํ†ตํ•œ ์›๊ฒฉ ์„œ๋ฒ„ ๋ฐฐํฌ ์‹คํ–‰
- name: Deploy
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
password: ${{ secrets.SERVER_PASSWORD }}
port: 2022
script: |
set -e

# ============================================================
# ๋ฐฐํฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
# ============================================================
echo "๐Ÿ”ง ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •.."
export PATH=$PATH:/usr/local/bin
export PW=${{ secrets.SERVER_PASSWORD }}

# GitHub์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๋ธŒ๋žœ์น˜๋ช…
BRANCH=${{ github.ref_name }}

# ํ”„๋กœ์ ํŠธ ์„ค์ •
PROJECT_NAME="${{ env.PROJECT_NAME }}"

# ============================================================
# ๋ธŒ๋žœ์น˜๋ณ„ ํฌํŠธ ๋ฐ ์ปจํ…Œ์ด๋„ˆ๋ช… ์„ค์ •
# ============================================================
# ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •
PORT=8080
CONTAINER_NAME="${PROJECT_NAME}-back"

# ๋ธŒ๋žœ์น˜์— ๋”ฐ๋ฅธ ํ™˜๊ฒฝ๋ณ„ ์„ค์ •
if [ "$BRANCH" == "deploy" ] || [ "$BRANCH" == "main" ]; then
# ๐Ÿš€ ๋ฐฐํฌ ํ™˜๊ฒฝ (deploy ๋ธŒ๋žœ์น˜ ๋˜๋Š” main ๋ธŒ๋žœ์น˜)
# GitHub Secrets์˜ PROJECT_DEPLOY_PORT ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์‚ฌ์šฉ
# ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’ 8080 ์‚ฌ์šฉ
PORT=${{ secrets.PROJECT_DEPLOY_PORT || '8080' }}
CONTAINER_NAME="${PROJECT_NAME}-back-deploy"
echo "๐Ÿš€ ๋ฐฐํฌ ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค (๋ธŒ๋žœ์น˜: $BRANCH)"

elif [ "$BRANCH" == "test" ]; then
# ๐Ÿงช ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ (test ๋ธŒ๋žœ์น˜)
# GitHub Secrets์˜ PROJECT_TEST_PORT ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์‚ฌ์šฉ
# ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’ 8081 ์‚ฌ์šฉ
PORT=${{ secrets.PROJECT_TEST_PORT || '8081' }}
CONTAINER_NAME="${PROJECT_NAME}-back-test"
echo "๐Ÿงช ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค"

else
# โš ๏ธ ๊ธฐํƒ€ ๋ธŒ๋žœ์น˜ (์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ธŒ๋žœ์น˜)
echo "โš ๏ธ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค: $BRANCH"
echo "์ด ์›Œํฌํ”Œ๋กœ์šฐ๋Š” deploy ๋ธŒ๋žœ์น˜์™€ test ๋ธŒ๋žœ์น˜๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค."
echo "on.push.branches์—์„œ ์ง€์›ํ•  ๋ธŒ๋žœ์น˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”."
exit 1
fi

# ์„ค์ • ์ •๋ณด ์ถœ๋ ฅ
echo "๐Ÿ“‹ ๋ฐฐํฌ ์„ค์ • ์ •๋ณด:"
echo " - ๋ธŒ๋žœ์น˜: $BRANCH"
echo " - ํ”„๋กœ์ ํŠธ: $PROJECT_NAME"
echo " - ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„: $CONTAINER_NAME"
echo " - ํฌํŠธ: $PORT"
echo " - Docker ์ด๋ฏธ์ง€: ${{ secrets.DOCKERHUB_USERNAME }}/${PROJECT_NAME}-${{ env.DOCKER_IMAGE_PREFIX }}:${BRANCH}"

# ============================================================
# Docker ์ด๋ฏธ์ง€ ํ’€ (Pull)
# ============================================================
echo "โฌ‡๏ธ Docker ์ด๋ฏธ์ง€ ํ’€: ${{ secrets.DOCKERHUB_USERNAME }}/${PROJECT_NAME}-${{ env.DOCKER_IMAGE_PREFIX }}:${BRANCH}"
echo $PW | sudo -S docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${PROJECT_NAME}-${{ env.DOCKER_IMAGE_PREFIX }}:${BRANCH}

# ============================================================
# ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ •๋ฆฌ
# ============================================================
echo "๐Ÿงน ์ปจํ…Œ์ด๋„ˆ $CONTAINER_NAME ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ ์ค‘..."

# ๋™์ผํ•œ ์ด๋ฆ„์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
if sudo docker ps -a --format '{{.Names}}' | grep -Eq "^${CONTAINER_NAME}\$"; then
echo "โš ๏ธ ์ปจํ…Œ์ด๋„ˆ $CONTAINER_NAME ์ด(๊ฐ€) ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ง€ ๋ฐ ์‚ญ์ œ ์ค‘..."
echo $PW | sudo -S docker rm -f $CONTAINER_NAME
echo "โœ… ์ปจํ…Œ์ด๋„ˆ $CONTAINER_NAME ์ด(๊ฐ€) ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
else
echo "โ„น๏ธ ์กด์žฌํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ $CONTAINER_NAME ์ด(๊ฐ€) ์—†์Šต๋‹ˆ๋‹ค."
fi

# ============================================================
# ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
# ============================================================
echo "๐Ÿš€ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ $CONTAINER_NAME ์‹คํ–‰ ์ค‘..."

# Docker ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
# - ํฌํŠธ ๋งคํ•‘: ${PORT}:8080 (์™ธ๋ถ€ํฌํŠธ:๋‚ด๋ถ€ํฌํŠธ)
# - ์‹œ๊ฐ„๋Œ€: Asia/Seoul
# - Spring ํ”„๋กœํŒŒ์ผ: prod
# - ๋ณผ๋ฅจ ๋งˆ์šดํŠธ: ๋กœ์ปฌ ์‹œ๊ฐ„ ๋™๊ธฐํ™” ๋ฐ ํ”„๋กœ์ ํŠธ ๋ฐ์ดํ„ฐ
echo $PW | sudo -S docker run -d \
-p ${PORT}:8080 \
--name $CONTAINER_NAME \
-e TZ=Asia/Seoul \
-e "SPRING_PROFILES_ACTIVE=${{ env.SPRING_PROFILE }}" \
-v /etc/localtime:/etc/localtime:ro \
-v /volume1/projects/${PROJECT_NAME}:/mnt/${PROJECT_NAME} \
${{ secrets.DOCKERHUB_USERNAME }}/${PROJECT_NAME}-${{ env.DOCKER_IMAGE_PREFIX }}:${BRANCH}

# ============================================================
# ๋ฐฐํฌ ์™„๋ฃŒ ํ™•์ธ
# ============================================================
echo "โœ… ๋ฐฐํฌ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!"
echo ""
echo "๐Ÿ“‹ ๋ฐฐํฌ ๊ฒฐ๊ณผ ์š”์•ฝ:"
echo " ๐ŸŽฏ ํ”„๋กœ์ ํŠธ: $PROJECT_NAME"
echo " ๐ŸŒฟ ๋ธŒ๋žœ์น˜: $BRANCH"
echo " ๐Ÿณ ์ปจํ…Œ์ด๋„ˆ: $CONTAINER_NAME"
echo " ๐ŸŒ ํฌํŠธ: $PORT"
echo " โฐ ๋ฐฐํฌ ์‹œ๊ฐ„: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
echo "๐Ÿ”— ์ ‘์† URL: http://${{ secrets.SERVER_HOST }}:${PORT}"

# ===================================================================
# ์‚ฌ์šฉ ์˜ˆ์‹œ - deploy์™€ test ๋ธŒ๋žœ์น˜ ์‚ฌ์šฉ
# ===================================================================
#
# ํ˜„์žฌ ์„ค์ •: deploy์™€ test ๋ธŒ๋žœ์น˜์— pushํ•  ๋•Œ ์ž๋™ ๋ฐฐํฌ
# main ๋ธŒ๋žœ์น˜๋Š” ์ˆ˜๋™ ์‹คํ–‰(workflow_dispatch)๋งŒ ๊ฐ€๋Šฅ
#
# ๋ธŒ๋žœ์น˜๋ณ„ ํฌํŠธ:
# - deploy: 8080 (PROJECT_DEPLOY_PORT secret์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)
# - main: 8080 (์ˆ˜๋™ ์‹คํ–‰์‹œ, PROJECT_DEPLOY_PORT secret์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)
# - test: 8081 (PROJECT_TEST_PORT secret์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)
#
# ํ•„์š”ํ•œ Secrets:
# - APPLICATION_PROD_YML, DOCKERHUB_*, SERVER_* (ํ•„์ˆ˜)
# - PROJECT_DEPLOY_PORT (์„ ํƒ, ๊ธฐ๋ณธ๊ฐ’: 8080)
# - PROJECT_TEST_PORT (์„ ํƒ, ๊ธฐ๋ณธ๊ฐ’: 8081)
#
# ===================================================================
36 changes: 33 additions & 3 deletions CHANGELOG.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,41 @@
{
"metadata": {
"lastUpdated": "2026-01-18T15:29:36Z",
"currentVersion": "0.1.8",
"lastUpdated": "2026-01-19T04:22:34Z",
"currentVersion": "0.1.13",
"projectType": "spring",
"totalReleases": 3
"totalReleases": 4
},
"releases": [
{
"version": "0.1.13",
"project_type": "spring",
"date": "2026-01-19",
"pr_number": 7,
"raw_summary": "## Summary by CodeRabbit\n\n* **์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ**\n * ์ž๋™ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ ์ถ”๊ฐ€๋กœ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ํšจ์œจํ™”\n\n* **๋ณ€๊ฒฝ์‚ฌํ•ญ**\n * ์ œํ’ˆ ๋ธŒ๋žœ๋“œ๋ช… \"Mapsy\"๋กœ ํ†ต์ผ\n * API ๋ฌธ์„œ ๋ฐ ์„ค์ • ์—…๋ฐ์ดํŠธ\n\n* **๊ธฐํƒ€**\n * ๋ฒ„์ „ v0.1.13์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ\n * ๊ธฐ๋ณธ ๊ธฐ์ˆ  ์Šคํƒ ์ตœ์ ํ™” ๋ฐ ๋‚ด๋ถ€ ๊ตฌ์กฐ ๊ฐœ์„ ",
"parsed_changes": {
"์ƒˆ๋กœ์šด_๊ธฐ๋Šฅ": {
"title": "์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ",
"items": [
"์ž๋™ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ ์ถ”๊ฐ€๋กœ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ํšจ์œจํ™”"
]
},
"๋ณ€๊ฒฝ์‚ฌํ•ญ": {
"title": "๋ณ€๊ฒฝ์‚ฌํ•ญ",
"items": [
"์ œํ’ˆ ๋ธŒ๋žœ๋“œ๋ช… \"Mapsy\"๋กœ ํ†ต์ผ",
"API ๋ฌธ์„œ ๋ฐ ์„ค์ • ์—…๋ฐ์ดํŠธ"
]
},
"๊ธฐํƒ€": {
"title": "๊ธฐํƒ€",
"items": [
"๋ฒ„์ „ v0.1.13์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ",
"๊ธฐ๋ณธ ๊ธฐ์ˆ  ์Šคํƒ ์ตœ์ ํ™” ๋ฐ ๋‚ด๋ถ€ ๊ตฌ์กฐ ๊ฐœ์„ "
]
}
},
"parse_method": "markdown"
},
{
"version": "0.1.8",
"project_type": "spring",
Expand Down
21 changes: 19 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,24 @@
# Changelog

**ํ˜„์žฌ ๋ฒ„์ „:** 0.1.8
**๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ:** 2026-01-18T15:29:36Z
**ํ˜„์žฌ ๋ฒ„์ „:** 0.1.13
**๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ:** 2026-01-19T04:22:34Z

---

## [0.1.13] - 2026-01-19

**PR:** #7

**์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ**
- ์ž๋™ ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ์šฐ ์ถ”๊ฐ€๋กœ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ํšจ์œจํ™”

**๋ณ€๊ฒฝ์‚ฌํ•ญ**
- ์ œํ’ˆ ๋ธŒ๋žœ๋“œ๋ช… "Mapsy"๋กœ ํ†ต์ผ
- API ๋ฌธ์„œ ๋ฐ ์„ค์ • ์—…๋ฐ์ดํŠธ

**๊ธฐํƒ€**
- ๋ฒ„์ „ v0.1.13์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ
- ๊ธฐ๋ณธ ๊ธฐ์ˆ  ์Šคํƒ ์ตœ์ ํ™” ๋ฐ ๋‚ด๋ถ€ ๊ตฌ์กฐ ๊ฐœ์„ 

---

Expand Down
Loading