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
Binary file added .github/workflows/.DS_Store
Binary file not shown.
259 changes: 119 additions & 140 deletions .github/workflows/develop_build_deploy.yml
Original file line number Diff line number Diff line change
@@ -1,140 +1,119 @@
#name: develop push Build and Deploy
#
#on:
# push:
# branches: [ "develop" ]
#
#env:
# DOCKERHUB_USERNAME: fittheman
# DOCKERHUB_IMAGE_NAME: fittheman-server
#
#jobs:
# build-deploy:
# runs-on: ubuntu-latest
# environment: DEV
#
# steps:
# # 체크아웃
# - name: Checkout
# uses: actions/checkout@v4
#
# # JDK 17 세팅
# - name: Set up JDK 17
# uses: actions/setup-java@v4
# with:
# java-version: '17'
# distribution: 'temurin'
#
# # 테스트 환경에서 필요한 컨테이너 실행 (redis, postgres)
# - name: Run Containers
# run: docker compose -f ./docker-compose-test.yml up -d
#
# # 테스트 환경에서 필요한 스키마, 데이터 등록
# - name: Apply Schema and Data
# env:
# TEST_POSTGRES_CONTAINER_NAME: "${{ github.event.repository.name }}-postgres-1"
# TEST_POSTGRES_USER: test
# TEST_POSTGRES_DB: ftm_test_db
# run: |
# echo "⏳ Waiting for postgres to be ready..."
# until docker exec -i $TEST_POSTGRES_CONTAINER_NAME pg_isready -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB; do
# echo "postgres is not ready yet. Retrying in 3 seconds..."
# sleep 3
# done
# echo "✅ postgres is ready!"
#
# echo "${{ secrets.SCHEMA_SQL }}" | docker exec -i $TEST_POSTGRES_CONTAINER_NAME psql -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB
# echo "${{ secrets.DATA_SQL }}" | docker exec -i $TEST_POSTGRES_CONTAINER_NAME psql -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB
#
# # Gradlew 실행 권한 허용
# - name: Grant Execute Permission for Gradlew
# run: chmod +x ./gradlew
#
# # .env 파일 생성
# - name: Load secrets into .env file
# run: |
# echo "${{ secrets.ENV }}" >> .env
#
# # Swagger API 문서화 task 실행
# - name: Apply Swagger API Document Task
# run: ./gradlew copyOasToSwagger
#
# # Rest Docs API 문서화 task 실행
# - name: Apply Rest Docs API Document Task
# run: ./gradlew copyDocument
#
# # Gradle 빌드
# - name: Build with Gradle
# id: gradle
# uses: gradle/gradle-build-action@v2
# with:
# arguments: |
# bootJar
# --scan
# cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }}
#
# # Dockerhub 로그인
# - name: Login to Dockerhub
# uses: docker/login-action@v3
# with:
# username: ${{ env.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
#
# # Docker 메타데이터
# - name: Extract Docker metadata
# id: metadata
# uses: docker/[email protected]
# env:
# DOCKERHUB_IMAGE_FULL_NAME: ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_IMAGE_NAME }}
# with:
# images: ${{ env.DOCKERHUB_IMAGE_FULL_NAME }}
# tags: |
# type=sha,prefix=
#
# # Docker 이미지 빌드, 도커허브 푸시
# - name: Build and Push Docker image
# uses: docker/build-push-action@v3
# with:
# context: .
# push: true
# tags: ${{ steps.metadata.outputs.tags }} # 추출된 도커 메타데이터 tags -> "${DOCKERHUB_USERNAME}/${DOCKERHUB_IMAGE_NAME}:{TAG}
#
# # EC2 서버로 docker-compose.yml 파일 복사
# - name: Copy docker-compose file to EC2
# uses: burnett01/[email protected]
# with:
# switches: -avzr --delete
# path: docker-compose.yml
# remote_host: ${{ secrets.EC2_HOST }}
# remote_user: ${{ secrets.EC2_USER }}
# remote_key: ${{ secrets.SSH_PRIVATE_KEY }}
# remote_path: /home/ubuntu/
#
# # EC2 서버로 nginx 파일 복사
# # docker-compose.yml 에서 nginx 컨테이너 실행 시 파일을 마운트하기 위함
# - name: Copy default.conf file to EC2
# uses: burnett01/[email protected]
# with:
# switches: -avzr --delete
# path: ./nginx
# remote_host: ${{ secrets.EC2_HOST }}
# remote_user: ${{ secrets.EC2_USER }}
# remote_key: ${{ secrets.SSH_PRIVATE_KEY }}
# remote_path: /home/ubuntu
#
# # EC2 배포
# - name: Deploy to EC2 Server
# uses: appleboy/[email protected]
# env:
# IMAGE_FULL_PATH: ${{ steps.metadata.outputs.tags }}
# DOCKERHUB_IMAGE_NAME: ${{ env.DOCKERHUB_IMAGE_NAME }}
# with:
# host: ${{ secrets.EC2_HOST }}
# username: ${{ secrets.EC2_USER }}
# key: ${{ secrets.SSH_PRIVATE_KEY }}
# envs: IMAGE_FULL_PATH, DOCKERHUB_IMAGE_NAME # docker-compose.yml 에서 사용할 환경 변수
# debug: true
# script: |
# echo "${{ secrets.DOCKERHUB_ACCESS_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
# docker compose up -d
# docker image prune -a -f
name: develop push Build and Deploy

on:
push:
branches: [ "develop" ]

env:
DOCKERHUB_USERNAME: fittheman
DOCKERHUB_IMAGE_NAME: fittheman-server

jobs:
build-deploy:
runs-on: ubuntu-latest
environment: DEV

steps:
# 체크아웃
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}

# JDK 17 세팅
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

# 테스트 환경에서 필요한 컨테이너 실행 (redis, postgres)
- name: Run Containers
run: docker compose -f ./docker-compose-test.yml up -d

# 테스트 환경에서 필요한 스키마, 데이터 등록
- name: Apply Schema and Data
env:
TEST_POSTGRES_CONTAINER_NAME: "${{ github.event.repository.name }}-postgres-1"
TEST_POSTGRES_USER: test
TEST_POSTGRES_DB: ftm_test_db
run: |
echo "⏳ Waiting for postgres to be ready..."
until docker exec -i $TEST_POSTGRES_CONTAINER_NAME pg_isready -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB; do
echo "postgres is not ready yet. Retrying in 3 seconds..."
sleep 3
done
echo "✅ postgres is ready!"

echo "${{ secrets.SCHEMA_SQL }}" | docker exec -i $TEST_POSTGRES_CONTAINER_NAME psql -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB
echo "${{ secrets.DATA_SQL }}" | docker exec -i $TEST_POSTGRES_CONTAINER_NAME psql -U $TEST_POSTGRES_USER -d $TEST_POSTGRES_DB

# Gradlew 실행 권한 허용
- name: Grant Execute Permission for Gradlew
run: chmod +x ./gradlew

# .env 파일 생성
- name: Load secrets into .env file
run: |
echo "${{ secrets.ENV }}" >> .env

# Swagger API 문서화 task 실행
- name: Apply Swagger API Document Task
run: ./gradlew copyOasToSwagger

# Rest Docs API 문서화 task 실행
- name: Apply Rest Docs API Document Task
run: ./gradlew copyDocument

# Gradle 빌드
- name: Build with Gradle
id: gradle
uses: gradle/gradle-build-action@v2
with:
arguments: |
bootJar
--scan
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }}

# Dockerhub 로그인
- name: Login to Dockerhub
uses: docker/login-action@v3
with:
username: ${{ env.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}

# Docker 메타데이터
- name: Extract Docker metadata
id: metadata
uses: docker/[email protected]
env:
DOCKERHUB_IMAGE_FULL_NAME: ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_IMAGE_NAME }}
with:
images: ${{ env.DOCKERHUB_IMAGE_FULL_NAME }}
tags: |
type=sha,prefix=

# Docker 이미지 빌드, 도커허브 푸시
- name: Build and Push Docker image
uses: docker/build-push-action@v3
with:
context: .
push: true
tags: ${{ steps.metadata.outputs.tags }} # 추출된 도커 메타데이터 tags -> "${DOCKERHUB_USERNAME}/${DOCKERHUB_IMAGE_NAME}:{TAG}

# GCE 배포
- name: Deploy to GCE Server
uses: appleboy/[email protected]
env:
IMAGE_FULL_PATH: ${{ steps.metadata.outputs.tags }}
DOCKERHUB_IMAGE_NAME: ${{ env.DOCKERHUB_IMAGE_NAME }}
with:
host: ${{ secrets.GCE_HOST }}
username: ${{ secrets.GCE_USER }}
key: ${{ secrets.GCE_SSH_PRIVATE_KEY }}
envs: IMAGE_FULL_PATH, DOCKERHUB_IMAGE_NAME # docker-compose.yml 에서 사용할 환경 변수
debug: true
script: |
echo "${{ secrets.DOCKERHUB_ACCESS_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
docker compose up -d
docker image prune -a -f
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: develop push Build and Deploy (GCE)
name: develop push Build and Deploy Manual

on:
workflow_dispatch:
inputs:
ref:
description: "배포할 브랜치 (수동 테스트 전용)"
description: "배포할 브랜치 (수동 배포)"
required: true
default: "chore/#169"

Expand Down
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@ tasks.named('test') {
openapi3 {
servers = [
{ url = "http://localhost:8080/" },
{ url = "https://dev-api.fittheman.site/" }
{ url = "https://dev-api.fittheman.site/" },
{ url = "https://dev-api-gcp.fittheman.site/" }
]
title = '핏더맨 API DOCUMENT'
description = '핏더맨 api 명세서입니다.'
Expand Down
55 changes: 0 additions & 55 deletions docker-compose.yml

This file was deleted.

29 changes: 0 additions & 29 deletions nginx/default.conf

This file was deleted.

Loading
Loading