Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: cicd-pipeline #17

Merged
merged 1 commit into from
May 20, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions .github/workflows/cogo_cicd_gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Java CI with Gradle

on:
push:
branches: [ "main" ]
branches: ["main"]
pull_request:
branches: [ "main" ]
branches: ["main"]

permissions:
contents: read
Expand All @@ -13,53 +13,76 @@ jobs:
build-docker-image:
runs-on: ubuntu-latest
steps:
# ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ฒดํฌ์•„์›ƒ
- name: Checkout repository
uses: actions/checkout@v3

# JDK 17 ์„ค์ •
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

# Convert line endings to Unix format
# ์ค„ ๋ ํ˜•์‹์„ Unix ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜
- name: Convert line endings to Unix
run: |
sudo apt-get install dos2unix
dos2unix ./gradlew

# gradlew์— ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew

# Gradle์„ ์‚ฌ์šฉํ•˜์—ฌ Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ
- name: Build with Gradle
run: ./gradlew clean bootJar

# Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ
- name: Docker image build
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver .

# Docker Hub์— ๋กœ๊ทธ์ธ
- name: Docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

# Docker ์ด๋ฏธ์ง€๋ฅผ Docker Hub์— ํ‘ธ์‹œ
- name: Docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver

run-docker-image-on-ec2:
needs: build-docker-image
runs-on: self-hosted
steps:
# Docker ์ด๋ฏธ์ง€๋ฅผ EC2์—์„œ pull
- name: Docker pull
run: sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver

# ๊ธฐ์กด cogo ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€
- name: Docker stop container
run: sudo docker stop $(sudo docker ps -q) 2>/dev/null || true
run: sudo docker stop cogo 2>/dev/null || true

# ๊ธฐ์กด cogo ์ปจํ…Œ์ด๋„ˆ ์‚ญ์ œ
- name: Docker remove container
run: sudo docker rm cogo 2>/dev/null || true

# ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
- name: Docker run new container
run: sudo docker run --name github-actions-demo --rm -d -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver
run: |
sudo docker run --name cogo --rm -d -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/cogoserver
sleep 5 # ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ๊ฐ„์„ ํ™•๋ณด
sudo docker ps -a # ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๋ชฉ๋ก ์ถœ๋ ฅ

# ์‹คํ–‰๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ๋กœ๊ทธ ํ™•์ธ
- name: Check Docker logs
run: sudo docker logs cogo || true # ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ ์ถœ๋ ฅ

# ๋ฏธ์‚ฌ์šฉ Docker ์ด๋ฏธ์ง€ ์‚ญ์ œ
- name: Delete old docker image
run: sudo docker system prune -f



Loading