[CI/CD] 간단한 테스트

jiseong·2022년 1월 20일
0

T I Learned

목록 보기
173/291

yml 설정

Actions탭에 유용한 플러그인들이 존재

# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: test-CI
# 이름. 이후에 CI가 동작하는 과정에서 이름으로 뜸.
on: # 어떤 경우에 아래 동작을 시행할 것인가?
  push: # 코드를 push 할 때랑
    branches: [ main ]
  pull_request: # Merge Request가 날라올 때 쓴다
    branches: [ main ]

jobs: # 실제 돌아갈 동작
  build:

    runs-on: ubuntu-latest # 우분투 최신 버전으로 아래 명령어들을 돌린다.

    strategy: # 매개변수 이름을 지울 때 주로 씀..
      matrix:
        node-version: [12.x, 14.x, 16.x]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps: # 돌아가는 동작들은 여기서 수행.
    # -는 각각의 동작을 의미
    - uses: actions/checkout@v2 # 플러그인 사용.
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

Discord 봇과 연결

setting-webhooks에서 추가
(그전에 discord에서 채널 권한이 있어야함)

push 할 때마다 봇과 기본적인 동작 확인

build와 test 나누기

현재는

  • 각각의 단계는 모두 독립적으로 돌아감.

이어서 돌아가게 하려면
needs 옵션 설정

  test:
    runs-on: ubuntu-latest
    needs: build
    strategy:
      matrix:
        node-version: [12.x, 14.x, 16.x]
    
    steps:
    - run: npm test

  • 파일을 찾지 못하는 오류 발생 ( 🚫 중요 )
    npm ERR! enoent ENOENT: no such file or directory, open '/home/runner/work/CI-CD-test/CI-CD-test/package.json'

각각의 돌아가는 동작은 다른 컨테이너에서 동작하기 때문
아래와 같이 내용을 추가

  test:
    runs-on: ubuntu-latest
    needs: build
    strategy:
      matrix:
        node-version: [12.x, 14.x, 16.x]
    
    steps:
    - uses: actions/checkout@v2 # 플러그인 사용.
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: npm ci
    - run: npm test

의존성을 매번 받기가 귀찮고 복잡해질것같다.

당연히 방법은 존재
Hint: actions/cache, actions/upload-artifacts, actions/download-artifacts

이제 CD까지

github < - > HEROKU로 테스트

HEROKU 가입완료

만든 빈 yml 파일에서 수정버튼 클릭 후
플러그인을 사용

Deploy to Heroku 검색

-> 대쉬보드 -> create new app -> Deployment method (Github action heroku plugin를 이용) api key 가져오기

이제 작성
Heroku Key는 secrets 탭을 이용해서 숨기기

name: test-CD

on: 
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test-and-deploy:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: "14"
      - name: Install Dependencies
        run: npm ci
      - name: Run Tests
        run: npm test
      - name: Deploy to Heroku
        uses: AkhileshNS/heroku-deploy@v3.12.12
        with:
          heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
          heroku_email: "erangerang15@gmail.com"
          heroku_app_name: "elice-elice-cd"

성공

0개의 댓글