Skip to content

fix: ibb 이미지 다운로드를 위한 헤더 변경 #32

fix: ibb 이미지 다운로드를 위한 헤더 변경

fix: ibb 이미지 다운로드를 위한 헤더 변경 #32

Workflow file for this run

name: Java CI/CD with Gradle & Docker
on:
push:
branches: [ "prod" ]
pull_request:
branches: [ "prod" ]
workflow_dispatch:
permissions:
contents: write # Docker 이미지 푸시 및 배포 시 사용
jobs:
CI-CD:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./
steps:
# 1) 소스 체크아웃
- uses: actions/checkout@v4
# 2) JDK 17 세팅
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'corretto'
# 3) Gradle 캐싱
- name: Gradle Caching
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# 4) Gradle 빌드
- name: Build with Gradle
run: ./gradlew build -DPROD_SERVER_URL=${{ secrets.PROD_SERVER_URL }} -Pspring.profiles.active=prod
# 5) QEMU & Buildx 세팅 (멀티 아키텍처 빌드용)
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# 6) Docker Hub 로그인
- name: Docker Login
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# 7) 멀티‑아키텍처 이미지 빌드 & 푸시
- name: Build & Push (amd64 + arm64)
if: github.ref == 'refs/heads/prod'
run: |
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:latest \
--push .
# 8) EC2 배포
- name: Deploy to prod
uses: appleboy/[email protected]
id: deploy-prod
if: contains(github.ref, 'prod')
with:
host: ${{ secrets.PROD_EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
script: |
sudo docker stop ${{ secrets.DOCKER_REPOSITORY }} || true
sudo docker rm ${{ secrets.DOCKER_REPOSITORY }} || true
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:latest
sudo docker run -d -p 8080:8080 \
-v /opt/pinpoint/agent:/opt/pinpoint:ro \
-v /opt/pinpoint/logs:/opt/pinpoint/logs \
-e SPRING_PROFILES_ACTIVE=prod \
-e PINPOINT_AGENT_ID=prod-BARO \
-e PINPOINT_APPLICATION_NAME=prod-BARO \
-e PINPOINT_COLLECTOR=${{ secrets.PINPOINT_COLLECTOR }} \
-e JAVA_TOOL_OPTIONS="-javaagent:/opt/pinpoint/pinpoint-bootstrap-3.0.3.jar \
-Dpinpoint.agentId=prod-BARO \
-Dpinpoint.applicationName=prod-BARO \
-Dpinpoint.profiler.transport.grpc.collector.ip=${{ secrets.PINPOINT_COLLECTOR }} \
-Dpinpoint.profiler.transport.grpc.agent.port=9991 \
-Dpinpoint.profiler.transport.grpc.stat.port=9992 \
-Dpinpoint.profiler.transport.grpc.span.port=9993 \
-Dprofiler.sampling.enable=true \
-Dprofiler.sampling.rate=1 \
-Dpinpoint.config=/opt/pinpoint/pinpoint-root.config" \
-e DB_HOST=${{ secrets.DB_HOST }} \
-e DB_NAME=${{ secrets.DB_NAME }} \
-e DB_PORT=${{ secrets.DB_PORT }} \
-e DB_USERNAME=${{ secrets.DB_USERNAME }} \
-e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \
-e REDIS_HOST=${{ secrets.REDIS_HOST }} \
-e REDIS_PORT=${{ secrets.REDIS_PORT }} \
-e REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }} \
-e KAKAO_AUTH_URL=${{ secrets.KAKAO_AUTH_URL }} \
-e KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }} \
-e SERVER_URL=${{ secrets.PROD_SERVER_URL }} \
-e MONGODB_USERNAME=${{ secrets.MONGODB_USERNAME }} \
-e MONGODB_PASSWORD=${{ secrets.MONGODB_PASSWORD }} \
-e MONGODB_HOST=${{ secrets.MONGODB_HOST }} \
-e MONGODB_PORT=${{ secrets.MONGODB_PORT }} \
-e MONGODB_DATABASE=${{ secrets.MONGODB_DATABASE }} \
-e MONGODB_AUTH_SOURCE=${{ secrets.MONGODB_AUTH_SOURCE }} \
-e KAFKA_HOST=${{ secrets.KAFKA_HOST }} \
-e AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} \
-e AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} \
-e AWS_S3_BUCKET=${{ secrets.AWS_S3_BUCKET }} \
-e AWS_REGION=${{ secrets.AWS_REGION }} \
-e GEMINI_API_KEY=${{ secrets.GEMINI_API_KEY }} \
--name ${{ secrets.DOCKER_REPOSITORY }} \
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:latest
sudo docker image prune -f