프라이D
프라이Develog(❁´◡`❁)
프라이D
전체 방문자
오늘
어제
  • ALL (378)
    • TDD, Cleancode with JavaScr.. (5)
    • 프로젝트 (32)
      • work (3)
      • 직접 만드는 기술 블로그 (2)
      • 데일리 옥션 (19)
      • 모락모락 (8)
    • Computer Science (1)
    • Algorithm & 자료구조 (94)
      • 알고리즘 w.JavaScript (53)
      • 자료구조 (5)
      • (인프런) 자바스크립트 알고리즘 문제풀이 (34)
    • JavaScript (45)
      • JavaScript (41)
      • 모던 자바스크립트 Deep Dive (4)
    • WEB (13)
    • 회고 (12)
    • TIL (109)
    • WIL (7)
    • Stacks (20)
      • React.js (6)
      • Next.js (1)
      • Redux (3)
      • Node.js (2)
      • GIT (2)
      • SAP (1)
    • 15일 메이킹 프로젝트 (15)
    • 이전 기록 (14)
    • ETC. (5)
    • ---------------2021 (6)
      • 내일배움단-웹개발 5주 (2)
      • 정보처리기사 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 모던자바스크립트딥다이브
  • 자바스크립트비트마스크
  • 내일배움카드
  • 자바스크립트알고리즘
  • Til
  • 2023 인프콘 후기
  • 스파르타코딩클럽
  • 투포인터알고리즘
  • 코딩프로젝트
  • nomadcoder
  • 코드스테이츠
  • 알고리즘
  • JavaScript
  • vanilaJS
  • 비트마스크
  • 내일배움단
  • 국비지원
  • nomadcoders
  • MySQL
  • 자바스크립트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
프라이D

프라이Develog(❁´◡`❁)

WEB

Github Action 으로 S3 버킷 배포하기

2022. 10. 12. 16:41

Github Action 이란?

Github이 공식 제공하는 빌드, 테스트, 배포 파이프라인 자동화를 위한 CI/CD 플랫폼이다.

어떤 이벤트가 발생했을 때 수행될 워크플로우를 .github/workflows 디렉토리에 <workflow 설명.yml> 형식으로 저장한다. 

yaml 이란?

Yel Another Markup Language 의 약자로, 사람이 읽을 수 있는 데이터 직렬화 언어이다. JSON의 상위 격인 언어로 key : value의 계층 구조로 이루어진다. key : value 에서 value는 반드시 따옴표로 감싸야 한다.

| 기호는 줄바꿈, > 기호는 줄무시를 의미한다. 

간단한 예시

# Workflow 이름
name: Workflow Name

# 해당 workflow 의 실행을 위한 이벤트 등록 
# 현재는 push,와 pr 이 실행되었을 때 이 워크플로우가 실행된다.
on: [push, pull_request]

# 이벤트가 발생했을 때 어떤 일을 할 것인지 지정한다.
jobs:

  # job 의 이름은 test 이다. 
  test:
	# 아래 내용을 어디서 실행할 것인지 결정 (현재는 우분투 최신버전)
    runs-on: ubuntu-latest
	# 아래 step 을 따라서 test job을 수행한다. 
    steps:
      - uses: actions/checkout@v2
      - name: Bare Minimum Requirements
        uses: actions/setup-node@v1
        with:
          node-version: '16'
      - run: npm install
      - run: npm test

 

Github Action은 크게 5가지 부분으로 구분할 수 있다. 

  • Event : 작업이 수행될 트리거를 의미한다.
  • Workflow :  이벤트가 수행되면 실행될 작업의 모음이다.
  • Job : Workflow 안에서 수행되어야 하는 일련의 작업들이다. 기본 병렬적으로 수행하고, 순착적으로 수행되어야 한다면 순서를 지정할 수 있다.
  • Action : Job 수행하기 위해 미리 정해진 명령어
  • Runner : Job을 실행하는 것으로 VM 머신 혹은 Docker 컨테이너가 된다.
# .github/workflows/client.yml
name: client
on:
  push:
  # 이벤트를 감지할 브랜치
    branches:
      - reference
jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
      # Source 단계
      - name: Checkout source code.
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
        working-directory: ./my-agora-states-client
        
        # Build 단계 
      - name: Build
        run: npm run build
        working-directory: ./my-agora-states-client
        
      - name: SHOW AWS CLI VERSION
        run: aws --version
          
        # S3 Bucket 배포 단계 
      - name: Sync Bucket
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_EC2_METADATA_DISABLED: true
          
         # AWS CLI 명령어를 입력한다.
        run: |
          aws s3 sync \
            --region ap-northeast-2 \
            build s3://My-Bucket-Name \ # 빌드 폴더 이름 s3 ://버킷이름
            --delete
        working-directory: ./my-agora-states-client

AWS S3 접근을 위한 AWS 시크릿 ID 와 KEY 는 github의 Settings > Security > Actions 의 New repository secret으로 등록하여 위와 같이 접근하도록 한다. 절대 외부에 노출되면 안된다! 

저작자표시 (새창열림)

'WEB' 카테고리의 다른 글

[Web] Next.js 로 PWA(Progressive Web App)를 적용해보자!  (0) 2023.05.30
Lighthouse 활용해보기  (0) 2022.10.07
프론트엔드에서의 최적화 방법  (0) 2022.10.07
CSR 과 SSR 알아보기! 부제 : 브라우저 렌더링은 서로 다르게 일어나는가?  (1) 2022.10.04
Webpack 으로 번들링을 해보자!  (0) 2022.09.26
    'WEB' 카테고리의 다른 글
    • [Web] Next.js 로 PWA(Progressive Web App)를 적용해보자!
    • Lighthouse 활용해보기
    • 프론트엔드에서의 최적화 방법
    • CSR 과 SSR 알아보기! 부제 : 브라우저 렌더링은 서로 다르게 일어나는가?
    프라이D
    프라이D
    틀린내용 정정 및 개선사항은 언제든지 댓글 달아주세요 :D

    티스토리툴바