Skip to content

๐Ÿšจ [HOTFIX] QA ๋„์ค‘ ๋ฌธ์ œ ์ƒ๊ธฐ๋Š” ๋ถ€๋ถ„ ๋กœ๊ทธ ์ฐ์–ด๋ณด๊ธฐ #61

๐Ÿšจ [HOTFIX] QA ๋„์ค‘ ๋ฌธ์ œ ์ƒ๊ธฐ๋Š” ๋ถ€๋ถ„ ๋กœ๊ทธ ์ฐ์–ด๋ณด๊ธฐ

๐Ÿšจ [HOTFIX] QA ๋„์ค‘ ๋ฌธ์ œ ์ƒ๊ธฐ๋Š” ๋ถ€๋ถ„ ๋กœ๊ทธ ์ฐ์–ด๋ณด๊ธฐ #61

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