Skip to content

Commit

Permalink
[chore #173] 운영 서버 / 개발 서버 분리 (#174)
Browse files Browse the repository at this point in the history
* [chore] : gitignore에 application.yml 추가

* [chore] : 운영 서버 cd 스크립트 추가

* [rename] : 개발 서버 cd 스크립트 이름 변경

* [chore] : 서버 배포 테스트

* [chore] : 배포 스크립트 임시 추가 부분 삭제

* [chore] : 변수형에 postfix 추가 및 배포 테스트

* [chore] : cd_dev.yml 배포 테스트 부분 삭제

* [chore] : 운영 서버 도메인 접속 허용

* [chore] : swagger serverlist 삭제

* [chore] : secret 변수명 변경

* [chore] : 배포 스크립트 임시로 추가된 부분 삭제
  • Loading branch information
hyun2371 authored Dec 17, 2024
1 parent 9c0dac8 commit d05dbc9
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 32 deletions.
72 changes: 72 additions & 0 deletions .github/workflows/cd_dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Dev Server Deploy

on:
push:
branches: ["dev"]

permissions:
contents: read

jobs:
build-and-push-image:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3

- name: 자바 버전 설정
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: main 경로 application.yml 파일 생성
run: |
mkdir -p ./src/main/resources
echo "${{ secrets.APPLICATION_YML_DEV }}" | base64 -d > ./src/main/resources/application.yml
- name: gradle 권한 부여
run: chmod +x ./gradlew
shell: bash

- name: 빌드 시 캐시 적용
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: 빌드
run: ./gradlew build -x test

- name: 도커 허브 로그인
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME_DEV }}
password: ${{ secrets.DOCKERHUB_TOKEN_DEV }}

- name: 도커 이미지 빌드 및 푸시
run: |
docker build -f Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME_DEV }}/${{ secrets.DOCKERHUB_APP_NAME }} .
docker push ${{ secrets.DOCKERHUB_USERNAME_DEV }}/${{ secrets.DOCKERHUB_APP_NAME }}
deploy:
needs: build-and-push-image
runs-on: ubuntu-latest
steps:
- name: 이미지 pull 받아서 백그라운드 실행
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST_DEV }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_KEY_DEV }}
port: ${{ secrets.EC2_PORT }}
script: |
cd compose
docker rm -f $(docker ps -qa)
docker pull ${{ secrets.DOCKERHUB_USERNAME_DEV }}/${{ secrets.DOCKERHUB_APP_NAME }}
docker-compose up -d
docker system prune -f
44 changes: 18 additions & 26 deletions .github/workflows/cd.yml → .github/workflows/cd_prod.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: CD Backend
name: Prod Server Deploy

on:
push:
branches: [ "main", "dev" ]
branches: ["prod"]

permissions:
contents: read
Expand All @@ -14,26 +14,22 @@ jobs:
- name: Checkout code
uses: actions/checkout@v3

# 자바 버전 설정
- name: Set up JDK 17
- name: 자바 버전 설정
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

# main 경로 application.yml 파일 생성
- name: Generate application.yml
- name: main 경로 application.yml 파일 생성
run: |
mkdir -p ./src/main/resources
echo "${{ secrets.MAIN_APPLICATION_YML }}" | base64 -d > ./src/main/resources/application.yml
echo "${{ secrets.APPLICATION_YML_PROD }}" | base64 -d > ./src/main/resources/application.yml
# gradle 권한 부여
- name: Grant execute permission for gradlew
- name: gradle 권한 부여
run: chmod +x ./gradlew
shell: bash

# 빌드 시 캐시 적용
- name: Gradle Caching
- name: 빌드 시 캐시 적용
uses: actions/cache@v3
with:
path: |
Expand All @@ -43,38 +39,34 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
# 빌드
- name: Build with Gradle
- name: 빌드
run: ./gradlew build -x test

# 도커 허브 로그인
- name: Docker Hub Login
- name: 도커 허브 로그인
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
username: ${{ secrets.DOCKERHUB_USERNAME_PROD }}
password: ${{ secrets.DOCKERHUB_TOKEN_PROD }}

# 도커 이미지 빌드 및 푸시
- name: docker image build and push
- name: 도커 이미지 빌드 및 푸시
run: |
docker build -f Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_APP_NAME }} .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_APP_NAME }}
docker build -f Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME_PROD }}/${{ secrets.DOCKERHUB_APP_NAME }} .
docker push ${{ secrets.DOCKERHUB_USERNAME_PROD }}/${{ secrets.DOCKERHUB_APP_NAME }}
deploy:
needs: build-and-push-image
runs-on: ubuntu-latest
steps:
# 서버 백그라운드 실행
- name: pull image and run container
- name: 이미지 pull 받아서 백그라운드 실행
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
host: ${{ secrets.EC2_HOST_PROD }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_KEY }}
key: ${{ secrets.EC2_KEY_PROD }}
port: ${{ secrets.EC2_PORT }}
script: |
cd compose
docker rm -f $(docker ps -qa)
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_APP_NAME }}
docker pull ${{ secrets.DOCKERHUB_USERNAME_PROD }}/${{ secrets.DOCKERHUB_APP_NAME }}
docker-compose up -d
docker system prune -f
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,4 @@ out/
/src/main/generated/
/src/main/resources/application-local.yml
/src/main/resources/application-prod.yml
/src/main/resources/application-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@
info = @Info(
title = "GongmuIn API",
description = "공무인 API 명세서",
version = "v.1.0"),
servers = {
@Server(url = "https://gongmuin.site", description = "Deploy Server URL"),
@Server(url = "http://localhost:8080", description = "Local Host URL")
}
version = "v.1.0")
)
@Configuration
public class SwaggerConfig {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();

configuration.setAllowedOrigins(Arrays.asList("http://localhost:3000", "https://gongmuin.netlify.app",
"https://gongmuin.site/", "http://localhost:8080", "/ws/**"));
"https://gongmuin.site", "https://gongmuin.shop", "http://localhost:8080", "/ws/**"));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(Arrays.asList("*"));
configuration.setExposedHeaders(Arrays.asList("Set-Cookie", "Authorization"));
Expand Down

0 comments on commit d05dbc9

Please sign in to comment.