Skip to content

🎨 Linting Complete #15

🎨 Linting Complete

🎨 Linting Complete #15

Workflow file for this run

# github repository actions 페이지에 나타날 이름
name: CI/CD Pipeline
# event trigger
# main이나 develop 브랜치에 push가 되었을 때 실행
on:
push:
branches:
- "main"
- "feat/*"
pull_request:
branches:
- "main"
- "feat/*"
permissions:
contents: read
jobs:
CI:
runs-on: ubuntu-latest
steps:
# JDK setting - github actions에서 사용할 JDK 설정 (프로젝트나 AWS의 java 버전과 달라도 무방)
- uses: actions/checkout@v4
- name: Set up JDK 17 and Eclipse Temurin
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# gradlew에 실행 권한 부여
- name: Grant execute permission for gradlew
run: chmod +x gradlew
# 린트 체크 실행
- name: Lint Check
run: ./gradlew ktlintCheck
# gradle build
- name: Build with Gradle
run: ./gradlew build
# Docker 로그인
- name: Docker login
if: contains(github.ref, 'main')
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
# Docker 이미지 빌드 및 푸시
- name: Docker build & push
if: contains(github.ref, 'main')
run: |
docker build -f ./Dockerfile -t ${{ secrets.DOCKER_USERNAME }}/karrot .
docker push ${{ secrets.DOCKER_USERNAME }}/karrot
# AccessToken 발급시
- name: Run Application with JWT Secret Key
env:
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
run: |
echo "Starting application with JWT Secret Key..."
./gradlew run
CD:
runs-on: ubuntu-latest
needs: CI
if: contains(github.ref, 'main')
steps:
# 다시 checkout
- name: Checkout again
uses: actions/checkout@v3
# EC2에 배포
- name: Deploy to prod
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST_PROD }} # EC2 퍼블릭 IPv4 DNS
username: ubuntu
key: ${{ secrets.PRIVATE_KEY }}
envs: GITHUB_SHA
script: |
sudo docker ps
sudo docker stop $(sudo docker ps -q)
sudo docker rm $(sudo docker ps -aq)
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/karrot
sudo docker run -d -p 8080:8080 ${{ secrets.DOCKER_USERNAME }}/karrot
sudo docker image prune -f