-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(CI/CD) : Pull Request에 따른 테스트, 배포 파이프라인 설정.
- Loading branch information
Showing
4 changed files
with
152 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
name: Java CI with Gradle | ||
|
||
on: | ||
# after merge to main with pr | ||
pull_request: | ||
types: [opened, synchronize, reopened, closed] | ||
branches: [ "develop" ] | ||
|
||
jobs: | ||
test: | ||
if: github.action == 'opened' || github.action == 'synchronize' || github.action == 'reopened' | ||
runs-on: ubuntu-22.04 | ||
|
||
services: | ||
redis: | ||
image: redis:latest | ||
ports: | ||
- 6379:6379 | ||
|
||
permissions: | ||
contents: read | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v4 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
- name: Setup Gradle | ||
uses: gradle/actions/[email protected] | ||
|
||
- name: Test with Gradle Wrapper | ||
run: ./gradlew test | ||
env: | ||
REDIS_HOST: ${{ secrets.REDIS_HOST }} | ||
REDIS_PORT: ${{ secrets.REDIS_PORT }} | ||
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | ||
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | ||
GOOGLE_REDIRECT_URI: ${{ secrets.GOOGLE_REDIRECT_URI }} | ||
JWT_SECRET: ${{ secrets.JWT_SECRET }} | ||
|
||
build-and-deploy: | ||
if: github.action == 'closed' && github.event.pull_request.merged == true | ||
|
||
runs-on: ubuntu-22.04 | ||
permissions: | ||
contents: read | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v4 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
- name: Setup Gradle | ||
uses: gradle/actions/[email protected] | ||
|
||
- name: Build with Gradle Wrapper | ||
run: ./gradlew build -x test | ||
env: | ||
REDIS_HOST: ${{ secrets.REDIS_HOST }} | ||
REDIS_PORT: ${{ secrets.REDIS_PORT }} | ||
GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | ||
GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | ||
GOOGLE_REDIRECT_URI: ${{ secrets.GOOGLE_REDIRECT_URI }} | ||
JWT_SECRET: ${{ secrets.JWT_SECRET }} | ||
|
||
- name: Login to Docker Hub | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Build and Push Docker Image | ||
run: | | ||
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:${{ github.sha }} . | ||
docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:${{ github.sha }} | ||
- name: Modify docker-compose.dev.yaml | ||
run: | | ||
sed -i "s|REPLACE_IMAGE_TAG|${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:${{ github.sha }}|g" docker-compose.dev.yaml | ||
- name: Send script to remote server | ||
uses: appleboy/scp-action@master | ||
with: | ||
host: ${{ secrets.REMOTE_HOST }} | ||
username: ${{ secrets.REMOTE_USERNAME }} | ||
key: ${{ secrets.SSH_PRIVATE_KEY }} | ||
source: "docker-compose.dev.yaml,script/deploy.sh" | ||
target: /home/${{ secrets.REMOTE_USERNAME }}/gdsc-project | ||
|
||
- name: SSH to remote server and run docker-compose | ||
uses: appleboy/ssh-action@master | ||
with: | ||
host: ${{ secrets.REMOTE_HOST }} | ||
username: ${{ secrets.REMOTE_USERNAME }} | ||
key: ${{ secrets.SSH_PRIVATE_KEY }} | ||
script: | | ||
cd /home/${{ secrets.REMOTE_USERNAME }}/gdsc-project/script | ||
chmod +x deploy.sh | ||
./deploy.sh | ||
dependency-submission: | ||
if: github.action == 'closed' && github.event.pull_request.merged == true | ||
|
||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v4 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
# Generates and submits a dependency graph, enabling Dependabot Alerts for all project dependencies. | ||
# See: https://github.com/gradle/actions/blob/main/dependency-submission/README.md | ||
- name: Generate and submit dependency graph | ||
uses: gradle/actions/dependency-submission@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
FROM amd64/amazoncorretto:17 | ||
WORKDIR /usr/src/app | ||
ARG JAR_FILE=build/libs/*.jar | ||
COPY ${JAR_FILE} app.jar | ||
ENTRYPOINT ["java", "-Duser.timezone=Asia/Seoul", "-jar", "app.jar"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
version: '3' | ||
services: | ||
gradingx-redis: | ||
image: redis:latest | ||
container_name: redis | ||
hostname: redis | ||
ports: | ||
- "6379:6379" | ||
|
||
gradingx-server: | ||
image: REPLACE_IMAGE_TAG | ||
ports: | ||
- "8080:8080" | ||
depends_on: | ||
- gradingx-redis |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#!/bin/bash | ||
|
||
cd .. | ||
|
||
docker-compose -f docker-compose.dev.yaml up --build -d | ||
|
||
docker-compose ps |