github-actions-cicd (3 серии деталей)
Это последующая статья для настройки CI с использованием действий GitHub. Убедитесь, что вы проверили Предыдущая статья первый.
Сегодня давайте сосредоточимся на тестовом покрытии. В конце этой статьи в Readme вашего проекта будет один дополнительный значок, как этот:
Кроме того, результаты покрытия будут добавлены в PRS в качестве комментария.
Предварительные условия
Чтобы сохранить результаты покрытия и для PR -волшебства выше, мы используем инструмент под названием Coiplls Анкет Обязательно подключите свою учетную запись GitHub с ней. В разделе «Добавить репо» добавьте хранилище, которое вы хотите включить.
Обратите внимание, что с помощью свободного уровня репозиторий должен быть публичным.
Добавление сценария тестового покрытия
Если вы используете Jest для запуска своих тестов, вы можете запустить шутка -Coverage
Чтобы создать отчет о покрытии. В моем случае я использую Japa который не поставляется с собственной системой тестового покрытия.
Итак, вместо этого давайте воспользуемся Нью -Йорк , Стамбул CLI.
Мы просто добавляем дополнительный сценарий в нашу package.json:
До
"scripts": { "test": "node japaFile.js" }
После
"scripts": { "test": "node japaFile.js", "coverage": "nyc --reporter=lcov npm test" }
-reporter = lcov
означает, что он создаст ./coverage/lcov.info
Чтобы сохранить результаты покрытия. Нам нужно только результаты на конвейере CI, только если вы запустите эту команду локально, вы можете безопасно Gitignore или снова удалить результаты.
Чтобы увидеть результаты покрытия непосредственно в терминале, временно удалите -reporter = lcov
и бежать NPM RUN RENCOMPAGE
Анкет
Добавление тестового покрытия в наш трубопровод CI
Теперь все, что осталось, — это добавить немного к ci.yml
Файл, который мы создали в предыдущей статье.
Во -первых, давайте заменим
run: npm test
с
run: npm run coverage
Теперь это создаст отчеты о покрытии, когда мы запустим трубопровод. Наконец, давайте отправим отчеты в Coverlls. По соглашению, это будет искать ./coverage/lcov.info
, который был создан NPM RUN RENCOMPAGE
сценарий
Добавьте этот дополнительный шаг в файл YML:
# Send coverage report to Coveralls - name: Coveralls uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }}
Мы используем действие GitHub Covalls, которое можно найти Здесь Анкет
Обратите внимание, что github_token автоматически передается и не должен быть настроен вами каким -либо образом. Поскольку наша учетная запись GitHub связана с Coivalls, также не требуется дополнительной настройки, необходимой для аутентификации вашей учетной записи Coivalls.
В целом, наш ci.yml
Файл выглядит так:
# This workflow will do a clean install of node dependencies, build the source code and run tests # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: CI Pipeline # trigger build when pushing, or when creating a pull request on: [push, pull_request] jobs: build: # run build on latest ubuntu runs-on: ubuntu-latest steps: # this will check out the current branch (https://github.com/actions/checkout#Push-a-commit-using-the-built-in-token) - uses: actions/checkout@v2 # installing Node - name: Use Node.js 12.x uses: actions/setup-node@v1 with: # this will use the latest Node 12 version node-version: 12.x # install dependencies using clean install to avoid package lock updates - run: npm ci # build the project if necessary - run: npm run build --if-present # finally run the tests - run: npm run coverage # Save coverage report in Coveralls - name: Coveralls uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }}
Теперь нажмите кнопку, посмотрите на сборку, проверьте результаты в Coiplls, возьмите свой значок, добавьте его в свой Readme.
А -и это все, что нужно. Теперь все, что осталось, — это настройка рабочего процесса компакт -диска Таким образом, мы можем автоматически публиковать в NPM. Проверьте мой гид для этого Здесь Анкет
github-actions-cicd (3 серии деталей)
Оригинал: «https://dev.to/michi/github-actions-setting-up-test-coverage-for-a-js-ts-node-project-1baf»