ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Github actions - Github pages / S3 / NodeJS Jest
    Dev 2022. 2. 5. 23:37

    * 그동안 Gituhb actions을 사용했던 예들을 정리해보았다.

    1. 리액트 앱  깃헙 페이지에 배포하기 - Github repo

    name: github pages
    
    on:
      push:
        branches:
          - client/deploy  # 현재 프로젝트에는 client와 lambda 디렉토리로 나눠져있음. client/deploy 브랜치에 푸쉬하면 실행되고, gh-pages 브랜치는 자동으로 업데이트된다.
    
    jobs:
      deploy:
        runs-on: ubuntu-18.04  # 잡을 실행하는 환경
        env:
          working-directory: ./client # client 안에 리액트 앱이 있고, 아래에서 반복해서 쓸 예정이므로 env 선언
        steps:
          - uses: actions/checkout@v2 # 코드 소스 체크아웃
    
          - name: Setup Node
            uses: actions/setup-node@v2.1.2 # 사용할 노드 버전 선택
            with:
              node-version: "12.x"
    
          - name: Cache dependencies # 패키지 캐시 
            uses: actions/cache@v2
            with:
              path: ~/.npm
              key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
              restore-keys: |
                ${{ runner.os }}-node-
          - run: npm ci # 패키지 설치(devDendencies 제외)
            working-directory: ${{ env.working-directory }}
    
          - run: npm run build
            working-directory: ${{ env.working-directory }}
            env:
              CI: false
    
          - name: Deploy  # 깃헙 페이지 빌드 기본 설정 
            uses: peaceiris/actions-gh-pages@v3
            with:
              github_token: ${{ secrets.GITHUB_TOKEN }}  # 인증
              publish_dir: ./${{ env.working-directory }}/build # 위 단계에서 npm build로 빌드된 파일 위치 설정 # gh-pages로 빌드된 파일이 올라감

    2. 리액트 앱 S3에 배포 - Github repo

    # 위와 동일한 부분은 설명 생략
    name: build
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-18.04
        steps:
          - name: Checkout source code.
            uses: actions/checkout@main
    
          - name: Cache node modules
            uses: actions/cache@v1
            with:
              path: node_modules
              key: ${{ runner.OS }}-build-${{ hashFiles('**/package-lock.json') }}
              restore-keys: |
                ${{ runner.OS }}-build-
                ${{ runner.OS }}-
          - name: Install Dependencies
            run: npm install
    
          - name: Build
            run: CI= npm run build
    
          - name: Deploy # AWS에 접근하기 위한 시크릿 키
            env:
              AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
              AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
            run: |
              aws s3 cp \
                --recursive \
                --region ap-northeast-2 \
                ./build s3://furfellas-ts.foxlee.kr # s3 버킷 주소 (s3 에 버킷 생성, 정적 웹사이트 호스팅, 퍼미션, 버킷 정책 설정 필요) )

    3. 노드 익스프레스 앱 테스트 - Github repo

    name: Node.js test
    
    on:
      push:
        branches: [main]
      pull_request:
        branches: [main]
    
    jobs:
      test:
        runs-on: ubuntu-latest
        env:
          working-directory: ./server
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Setup Node
            uses: actions/setup-node@v2.1.2
            with:
              node-version: "12.x"
    
          - name: Cache dependencies
            uses: actions/cache@v2
            with:
              path: ~/.npm
              key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
              restore-keys: |
                ${{ runner.os }}-node-
          - run: npm i
            working-directory: ${{ env.working-directory }}
          - run: npm run test
            working-directory: ${{ env.working-directory }}

    'Dev' 카테고리의 다른 글

    NGINX - PROXY - 서브도메인 설정하기  (0) 2022.02.16
    Docker compose - .env 활용하기  (0) 2022.02.08
    Github actions - AWS ECR/Lambda 자동 배포  (0) 2022.02.03
    Git commnad + commit messages  (0) 2021.07.06
    Vim  (0) 2021.07.06
Designed by Tistory.