Skip to content

🚨 [HOTFIX] κ²Œμ‹œκΈ€ μ‚­μ œμ‹œ κ΄€λ ¨ μ±„νŒ… λͺ¨λ‘ μ‚­μ œλ˜λ„λ‘ λ³€κ²½ #64

🚨 [HOTFIX] κ²Œμ‹œκΈ€ μ‚­μ œμ‹œ κ΄€λ ¨ μ±„νŒ… λͺ¨λ‘ μ‚­μ œλ˜λ„λ‘ λ³€κ²½

🚨 [HOTFIX] κ²Œμ‹œκΈ€ μ‚­μ œμ‹œ κ΄€λ ¨ μ±„νŒ… λͺ¨λ‘ μ‚­μ œλ˜λ„λ‘ λ³€κ²½ #64

name: CI/CD using github actions & docker
on:
push:
branches: [ "dev" ]
permissions:
contents: read
jobs:
CI-CD:
runs-on: ubuntu-latest
steps:
# 1. 리포지토리 μ½”λ“œ 체크아웃
- uses: actions/checkout@v3
# 2. JDK 17 μ„ΈνŒ… (λΉŒλ“œλ₯Ό μœ„ν•΄)
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
# 3. Gradle Caching
- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# 4. application.yml 파일 생성
- name: make application.yml
run: |
mkdir -p ./src/main/resources
cd ./src/main/resources
touch application.yml
echo "${{ secrets.YML }}" > application.yml
shell: bash
# 5. Gradle λΉŒλ“œ (ν…ŒμŠ€νŠΈ μ œμ™Έ)
- name: Build with Gradle
run: ./gradlew build -x test
# 6. Set up Docker Buildx
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
# 7. Set up QEMU for multi-platform
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: all
# 8. Docker 둜그인
- name: Docker Login
run: echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
# 9. Docker 이미지 λΉŒλ“œ & ν‘Έμ‹œ (multi-platform)
- name: Docker build & push
run: |
docker buildx build \
--platform linux/amd64 \
--push \
-t ${{ secrets.DOCKER_USERNAME }}/with-suhyeon .
# 10. 원격 μ„œλ²„ 배포
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST_PROD }}
username: root
key: ${{ secrets.PRIVATE_KEY }}
script: |
cd /root/with-suhyeon # docker-compose.yml 파일이 μžˆλŠ” 폴더
# 1) ν˜Ήμ‹œ 싀행쀑인 μ»¨ν…Œμ΄λ„ˆ 있으면 μ’…λ£Œ
docker-compose down
# 2) μ΅œμ‹  이미지 pull
docker-compose pull
# 3) λ°±κ·ΈλΌμš΄λ“œ μ‹€ν–‰
docker-compose up -d --remove-orphans
# 4) ν•„μš” μ‹œ μ‚¬μš© μ•ˆ ν•˜λŠ” 이미지 정리
docker image prune -f