diff --git a/.github/workflows/backend-cd.yml b/.github/workflows/backend-cd.yml new file mode 100644 index 00000000..41e4a77b --- /dev/null +++ b/.github/workflows/backend-cd.yml @@ -0,0 +1,50 @@ +name: 배포 + +on: + push: + branches: + - 'be/**' + pull_request: + branches: + - main + - develop + +jobs: + deploy: + runs-on: ubuntu-latest # 작업이 실행될 환경 + defaults: + run: + working-directory: backend + steps: + - name: 체크아웃 + uses: actions/checkout@v3 + - name: JDK 17 사용 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'corretto' + - name: Gradle Wrapper 실행 권한 추가 + run: chmod +x gradlew + - name: Gradle로 빌드(CI) + run: ./gradlew build + - name: 도커허브에 로그인 + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USER_NAME }} + password: ${{ secrets.DOCKER_USER_PW }} + - name: 이미지 빌드 + run: docker buildx build --platform linux/amd64 -f Dockerfile.prod -t ${{ secrets.DOCKER_USER_NAME }}/${{ secrets.DOCKER_IMAGE_NAME }}-be:latest . + - name: 도커허브에 이미지 푸시 + run: docker push ${{ secrets.DOCKER_USER_NAME }}/${{ secrets.DOCKER_IMAGE_NAME }}-be:latest + - name: AWS EC2에 ssh 접속 후 배포 + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.AWS_IP }} + port: 22 + username: ubuntu + key: ${{ secrets.AWS_KEY }} + script: | + sudo docker rm -f $(docker ps -qa) + docker pull ${{ secrets.DOCKER_USER_NAME }}/${{ secrets.DOCKER_IMAGE_NAME }}-be:latest + docker-compose --env-file .env.production up -d + docker image prune -f diff --git a/backend/Dockerfile.prod b/backend/Dockerfile.prod new file mode 100644 index 00000000..1a9101c6 --- /dev/null +++ b/backend/Dockerfile.prod @@ -0,0 +1,4 @@ +FROM openjdk:17-jdk +ARG JAR_FILE=build/libs/*.jar +COPY ${JAR_FILE} techeer-resume-0.0.1-SNAPSHOT.jar +ENTRYPOINT ["java","-jar","/techeer-resume-0.0.1-SNAPSHOT.jar"] \ No newline at end of file diff --git a/backend/build.gradle b/backend/build.gradle index cb2260a1..db3fd16c 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -13,6 +13,10 @@ java { } } +jar { + enabled = false +} + configurations { compileOnly { extendsFrom annotationProcessor diff --git a/backend/src/main/java/com/techeer/backend/global/config/SecurityConfig.java b/backend/src/main/java/com/techeer/backend/global/config/SecurityConfig.java index c5e26010..abc40843 100644 --- a/backend/src/main/java/com/techeer/backend/global/config/SecurityConfig.java +++ b/backend/src/main/java/com/techeer/backend/global/config/SecurityConfig.java @@ -40,7 +40,7 @@ public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); - config.setAllowedOrigins(List.of("http://localhost:8080", "http://localhost:5173", "http://backend:8080")); + config.setAllowedOrigins(List.of("http://localhost:8080", "http://localhost:5173", "http://backend:8080", "http://backend:5173", "http://rexume.site:8080", "http://rexume.site:5173", "http://rexume.site", "http://52.78.85.237:8080", "http://52.78.85.237:5173")); config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS")); config.setAllowedHeaders(List.of("*")); config.setExposedHeaders(List.of("*"));