[CI/CD]簡易テスト

12626 ワード

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にはチャンネル権限が必要です)

プッシュするたびにロボットと基本動作をチェックします




buildとtestの分割


今.
  • 各フェーズは独立しています.
  • 私を帰らせたいなら
    需要オプションの設定
      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検索
    ->dashboardの取得->createnewapp->Github action Heroku pluginのapiキーの使用
    作成
    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-[email protected]
            with:
              heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
              heroku_email: "[email protected]"
              heroku_app_name: "elice-elice-cd"

    成功