gpt4 book ai didi

docker - 在谷歌云构建期间将 jest 代码覆盖率结果上传到 codecov

转载 作者:行者123 更新时间:2023-12-02 18:45:48 29 4
gpt4 key购买 nike

我正在尝试弄清楚如何将我的 jest 代码覆盖率报告上传到 codecov。从那里documentation :

bash <(curl -s https://codecov.io/bash) -t token

所以我尝试使用以下 cloudbuild.yaml 从云构建步骤运行 bash 脚本

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"]

我收到以下错误:

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

当运行我的云构建时,codecov bash uploader 成功启动。但是,我无法将报告上传到 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: [&#39;commit&#39;]
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: [&#39;commit&#39;]

在搜索修复数字 2 时,我在 SO 上发现了以下内容: codecov.io gives error in combination with Bitbucket pipelines

答案似乎是我的容器中没有安装 git。

所以我尝试用 docker 制作一个自定义容器镜像:

docker 文件:

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 .

并更新我的构建步骤以改为使用此图像:

  • 名称:“gcr.io/$PROJECT_ID/builder”入口点:bashargs: ["./scripts/codecov-upload.bash"]

但是使用通过该 dockerfile 创建的图像会返回相同的错误。

也许该自定义图像的 Dockerfile 不正确?或者我还缺少其他东西?

我的代码在 github 上可用:https://github.com/thdk/timesheets/tree/feat/112-1

最佳答案

answer from Ajordat之后, an answer on the community of codecov并查看 source code of the codecov batch uploader我发现 bash uploader 需要一些环境变量才能工作。

我在 cloudbuild.yaml 中更改了构建步骤包括环境变量。这些值包含在 default substition variables from google cloud build 中.

- name: 'gcr.io/cloud-builders/curl'
entrypoint: bash
args: ['-c', 'bash <(curl -s https://codecov.io/bash)']
env:
- 'VCS_COMMIT_ID=$COMMIT_SHA'
- 'VCS_BRANCH_NAME=$BRANCH_NAME'
- 'VCS_PULL_REQUEST=$_PR_NUMBER'
- 'CI_BUILD_ID=$BUILD_ID'
- 'CODECOV_TOKEN=$_CODECOV_TOKEN' # _CODECOV_TOKEN is user user substituion variable specified in my cloud build trigger

除了来自 bash uploader 的警告外,这似乎有效:

Step #3: /dev/fd/63: line 897: git: command not found
Step #3: /dev/fd/63: line 897: hg: command not found

所以我不得不从 curl 镜像开始使用我自己的构建镜像,并向其中添加 git。

docker 文件:

FROM gcr.io/cloud-builders/curl
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git

并构建图像:

docker build -t "gcr.io/[PROJECT_ID]/builder .

所以我的决赛cloudbuild.yaml文件是:

steps:
- name: node:10.15.1
entrypoint: npm
args: ["install"]
- name: node:10.15.1
entrypoint: npm
args: ["test", "--", "--coverage"]
- name: node:10.15.1
entrypoint: npm
args: ["run", "build:production"]
- name: "gcr.io/$PROJECT_ID/builder"
entrypoint: bash
args: ['-c', 'bash <(curl -s https://codecov.io/bash)']
env:
- 'VCS_COMMIT_ID=$COMMIT_SHA'
- 'VCS_BRANCH_NAME=$BRANCH_NAME'
- 'VCS_PULL_REQUEST=$_PR_NUMBER'
- 'CI_BUILD_ID=$BUILD_ID'
- 'CODECOV_TOKEN=$_CODECOV_TOKEN'

关于docker - 在谷歌云构建期间将 jest 代码覆盖率结果上传到 codecov,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61076388/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com