Skip to content

git actions yaml #11

@metaapple

Description

@metaapple

name: deploy

on:
  push:
    branches:
      - "main"

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      # 1. GitHub 리포 체크아웃
      - name: Checkout
        uses: actions/checkout@v4

      # 2. QEMU, Buildx 세팅 (멀티 아키텍처 빌드 대비)
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      # 3. Docker Hub 로그인
      - name: Login to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      # 4. Spring Boot 이미지 빌드 & 푸시
      - name: Build & Push Spring Boot Image
        uses: docker/build-push-action@v6
        with:
          context: ./springboot-app3
          file: ./springboot-app3/Dockerfile
          push: true
          tags: jungwonalicia/springboot3-web3:latest
          platforms: linux/amd64

      # 5. 서버 배포 경로 변수 설정
      - name: Set deploy variables
        id: vars
        run: |
          echo "DEPLOY_DIR=~/springboot3/springboot3-web3" >> $GITHUB_OUTPUT

      # 6. SSH로 EC2 접속 → docker compose 배포
      - name: Deploy via SSH (compose up)
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.EC2_HOST }}
          username: ${{ secrets.EC2_USER }}
          key: ${{ secrets.EC2_SSH_KEY }}
          port: ${{ secrets.EC2_PORT || 22 }}
          script: |
            set -e
            cd ~/springboot3

            # (Docker Hub가 비공개 레포일 때만 필요)
            if [ -n "${{ secrets.DOCKERHUB_USERNAME }}" ] && [ -n "${{ secrets.DOCKERHUB_TOKEN }}" ]; then
              echo "Docker Hub login..."
              echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin
            fi

            # 최신 이미지 pull 및 기동
            docker compose pull
            docker compose up -d

            # 상태 확인
            docker compose ps
            # 로그 확인 필요 시:
            # docker compose logs --tail=100 --no-color



Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions