diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 8fc04a5..4b972ab 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -14,6 +14,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + with: + submodules: true + token: ${{ secrets.GIT_TOKEN }} # 1. Java 21 세팅 - name: Set up JDK 21 @@ -22,33 +25,37 @@ jobs: java-version: '21' distribution: 'temurin' - # 2. application-cloud.properties 생성 - - name: Create application-cloud.properties - run: | - echo "eureka.client.service-url.defaultZone=${{ secrets.EUREKA_CLIENT_SERVICE_URL }}" > ./src/main/resources/application-cloud.properties - echo "eureka.instance.instance-id=aether-back-apigateway:${{ secrets.SERVER_PORT }}" >> ./src/main/resources/application-cloud.properties - echo "spring.cloud.gateway.routes[0].id=aether-back-auth" >> ./src/main/resources/application-cloud.properties - echo "spring.cloud.gateway.routes[0].uri=lb://aether-back-auth" >> ./src/main/resources/application-cloud.properties - echo "spring.cloud.gateway.routes[0].predicates[0]=Path=/auth/**,/oauth2/**,/login/**" >> ./src/main/resources/application-cloud.properties + # 2. gradle caching - 빌드 시간 향상 + - name: Gradle Caching + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- - # 3. SpringBoot 애플리케이션 빌드 + # 2. SpringBoot 애플리케이션 빌드 - name: Build with Gradle - uses: gradle/actions/setup-gradle@v3 - with: - arguments: clean bootJar + run: | + chmod +x ./gradlew + ./gradlew clean bootJar - # 4. Docker 이미지 빌드 + # 3. Docker 이미지 빌드 - name: Docker Image Build - run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/aether-back-apigateway . + run: | + docker build --cache-from=type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/aether-back-apigateway \ + -t ${{ secrets.DOCKERHUB_USERNAME }}/aether-back-apigateway . - # 5. DockerHub 로그인 + # 4. DockerHub 로그인 - name: DockerHub Login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - # 6. DockerHub 이미지 push + # 5. DockerHub 이미지 push - name: DockerHub push run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/aether-back-apigateway @@ -62,14 +69,19 @@ jobs: - name: Docker pull run: sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/aether-back-apigateway - # 2. 기존 컨테이너 중지 - - name: Docker stop Container - run: sudo docker stop $(sudo docker ps -q) 2>/dev/null || true + # 2. 기존 컨테이너 중지 및 삭제 + - name: Stop and Remove Existing Container + run: | + sudo docker stop aether-back-apigateway 2>/dev/null || true + sudo docker rm aether-back-apigateway 2>/dev/null || true # 3. 최신 이미지를 컨테이너화하여 실행 - - name: Docker run new Container - run: sudo docker run --name aether-back-apigateway --rm -d -p 8081:8081 ${{ secrets.DOCKERHUB_USERNAME }}/aether-back-apigateway + - name: Run New Container + run: | + sudo docker run --name aether-back-apigateway --rm -d \ + -p 8081:8081 -e SPRING_PROFILES_ACTIVE=apigateway \ + --network host ${{ secrets.DOCKERHUB_USERNAME }}/aether-back-apigateway # 4. 미사용 이미지 정리 - name: Delete old Docker Image - run: sudo docker system prune -f + run: sudo docker image prune -f diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..4f24a5e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "aether-security"] + path = aether-security + url = https://github.com/9roomMoa/aether-security.git diff --git a/Dockerfile b/Dockerfile index 0733748..2e858ff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,9 @@ # jdk21 Image Start FROM openjdk:21 +# 프로파일 설정 +ENV SPRING_PROFILES_ACTIVE=apigateway + # 인자 설정 - JAR_File ARG JAR_FILE=build/libs/*.jar diff --git a/aether-security b/aether-security new file mode 160000 index 0000000..fa6e364 --- /dev/null +++ b/aether-security @@ -0,0 +1 @@ +Subproject commit fa6e364a8487821a6afaa1afe6076d4dfb00fc74 diff --git a/build.gradle b/build.gradle index 3cfe565..0a56bf0 100644 --- a/build.gradle +++ b/build.gradle @@ -45,3 +45,11 @@ dependencyManagement { tasks.named('test') { useJUnitPlatform() } + +processResources.dependsOn('copySecret') + +tasks.register('copySecret', Copy) { + from './aether-security' + include 'application-apigateway.properties' + into 'src/main/resources' +} \ No newline at end of file