TreeNut-KR / ChatBot

ChatBot 웹사이트 프로젝트
GNU General Public License v3.0
1 stars 0 forks source link

CICD 구성 방안 #4

Open CutTheWire opened 4 months ago

CutTheWire commented 4 months ago
  1. 서버를 도커를 통해 로컬에서 사용, 배포만을 AWS를 사용하여 배포 구성, 검증은 깃 액션을 사용.
  2. 서버, 배포 모두 AWS를 사용하여 구성, 검증은 깃 액션을 사용.
CutTheWire commented 3 months ago
name: Build and Push Docker Images

on:
  push:
    tags:
      - 'v*'  # 'v'로 시작하는 태그에 대해 작업을 실행합니다.

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

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

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

      - name: Log in to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Log in to GitHub Container Registry
        uses: docker/login-action@v2
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.TREENUT }}

      - name: Install Node.js and build react-frontpage
        run: |
          cd nginx/react-frontpage
          npm install
          npm run build
        env:
          NODE_VERSION: '20'  # Node.js 버전은 20이상을 사용

      - name: Create .env files for Docker build
        run: |
          # Root .env 파일 생성
          echo "${{ secrets.DOCKER_ENV }}" > .env

          # MongoDB 관련 .env 파일 생성
          mkdir -p mongo
          echo "${{ secrets.MONGO_ENV }}" > ./mongo/.env

          # FastAPI 관련 .env 파일 생성
          mkdir -p fastapi/sources
          echo "${{ secrets.FASTAPI_ENV }}" > ./fastapi/sources/.env

      - name: Build and push Nginx image
        uses: docker/build-push-action@v3
        with:
          context: ./nginx
          push: true
          tags: |
            ghcr.io/treenut-kr/nginx:latest
            ghcr.io/treenut-kr/nginx:${{ github.ref_name }}

      - name: Build and push FastAPI image
        uses: docker/build-push-action@v3
        with:
          context: ./fastapi
          push: true
          tags: |
            ghcr.io/treenut-kr/fastapi:latest
            ghcr.io/treenut-kr/fastapi:${{ github.ref_name }}

      - name: Build and push MySQL image
        uses: docker/build-push-action@v3
        with:
          context: ./mysql
          push: true
          tags: |
            ghcr.io/treenut-kr/mysql:latest
            ghcr.io/treenut-kr/mysql:${{ github.ref_name }}

      - name: Build and push MongoDB image
        uses: docker/build-push-action@v3 
        with:
          context: ./mongo
          push: true
          tags: |
            ghcr.io/treenut-kr/mongodb:latest
            ghcr.io/treenut-kr/mongodb:${{ github.ref_name }}