1+ name : Java CI with Gradle
2+
3+ on :
4+ push :
5+ branches : [ "develop" ]
6+
7+ permissions :
8+ contents : read
9+
10+ jobs :
11+ build :
12+ runs-on : ubuntu-latest
13+ steps :
14+ - name : Set up JDK 17 (JDK 17 설정)
15+ uses : actions/setup-java@v2
16+ with :
17+ distribution : ' temurin'
18+ java-version : ' 17'
19+
20+ - name : Create application.properties from git secret (application.properties 파일 생성)
21+ run : |
22+ mkdir -p default/src/main/resources
23+ mkdir -p chat/src/main/resources
24+ echo "$APPLICATION_DEFAULT" > default/src/main/resources/application.properties
25+ echo "$APPLICATION_CHAT" > chat/src/main/resources/application.properties
26+ env :
27+ APPLICATION_DEFAULT : ${{ secrets.APPLICATION_DEFAULT }}
28+ APPLICATION_CHAT : ${{ secrets.APPLICATION_CHAT }}
29+
30+ - name : Grant execute permission to Gradle (Gradle 실행 권한 부여)
31+ run : |
32+ chmod +x ./default/gradlew
33+ chmod +x ./chat/gradlew
34+
35+ # - name: Detect Changes (변경된 파일 감지)
36+ # id: changed-files
37+ # run: |
38+ # git fetch origin develop --depth=1
39+ # CHANGED_FILES=$(git diff --name-only origin/develop HEAD)
40+ #
41+ # echo "Changed files: $CHANGED_FILES"
42+ #
43+ # if echo "$CHANGED_FILES" | grep -q '^default/'; then
44+ # echo "DEFAULT_CHANGED=true" >> $GITHUB_ENV
45+ # fi
46+ #
47+ # if echo "$CHANGED_FILES" | grep -q '^chat/'; then
48+ # echo "CHAT_CHANGED=true" >> $GITHUB_ENV
49+ # fi
50+
51+ - name : Build JAR (JAR 빌드)
52+ run : |
53+ ./default/gradlew bootJar
54+ ./chat/gradlew bootJar
55+
56+ # CR_PAT: Container Registry - Personal Access Token
57+ - name : GitHub Container Registry login (GitHub Container Registry 로그인)
58+ run : |
59+ export CR_PAT=${{ secrets.SOUNDLINK_TOKEN }}
60+ echo $CR_PAT | docker login ghcr.io -u ${{ secrets.GIT_ID }} --password-stdin
61+
62+ - name : Docker build & push (Default)
63+ run : |
64+ TAG=$(git rev-parse --short HEAD)
65+ DOCKER_IMAGE_DEFAULT=ghcr.io/${{ secrets.GIT_ID }}/soundlink_default:$TAG
66+ docker build -t soundlink_default -f docker/default.Dockerfile .
67+ docker tag soundlink_default $DOCKER_IMAGE_DEFAULT
68+ docker push $DOCKER_IMAGE_DEFAULT
69+
70+ - name : Docker build & push (Chat)
71+ run : |
72+ TAG=$(git rev-parse --short HEAD)
73+ DOCKER_IMAGE_CHAT=ghcr.io/${{ secrets.GIT_ID }}/soundlink_chat:$TAG
74+ docker build -t soundlink_chat -f docker/chat.Dockerfile .
75+ docker tag soundlink_chat $DOCKER_IMAGE_CHAT
76+ docker push $DOCKER_IMAGE_CHAT
77+
78+ - name : Deploy to Linux Server (리눅스 서버 배포)
79+ 80+ with :
81+ host : ${{ secrets.HOST }}
82+ username : ${{ secrets.USERNAME }}
83+ key : ${{ secrets.PRIVATE_KEY }}
84+ port : ${{ secrets.PORT }}
85+ script : |
86+ cd /home/ubuntu/docker
87+ sudo docker-compose down spring
88+ sudo docker-compose pull spring
89+ sudo docker-compose up -d spring
90+ sudo docker-compose down spring_chat
91+ sudo docker-compose pull spring_chat
92+ sudo docker-compose up -d spring_chat
0 commit comments