Github Actions으로 CICD 구축하기 (3) - React 빌드 파일 배포

2024. 9. 3. 10:04·Devops/CICD
반응형

System Architecture

 

 

 

Github Secrets 설정

  1. GitHub 리포지토리에서 Settings로 이동
  2. 좌측 메뉴에서 Secrets and variables > Actions를 클릭
  3. New repository secret 버튼을 클릭
  4. Secrets 추가
    • secret명은 특수문자 포함 불가능
    • workflow에서 secrets. 으로 불러옴 (secrets.DOCKER_REPO)
    • 추가해야할 내용들
      • ENV : .env에 들어갈 내용
      • HOST_PROD : EC2 퍼블릭 IPv4 DNS
      • PRIVATE_KEY : EC2 서버 접속 key. (key는 .pem 형식이어야 한다.)

workflow 작성

on:
  push:
    branches: [ "develop", "main"]
  pull_request:
    branches: [ "develop", "main"]

jobs:
  deploy:
    runs-on: ubuntu-latest

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

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '20'

      - name: Cache node modules
        uses: actions/cache@v3
        id: cache
        with:
          path: node_modules
          key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.OS }}-node-

      - name: Install Dependencies
        if: steps.cache.outputs.cache-hit != 'true'
        run: npm ci

      - name: Create .env file
        run: |
          echo "${{ secrets.ENV }}" > .env

      - name: Build React App
        run: npm run build
        env:
          CI: false

      # 빌드한 파일 tar파일로 묶기
      - name: Package Application
        run: tar -czvf build.tar.gz -C build .

      # EC2서버에 빌드파일 전송
      - name: Transfer build to EC2
        uses: appleboy/scp-action@master
        if: contains(github.ref, 'main')
        with:
          host: ${{ secrets.HOST }}
          username: ubuntu
          key: ${{ secrets.SSH_KEY }}
          source: build.tar.gz
          target: /tmp

      # 빌드파일 배포 (기존에 있던 배포 파일을 지우고 tar 풀고 배포 폴더에 이동시키기)
      - name: Deploy to /var/www/html
        uses: appleboy/ssh-action@master
        if: contains(github.ref, 'main')
        with:
          host: ${{ secrets.HOST_PROD }}
          username: ubuntu
          key: ${{ secrets.PRIVATE_KEY }}
          script: |
            sudo rm -rf /var/www/html/*
            sudo tar -xzvf /tmp/build.tar.gz -C /var/www/html
            sudo rm /tmp/build.tar.gz
  • npm ci
    npm install 과 같이 package-lock.json의 파일을 사용해서 패키지 설치. ci 환경을 위해 설계된 명령어로 Npm install 보다 빠름. 로컬환경에서 작업할 때는 적합하진 않음.
  • CI: false
    경고(warnings)를 오류(errors)로 간주하지 않도록 하는 역할 특히 eslint 경고와 같은 문제로 인해 빌드가 실패하는 것을 방지

 

728x90
반응형

'Devops > CICD' 카테고리의 다른 글

Github Actions으로 CICD 구축하기 (2) - Spring boot, Docker  (0) 2024.08.24
Github Actions으로 CICD 구축하기 (1) - 시스템 아키텍처와 필요한 개념 정리  (0) 2024.08.24
'Devops/CICD' 카테고리의 다른 글
  • Github Actions으로 CICD 구축하기 (2) - Spring boot, Docker
  • Github Actions으로 CICD 구축하기 (1) - 시스템 아키텍처와 필요한 개념 정리
settong
settong
    250x250
  • settong
    개 발 자 국
    settong
  • 전체
    오늘
    어제
    • 전체보기 (202)
      • Computer Science (50)
        • Network (7)
        • Operating System (18)
        • Data Structure (9)
        • Database (11)
        • Algorithm (5)
      • Language (17)
        • Java (17)
        • Javascript (0)
        • Python (0)
      • Devops (20)
        • AWS (0)
        • Naver Cloud (16)
        • CICD (3)
        • 웹 서버 관리 (1)
      • Front (0)
        • React (0)
      • Backend (5)
        • Spring (5)
      • 코딩 테스트 정복기 (110)
        • 백준 (51)
        • 프로그래머스 (53)
        • 기타 (6)
      • etc (0)
      • 경제 상식 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백트래킹
    벨만포드
    프로그래머스
    백준
    ncp202
    Network
    완전탐색
    해시
    BFS
    Spring Boot
    CI/CD
    ncp
    집합
    ncp200
    DFS
    github actions
    lcs
    분할정복
    다이나믹프로그래밍
    다익스트라
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
settong
Github Actions으로 CICD 구축하기 (3) - React 빌드 파일 배포
상단으로

티스토리툴바