@@ -9,95 +9,92 @@ name: Java CI with Gradle
99
1010on :
1111 push :
12- branches : [ "main" ]
12+ branches : ["main"]
1313
1414jobs :
1515 build :
16- if : github.event.pull_request.head.repo.full_name == github.repository
1716 if : github.event.repository.fork == false
1817 runs-on : ubuntu-latest
1918 permissions :
2019 id-token : write
2120 contents : read
2221
2322 steps :
24- - uses : actions/checkout@v4
25- - name : Set up JDK 21
26- uses : actions/setup-java@v4
27- with :
28- java-version : ' 21'
29- distribution : ' temurin'
30-
31- # Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
32- # See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
33- - name : Setup Gradle
34- uses : gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
35-
36- - name : Build with Gradle Wrapper
37- run : ./gradlew build
38-
39- # 3. 도커허브 로그인
40- - name : Login to DockerHub
41- uses : docker/login-action@v3
42- with :
43- username : ${{ secrets.DOCKER_USERNAME }}
44- password : ${{ secrets.DOCKER_PASSWORD }}
45-
46- # 4. 도커 허브에 이미지 푸시
47- - name : Push Docker Image
48- uses : docker/build-push-action@v6
49- with :
50- push : true
51- context : .
52- tags : ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}:latest
53-
54- # 5. GCP 인증
55- - name : Authenticate to GCP
56- id : ' auth'
57- uses : ' google-github-actions/auth@v2'
58- with :
59- workload_identity_provider : ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }} # 생성한 워크로드 아이덴티티 풀의 ID
60- service_account : ${{ secrets.SERVICE_ACCOUNT_EMAIL }} # IAM 서비스 계정
61-
62- # 6. GCP Compute Engine SSH로 배포
63- - name : Deploy to GCP Compute Engine
64- id : ' compute-ssh'
65- uses : ' google-github-actions/ssh-compute@v1'
66- with :
67- instance_name : ${{ secrets.GCP_INSTANCE_NAME }}
68- zone : ${{ secrets.GCP_INSTANCE_ZONE }}
69- ssh_private_key : ${{ secrets.GCP_SSH_PRIVATE_KEY }}
70- command : |
71- mkdir ./${{ github.repository }}
72- cd ./${{ github.repository }}
73- ls -al
74- sudo curl -o docker-compose.yml https://raw.githubusercontent.com/${{ github.repository }}/main/docker-compose.yml
75- sudo docker-compose down
76- sudo docker-compose up -d ${{ secrets.DOCKER_IMAGE_NAME }}
77- sudo docker image prune -a -f
78-
79- # Example of using the output
80- - id : ' debug'
81- run : |-
82- echo '${{ steps.compute-ssh.outputs.stdout }}'
83- echo '${{ steps.compute-ssh.outputs.stderr }}'
84-
23+ - uses : actions/checkout@v4
24+ - name : Set up JDK 21
25+ uses : actions/setup-java@v4
26+ with :
27+ java-version : " 21"
28+ distribution : " temurin"
29+
30+ # Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
31+ # See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
32+ - name : Setup Gradle
33+ uses : gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
34+
35+ - name : Build with Gradle Wrapper
36+ run : ./gradlew build
37+
38+ # 3. 도커허브 로그인
39+ - name : Login to DockerHub
40+ uses : docker/login-action@v3
41+ with :
42+ username : ${{ secrets.DOCKER_USERNAME }}
43+ password : ${{ secrets.DOCKER_PASSWORD }}
44+
45+ # 4. 도커 허브에 이미지 푸시
46+ - name : Push Docker Image
47+ uses : docker/build-push-action@v6
48+ with :
49+ push : true
50+ context : .
51+ tags : ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_IMAGE_NAME }}:latest
52+
53+ # 5. GCP 인증
54+ - name : Authenticate to GCP
55+ id : " auth"
56+ uses : " google-github-actions/auth@v2"
57+ with :
58+ workload_identity_provider : ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }} # 생성한 워크로드 아이덴티티 풀의 ID
59+ service_account : ${{ secrets.SERVICE_ACCOUNT_EMAIL }} # IAM 서비스 계정
60+
61+ # 6. GCP Compute Engine SSH로 배포
62+ - name : Deploy to GCP Compute Engine
63+ id : " compute-ssh"
64+ uses : " google-github-actions/ssh-compute@v1"
65+ with :
66+ instance_name : ${{ secrets.GCP_INSTANCE_NAME }}
67+ zone : ${{ secrets.GCP_INSTANCE_ZONE }}
68+ ssh_private_key : ${{ secrets.GCP_SSH_PRIVATE_KEY }}
69+ command : |
70+ mkdir ./${{ github.repository }}
71+ cd ./${{ github.repository }}
72+ ls -al
73+ sudo curl -o docker-compose.yml https://raw.githubusercontent.com/${{ github.repository }}/main/docker-compose.yml
74+ sudo docker-compose down
75+ sudo docker-compose up -d ${{ secrets.DOCKER_IMAGE_NAME }}
76+ sudo docker image prune -a -f
77+
78+ # Example of using the output
79+ - id : " debug"
80+ run : |-
81+ echo '${{ steps.compute-ssh.outputs.stdout }}'
82+ echo '${{ steps.compute-ssh.outputs.stderr }}'
8583
8684 dependency-submission :
87-
8885 runs-on : ubuntu-latest
8986 permissions :
9087 contents : write
9188
9289 steps :
93- - uses : actions/checkout@v4
94- - name : Set up JDK 17
95- uses : actions/setup-java@v4
96- with :
97- java-version : ' 21 '
98- distribution : ' temurin'
99-
100- # Generates and submits a dependency graph, enabling Dependabot Alerts for all project dependencies.
101- # See: https://github.com/gradle/actions/blob/main/dependency-submission/README.md
102- - name : Generate and submit dependency graph
103- uses : gradle/actions/dependency-submission@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
90+ - uses : actions/checkout@v4
91+ - name : Set up JDK 17
92+ uses : actions/setup-java@v4
93+ with :
94+ java-version : " 21 "
95+ distribution : " temurin"
96+
97+ # Generates and submits a dependency graph, enabling Dependabot Alerts for all project dependencies.
98+ # See: https://github.com/gradle/actions/blob/main/dependency-submission/README.md
99+ - name : Generate and submit dependency graph
100+ uses : gradle/actions/dependency-submission@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
0 commit comments