Я пытаюсь выяснить, как загрузить свои отчеты о покрытии шутливого кода в codecov. Оттуда документация :
bash <(curl -s https://codecov.io/bash) -t token
Поэтому я попытался запустить сценарий bash из этапа построения облака с помощью следующего cloudbuild.yaml
steps:
- name: node:10.15.1
entrypoint: npm
args: ["install"]
- name: node:10.15.1
entrypoint: npm
args: ["test", "--", "--coverage"]
- name: 'gcr.io/cloud-builders/curl'
entrypoint: bash
args: ['<(curl -s https://codecov.io/bash)', '-t', '$_CODECOV_TOKEN']
- name: node:10.15.1
entrypoint: npm
args: ["run", "build:production"]
I получить следующую ошибку:
Step #2: bash: <(curl -s https://codecov.io/bash): No such file or directory
Очевидно, что <(curl -s https://codecov.io/bash)
интерпретируется как строка, а я хочу, чтобы она была выполнена.
Редактировать:
Я изменил свой шаг сборки следующим образом:
- name: "gcr.io/cloud-builders/curl"
entrypoint: bash
args: ["./scripts/codecov-upload.bash", "$_CODECOV_TOKEN"]
И добавил файл codecov-upload.bash
bash <(curl -s https://codecov.io/bash) -t $1
При запуске моего облака успешно соберите загрузчик кодеков bash начинается. Однако мне не удается загрузить отчеты в clodecov.
Вот записи из codecov bash Uploader:
Step #2: Test Suites: 1 passed, 1 total
Step #2: Tests: 1 passed, 1 total
Step #2: Snapshots: 1 passed, 1 total
Step #2: Time: 28.981s
Step #2: Ran all test suites.
Finished Step #2
Starting Step #3
Step #3: Already have image (with digest): gcr.io/cloud-builders/curl
Step #3: /dev/fd/63: option requires an argument -- t
Step #3:
Step #3: _____ _
Step #3: / ____| | |
Step #3: | | ___ __| | ___ ___ _____ __
Step #3: | | / _ \ / _` |/ _ \/ __/ _ \ \ / /
Step #3: | |___| (_) | (_| | __/ (_| (_) \ V /
Step #3: \_____\___/ \__,_|\___|\___\___/ \_/
Step #3: Bash-tbd
Step #3:
Step #3:
Step #3: x> No CI provider detected.
Step #3: Testing inside Docker? http://docs.codecov.io/docs/testing-with-docker
Step #3: Testing with Tox? https://docs.codecov.io/docs/python#section-testing-with-tox
Step #3: project root: .
Step #3: /dev/fd/63: line 897: git: command not found
Step #3: /dev/fd/63: line 897: hg: command not found
Step #3: Yaml not found, that's ok! Learn more at http://docs.codecov.io/docs/codecov-yaml
Step #3: ==> Running gcov in . (disable via -X gcov)
Step #3: ==> Python coveragepy not found
Step #3: ==> Searching for coverage reports in:
Step #3: + .
Step #3: -> Found 3 reports
Step #3: ==> Detecting git/mercurial file structure
Step #3: ==> Reading reports
Step #3: + ./coverage/clover.xml bytes=163786
Step #3: + ./coverage/coverage-final.json bytes=444241
Step #3: + ./coverage/lcov.info bytes=71582
Step #3: ==> Appending adjustments
Step #3: http://docs.codecov.io/docs/fixing-reports
Step #3: + Found adjustments
Step #3: ==> Gzipping contents
Step #3: ==> Uploading reports
Step #3: url: https://codecov.io
Step #3: query: branch=&commit=&build=&build_url=&name=&tag=&slug=&service=&flags=&pr=&job=
Step #3: -> Pinging Codecov
Step #3: https://codecov.io/upload/v4?package=bash-tbd&token=secret&branch=&commit=&build=&build_url=&name=&tag=&slug=&service=&flags=&pr=&job=
Step #3: -> Uploading
Step #3: X> Failed to upload
Step #3: -> Sleeping for 30s and trying again...
Step #3: -> Pinging Codecov
Step #3: https://codecov.io/upload/v4?package=bash-tbd&token=secret&branch=&commit=&build=&build_url=&name=&tag=&slug=&service=&flags=&pr=&job=
Step #3: -> Uploading
Step #3: X> Failed to upload
Step #3: -> Sleeping for 30s and trying again...
Step #3: -> Pinging Codecov
Step #3: https://codecov.io/upload/v4?package=bash-tbd&token=secret&branch=&commit=&build=&build_url=&name=&tag=&slug=&service=&flags=&pr=&job=
Step #3: -> Uploading
Step #3: X> Failed to upload
Step #3: -> Sleeping for 30s and trying again...
Step #3: -> Pinging Codecov
Step #3: https://codecov.io/upload/v4?package=bash-tbd&token=secret&branch=&commit=&build=&build_url=&name=&tag=&slug=&service=&flags=&pr=&job=
Step #3: -> Uploading
Step #3: X> Failed to upload
Step #3: -> Sleeping for 30s and trying again...
Step #3: -> Uploading to Codecov
Step #3: HTTP 400
Step #3: missing required properties: ['commit']
Finished Step #3
Starting Step #4
Step #4: Already have image: node:10.15.1
Step #4:
Я заметил две вещи в журналах:
1. Step #3: /dev/fd/63: option requires an argument -- t
2. Step #3: missing required properties: ['commit']
При поиске исправления № 2 я обнаружил в SO следующее: codecov.io выдает ошибку в сочетании с конвейерами Bitbucket
Там, где ответ кажется к этому git не установлено в моем контейнере.
Поэтому я попытался создать пользовательский образ контейнера с помощью docker:
Dockerfile:
FROM gcr.io/cloud-builders/curl
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git
Итак, я создаю образ:
build -t "gcr.io/[PROJECT_ID]/builder .
И обновляю свой шаг сборки, чтобы использовать вместо этого образ:
- name: "gcr.io/$PROJECT_ID/builder" точка входа: bash args: ["./scripts/codecov-upload.bash"]
Но использование изображения, созданного с помощью этого файла dockerfile, возвращает те же ошибки.
Возможно, Dockerfile для этого пользовательского изображения не правильный? Или я что-то упускаю?
Мой код доступен на github: https://github.com/thdk/timesheets/tree/feat/112-1