Когато настроите CI/CD тръбопровод за вашия проект, вероятно искате да изчислите покритието на кода и да го изпратите на услуга на трета страна като Codecov.

Ще ви покажа как да настроите това в „Google Cloud Build“.

проблем

„Инструментът codecov“ трябва да се стартира от git хранилище по подразбиране, в противен случай ще изведе грешка:

fatal: Not a git repository

Причината е, че codecov е проектиран да отчита покритие за конкретен клон и да ангажира вашия код.

Тъй като „приложението Google Cloud Build GitHub“ не създава повторно пълно git хранилище, имаме нужда от заобиколно решение.

Решение

Решението е ръчно да преминете клона и да се ангажирате с инструмента:

$ codecov --token=X --disable=detect --commit=FOO --branch=BAR

Cloud Build прави този вид информация достъпна за изграждането чрез „вградени замествания“.

cloudbuild.yaml

steps: 
- name: 'gcr.io/cloud-builders/npm'  
  args: ['install'] 
- name: 'gcr.io/cloud-builders/npm'  
  args: ['run', 'ci'] 
- name: 'gcr.io/cloud-builders/npm'  
  args: 
   [
     'run', 
     'codecov',
     '--', 
     '--disable=detect', 
     '--commit=$COMMIT_SHA', 
     '--branch=$BRANCH_NAME'
   ]

package.json

{
  "devDependencies": {
    "codecov": "3.1.0", 
    "mocha": "5.2.0",
    "nyc": "13.1.0"
  },
  "scripts": {
     "ci": "NODE_ENV=test node_modules/.bin/nyc node_modules/.bin/mocha --reporter spec 'server/test/**/*test.js' && node_modules/.bin/nyc report --reporter=text-lcov > coverage.lcov",
     "codecov": "node_modules/.bin/codecov --token=X"
  }
}

Заключение

Можете да заобиколите откриването на инструмента codecov и ръчно да подадете ангажимента и разклонението на текущото изпълнение на CI.

Конфигурацията на Cloud Build е лесна за четене: тя инсталира зависимостите, изпълнява тестовете, след което качва резултатите в Codecov.

В следващата ми публикация ще ви покажа как можете да кеширате първата стъпка за по-добра производителност.