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
setting-webhooks에서 추가
(그전에 discord에서 채널 권한이 있어야함)
현재는
이어서 돌아가게 하려면
needs 옵션 설정
test:
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
steps:
- run: npm test
각각의 돌아가는 동작은 다른 컨테이너에서 동작하기 때문
아래와 같이 내용을 추가
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
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"