- -
diff --git a/.github/workflows/cd-develop.yml b/.github/workflows/cd-develop.yml new file mode 100644 index 00000000..88df35e1 --- /dev/null +++ b/.github/workflows/cd-develop.yml @@ -0,0 +1,92 @@ +name: Java CI with Gradle + +on: + push: + branches: [ "develop" ] + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Set up JDK 17 (JDK 17 설정) + uses: actions/setup-java@v2 + with: + distribution: 'temurin' + java-version: '17' + + - name: Create application.properties from git secret (application.properties 파일 생성) + run: | + mkdir -p default/src/main/resources + mkdir -p chat/src/main/resources + echo "$APPLICATION_DEFAULT" > default/src/main/resources/application.properties + echo "$APPLICATION_CHAT" > chat/src/main/resources/application.properties + env: + APPLICATION_DEFAULT: ${{ secrets.APPLICATION_DEFAULT }} + APPLICATION_CHAT: ${{ secrets.APPLICATION_CHAT }} + + - name: Grant execute permission to Gradle (Gradle 실행 권한 부여) + run: | + chmod +x ./default/gradlew + chmod +x ./chat/gradlew + +# - name: Detect Changes (변경된 파일 감지) +# id: changed-files +# run: | +# git fetch origin develop --depth=1 +# CHANGED_FILES=$(git diff --name-only origin/develop HEAD) +# +# echo "Changed files: $CHANGED_FILES" +# +# if echo "$CHANGED_FILES" | grep -q '^default/'; then +# echo "DEFAULT_CHANGED=true" >> $GITHUB_ENV +# fi +# +# if echo "$CHANGED_FILES" | grep -q '^chat/'; then +# echo "CHAT_CHANGED=true" >> $GITHUB_ENV +# fi + + - name: Build JAR (JAR 빌드) + run: | + ./default/gradlew bootJar + ./chat/gradlew bootJar + + # CR_PAT: Container Registry - Personal Access Token + - name: GitHub Container Registry login (GitHub Container Registry 로그인) + run: | + export CR_PAT=${{ secrets.SOUNDLINK_TOKEN }} + echo $CR_PAT | docker login ghcr.io -u ${{ secrets.GIT_ID }} --password-stdin + + - name: Docker build & push (Default) + run: | + TAG=$(git rev-parse --short HEAD) + DOCKER_IMAGE_DEFAULT=ghcr.io/${{ secrets.GIT_ID }}/soundlink_default:$TAG + docker build -t soundlink_default -f ./docker/default.Dockerfile . + docker tag soundlink_default $DOCKER_IMAGE_DEFAULT + docker push $DOCKER_IMAGE_DEFAULT + + - name: Docker build & push (Chat) + run: | + TAG=$(git rev-parse --short HEAD) + DOCKER_IMAGE_CHAT=ghcr.io/${{ secrets.GIT_ID }}/soundlink_chat:$TAG + docker build -t soundlink_chat -f ./docker//chat.Dockerfile . + docker tag soundlink_chat $DOCKER_IMAGE_CHAT + docker push $DOCKER_IMAGE_CHAT + + - name: Deploy to Linux Server (리눅스 서버 배포) + uses: appleboy/ssh-action@v0.1.1 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + key: ${{ secrets.PRIVATE_KEY }} + port: ${{ secrets.PORT }} + script: | + cd /home/ubuntu/docker + sudo docker-compose down spring + sudo docker-compose pull spring + sudo docker-compose up -d spring + sudo docker-compose down spring_chat + sudo docker-compose pull spring_chat + sudo docker-compose up -d spring_chat \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/ci-test.yml similarity index 80% rename from .github/workflows/test.yml rename to .github/workflows/ci-test.yml index f354566b..7c5de55b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/ci-test.yml @@ -38,7 +38,13 @@ jobs: chmod +x ./default/gradlew chmod +x ./chat/gradlew - - name: Run tests (테스트 실행) + - name: Run tests - default server (디폴트 서버 테스트 실행) run: | - ./default/gradlew test - ./chat/gradlew test \ No newline at end of file + cd default + ./gradlew test + cd .. + + - name: Run tests - chat server (채팅 서버 테스트 실행) + run: | + cd chat + ./gradlew test \ No newline at end of file diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml deleted file mode 100644 index d68c056c..00000000 --- a/.github/workflows/gradle.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Java CI with Gradle - -on: - push: - branches: [ "develop" ] - -permissions: - contents: read - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - - ## 원격 서버에서 docker-compose 실행 - - name: Build and Run Docker on Server - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.HOST }} - username: ${{ secrets.USERNAME }} - key: ${{ secrets.PRIVATE_KEY }} - port: ${{ secrets.PORT }} - script: | - # 최신 코드 가져오기 - cd /home/ubuntu/server - git pull origin develop - - # application.properties 새로 생성 - touch ./src/main/resources/application.properties - echo "${{ secrets.APPLICATION }}" | sudo tee ./src/main/resources/application.properties > /dev/null - - # 🔹 JAR 빌드 (서버에서 실행) - ./gradlew bootJar - - # 파일명 변경 - mv /home/ubuntu/server/build/libs/SoundLink_Java-0.0.1-SNAPSHOT.jar /home/ubuntu/docker/soundlink.jar - - cd /home/ubuntu/docker - - # 기존 Spring 컨테이너 중지 및 제거 - sudo docker-compose stop spring - sudo docker-compose rm -f spring - - # Spring 컨테이너만 다시 빌드 & 실행 - docker-compose up --build -d spring - sudo docker-compose up -d spring - - # 불필요한 이미지 정리 - sudo docker image prune -f \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index abfad51a..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Java CI with Gradle - -on: - push: - branches: [ "dev" ] - -permissions: - contents: read - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - - ## 원격 서버에서 docker-compose 실행 - - name: Build and Run Docker on Server - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.HOST }} - username: ${{ secrets.USERNAME }} - key: ${{ secrets.PRIVATE_KEY }} - port: ${{ secrets.PORT }} - script: | - # 최신 코드 가져오기 - cd /home/ubuntu/chat - git pull origin dev - - # application.properties 새로 생성 - touch ./src/main/resources/application.properties - echo "${{ secrets.APPLICATION }}" | sudo tee ./src/main/resources/application.properties > /dev/null - - # 🔹 JAR 빌드 (서버에서 실행) - ./gradlew bootJar - - # 파일명 변경 - mv /home/ubuntu/chat/build/libs/SoundLinkChat_Java-0.0.1-SNAPSHOT.jar /home/ubuntu/docker/soundlink.jar - - cd /home/ubuntu/docker - - # 기존 Spring 컨테이너 중지 및 제거 - sudo docker-compose stop spring_chat - sudo docker-compose rm -f spring_chat - - # Spring 컨테이너만 다시 빌드 & 실행 - docker-compose up --build -d spring_chat - sudo docker-compose up -d spring_chat - - # 불필요한 이미지 정리 - sudo docker image prune -f diff --git a/.gitignore b/.gitignore index 2c97edbe..86f29485 100644 --- a/.gitignore +++ b/.gitignore @@ -37,8 +37,10 @@ out/ .vscode/ ### yml & properties ### -*.yml -*.properties +chat/**/*.yml +default/**/*.yml +chat/src/main/resources/application.properties +default/src/main/resources/application.properties ### 폴더 추가 default/src/main/generated diff --git a/default/README.md b/README.md similarity index 100% rename from default/README.md rename to README.md diff --git a/chat/gradle/wrapper/gradle-wrapper.jar b/chat/gradle/wrapper/gradle-wrapper.jar index a4b76b95..9bbc975c 100644 Binary files a/chat/gradle/wrapper/gradle-wrapper.jar and b/chat/gradle/wrapper/gradle-wrapper.jar differ diff --git a/chat/gradle/wrapper/gradle-wrapper.properties b/chat/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..37f853b1 --- /dev/null +++ b/chat/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/chat/gradlew b/chat/gradlew index f5feea6d..faf93008 100755 --- a/chat/gradlew +++ b/chat/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -206,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. diff --git a/chat/src/main/resources/htmlFile/test.html b/chat/src/main/resources/htmlFile/test.html deleted file mode 100644 index b5e32e61..00000000 --- a/chat/src/main/resources/htmlFile/test.html +++ /dev/null @@ -1,261 +0,0 @@ - - -
- -