Когда вы настраиваете конвейер CI / CD для своего проекта, вы, вероятно, захотите рассчитать покрытие кода и отправить его в сторонний сервис, такой как Codecov.
Я собираюсь показать вам, как настроить это в Google Cloud Build.
Проблема
Инструмент codecov по умолчанию должен запускаться из репозитория git, иначе он выдаст ошибку:
fatal: Not a git repository
Причина в том, что codecov предназначен для отчета о покрытии для конкретной ветки и фиксации вашего кода.
Поскольку приложение Google Cloud Build GitHub App не воссоздает полный репозиторий 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.
В моем следующем посте я покажу вам, как можно кэшировать первый шаг для повышения производительности.