mirror of
https://github.com/codecov/codecov-action.git
synced 2026-09-27 13:17:27 +00:00
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0b35c9ecc4 | ||
|
|
fb8b3582c8 | ||
|
|
ca0a928a4c | ||
|
|
e79a6962e0 | ||
|
|
51e64229ac | ||
|
|
57e3a136b7 | ||
|
|
f67d33dda8 | ||
|
|
75cd11691c | ||
|
|
87d39f4a2c | ||
|
|
1af58845a9 | ||
|
|
c143300dea | ||
|
|
671740ac38 | ||
|
|
96b38e9e60 | ||
|
|
9b6d1f84bd | ||
|
|
5a1091511a | ||
|
|
3e0ce21cac | ||
|
|
c4741c8197 | ||
|
|
17370e8add | ||
|
|
18fdacf0ce | ||
|
|
206148c4b8 | ||
|
|
3cb13a1234 | ||
|
|
a4803c1f8d | ||
|
|
3139621497 |
8
.github/workflows/codeql-analysis.yml
vendored
8
.github/workflows/codeql-analysis.yml
vendored
@@ -37,11 +37,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4.2.2
|
uses: actions/checkout@v5.0.0
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v3.28.18
|
uses: github/codeql-action/init@v3.30.0
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@@ -52,7 +52,7 @@ jobs:
|
|||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v3.28.18
|
uses: github/codeql-action/autobuild@v3.30.0
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 https://git.io/JvXDl
|
# 📚 https://git.io/JvXDl
|
||||||
@@ -66,4 +66,4 @@ jobs:
|
|||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v3.28.18
|
uses: github/codeql-action/analyze@v3.30.0
|
||||||
|
|||||||
14
.github/workflows/enforce-license-compliance.yml
vendored
14
.github/workflows/enforce-license-compliance.yml
vendored
@@ -1,14 +0,0 @@
|
|||||||
name: Enforce License Compliance
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: [main]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
enforce-license-compliance:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: 'Enforce License Compliance'
|
|
||||||
uses: getsentry/action-enforce-license-compliance@57ba820387a1a9315a46115ee276b2968da51f3d # main
|
|
||||||
with:
|
|
||||||
fossa_api_key: ${{ secrets.FOSSA_API_KEY }}
|
|
||||||
22
.github/workflows/main.yml
vendored
22
.github/workflows/main.yml
vendored
@@ -12,13 +12,13 @@ jobs:
|
|||||||
os: [macos-latest, windows-latest, ubuntu-latest]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4.2.2
|
uses: actions/checkout@v5.0.0
|
||||||
with:
|
with:
|
||||||
submodules: "true"
|
submodules: "true"
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pip install -r src/scripts/app/requirements.txt
|
run: pip install -r app/requirements.txt
|
||||||
- name: Run tests and collect coverage
|
- name: Run tests and collect coverage
|
||||||
run: pytest src/scripts/app/ --cov
|
run: pytest app/ --cov
|
||||||
|
|
||||||
- name: Upload coverage to Codecov (script)
|
- name: Upload coverage to Codecov (script)
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -50,17 +50,17 @@ jobs:
|
|||||||
token: ${{ secrets.CODECOV_TOKEN }}
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
|
||||||
run-macos-latest-xlarge:
|
run-macos-latest-xlarge:
|
||||||
if: github.head.repo.full_name == 'codecov/codecov-action'
|
if: github.event.pull_request.head.repo.full_name == 'codecov/codecov-action'
|
||||||
runs-on: macos-latest-xlarge
|
runs-on: macos-latest-xlarge
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4.2.2
|
uses: actions/checkout@v5.0.0
|
||||||
with:
|
with:
|
||||||
submodules: "true"
|
submodules: "true"
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pip install -r src/scripts/app/requirements.txt
|
run: pip install -r app/requirements.txt
|
||||||
- name: Run tests and collect coverage
|
- name: Run tests and collect coverage
|
||||||
run: pytest src/scripts/app/ --cov
|
run: pytest app/ --cov
|
||||||
- name: Upload coverage to Codecov (script)
|
- name: Upload coverage to Codecov (script)
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -103,7 +103,7 @@ jobs:
|
|||||||
container: python:latest
|
container: python:latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4.2.2
|
uses: actions/checkout@v5.0.0
|
||||||
with:
|
with:
|
||||||
submodules: "true"
|
submodules: "true"
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
@@ -144,7 +144,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
apk add git
|
apk add git
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4.2.2
|
uses: actions/checkout@v5.0.0
|
||||||
with:
|
with:
|
||||||
submodules: "true"
|
submodules: "true"
|
||||||
- name: Upload coverage to Codecov (should fail due to missing dependencies)
|
- name: Upload coverage to Codecov (should fail due to missing dependencies)
|
||||||
@@ -175,7 +175,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
apk add git curl gnupg bash
|
apk add git curl gnupg bash
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4.2.2
|
uses: actions/checkout@v5.0.0
|
||||||
with:
|
with:
|
||||||
submodules: "true"
|
submodules: "true"
|
||||||
- name: Upload coverage to Codecov (should succeed)
|
- name: Upload coverage to Codecov (should succeed)
|
||||||
@@ -212,7 +212,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
apk add git curl
|
apk add git curl
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4.2.2
|
uses: actions/checkout@v5.0.0
|
||||||
with:
|
with:
|
||||||
submodules: "true"
|
submodules: "true"
|
||||||
- name: Upload coverage to Codecov (should fail due to missing gpg and bash)
|
- name: Upload coverage to Codecov (should fail due to missing gpg and bash)
|
||||||
|
|||||||
6
.github/workflows/scorecards-analysis.yml
vendored
6
.github/workflows/scorecards-analysis.yml
vendored
@@ -25,12 +25,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: actions/checkout@v4.2.2 # v3.0.0
|
uses: actions/checkout@v5.0.0 # v3.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: "Run analysis"
|
- name: "Run analysis"
|
||||||
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
|
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
|
||||||
with:
|
with:
|
||||||
results_file: results.sarif
|
results_file: results.sarif
|
||||||
results_format: sarif
|
results_format: sarif
|
||||||
@@ -57,6 +57,6 @@ jobs:
|
|||||||
|
|
||||||
# Upload the results to GitHub's code scanning dashboard.
|
# Upload the results to GitHub's code scanning dashboard.
|
||||||
- name: "Upload to code-scanning"
|
- name: "Upload to code-scanning"
|
||||||
uses: github/codeql-action/upload-sarif@v3.28.18 # v1.0.26
|
uses: github/codeql-action/upload-sarif@v3.30.0 # v1.0.26
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -93,3 +93,6 @@ public/
|
|||||||
|
|
||||||
# macOS Finder metadata
|
# macOS Finder metadata
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# pycache dirs
|
||||||
|
__pycache__/
|
||||||
|
|||||||
24
CHANGELOG.md
24
CHANGELOG.md
@@ -1,3 +1,27 @@
|
|||||||
|
## v5.5.2
|
||||||
|
|
||||||
|
### What's Changed
|
||||||
|
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/codecov/codecov-action/compare/v5.5.1..v5.5.2
|
||||||
|
|
||||||
|
|
||||||
|
## v5.5.1
|
||||||
|
|
||||||
|
### What's Changed
|
||||||
|
* fix: overwrite pr number on fork by @thomasrockhu-codecov in https://github.com/codecov/codecov-action/pull/1871
|
||||||
|
* build(deps): bump actions/checkout from 4.2.2 to 5.0.0 by @app/dependabot in https://github.com/codecov/codecov-action/pull/1868
|
||||||
|
* build(deps): bump github/codeql-action from 3.29.9 to 3.29.11 by @app/dependabot in https://github.com/codecov/codecov-action/pull/1867
|
||||||
|
* fix: update to use local app/ dir by @thomasrockhu-codecov in https://github.com/codecov/codecov-action/pull/1872
|
||||||
|
* docs: fix typo in README by @datalater in https://github.com/codecov/codecov-action/pull/1866
|
||||||
|
* Document a `codecov-cli` version reference example by @webknjaz in https://github.com/codecov/codecov-action/pull/1774
|
||||||
|
* build(deps): bump github/codeql-action from 3.28.18 to 3.29.9 by @app/dependabot in https://github.com/codecov/codecov-action/pull/1861
|
||||||
|
* build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.2 by @app/dependabot in https://github.com/codecov/codecov-action/pull/1833
|
||||||
|
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/codecov/codecov-action/compare/v5.5.0..v5.5.1
|
||||||
|
|
||||||
|
|
||||||
## v5.5.0
|
## v5.5.0
|
||||||
|
|
||||||
### What's Changed
|
### What's Changed
|
||||||
|
|||||||
6
Makefile
6
Makefile
@@ -1,7 +1,7 @@
|
|||||||
deploy:
|
deploy:
|
||||||
$(eval VERSION := $(shell cat src/version))
|
$(eval VERSION := $(shell cat src/version))
|
||||||
git tag -d v5
|
git tag -d v7
|
||||||
git push origin :v5
|
git push origin :v7
|
||||||
git tag v5
|
git tag v7
|
||||||
git tag v$(VERSION) -s -m ""
|
git tag v$(VERSION) -s -m ""
|
||||||
git push origin --tags
|
git push origin --tags
|
||||||
|
|||||||
17
README.md
17
README.md
@@ -6,6 +6,14 @@
|
|||||||
|
|
||||||
### Easily upload coverage reports to Codecov from GitHub Actions
|
### Easily upload coverage reports to Codecov from GitHub Actions
|
||||||
|
|
||||||
|
## v7 Release
|
||||||
|
|
||||||
|
`v7` of the Codecov GitHub Action bumps the [Codecov Wrapper](https://github.com/codecov/wrapper) submodule, which now fetches the Codecov Uploader PGP verification key from the `codecovsecops` Keybase account.
|
||||||
|
|
||||||
|
## v6 Release
|
||||||
|
|
||||||
|
`v6` of the Codecov GitHub Action support node24
|
||||||
|
|
||||||
## v5 Release
|
## v5 Release
|
||||||
|
|
||||||
`v5` of the Codecov GitHub Action will use the [Codecov Wrapper](https://github.com/codecov/wrapper) to encapsulate the [CLI](https://github.com/codecov/codecov-cli). This will help ensure that the Action gets updates quicker.
|
`v5` of the Codecov GitHub Action will use the [Codecov Wrapper](https://github.com/codecov/wrapper) to encapsulate the [CLI](https://github.com/codecov/codecov-cli). This will help ensure that the Action gets updates quicker.
|
||||||
@@ -14,8 +22,8 @@
|
|||||||
|
|
||||||
The `v5` release also coincides with the opt-out feature for tokens for public repositories. In the `Global Upload Token` section of the settings page of an organization in codecov.io, you can set the ability for Codecov to receive a coverage reports from any source. This will allow contributors or other members of a repository to upload without needing access to the Codecov token. For more details see [how to upload without a token](https://docs.codecov.com/docs/codecov-tokens#uploading-without-a-token).
|
The `v5` release also coincides with the opt-out feature for tokens for public repositories. In the `Global Upload Token` section of the settings page of an organization in codecov.io, you can set the ability for Codecov to receive a coverage reports from any source. This will allow contributors or other members of a repository to upload without needing access to the Codecov token. For more details see [how to upload without a token](https://docs.codecov.com/docs/codecov-tokens#uploading-without-a-token).
|
||||||
|
|
||||||
> [!WARNING] > **The following arguments have been changed**
|
> [!WARNING]
|
||||||
>
|
> **The following arguments have been changed**
|
||||||
> - `file` (this has been deprecated in favor of `files`)
|
> - `file` (this has been deprecated in favor of `files`)
|
||||||
> - `plugin` (this has been deprecated in favor of `plugins`)
|
> - `plugin` (this has been deprecated in favor of `plugins`)
|
||||||
|
|
||||||
@@ -129,6 +137,7 @@ Codecov's Action supports inputs from the user. These inputs, along with their d
|
|||||||
| :--- | :--- | :---: |
|
| :--- | :--- | :---: |
|
||||||
| `base_sha` | 'The base SHA to select. This is only used in the "pr-base-picking" run command' | Optional
|
| `base_sha` | 'The base SHA to select. This is only used in the "pr-base-picking" run command' | Optional
|
||||||
| `binary` | The file location of a pre-downloaded version of the CLI. If specified, integrity checking will be bypassed. | Optional
|
| `binary` | The file location of a pre-downloaded version of the CLI. If specified, integrity checking will be bypassed. | Optional
|
||||||
|
| `cleanup` | If true, download the CLI into a temporary directory and clean it up after the run. Off by default. | Optional
|
||||||
| `codecov_yml_path` | The location of the codecov.yml file. This is currently ONLY used for automated test selection (https://docs.codecov.com/docs/getting-started-with-ats). Note that for all other cases, the Codecov yaml will need to be located as described here: https://docs.codecov.com/docs/codecov-yaml#can-i-name-the-file-codecovyml | Optional
|
| `codecov_yml_path` | The location of the codecov.yml file. This is currently ONLY used for automated test selection (https://docs.codecov.com/docs/getting-started-with-ats). Note that for all other cases, the Codecov yaml will need to be located as described here: https://docs.codecov.com/docs/codecov-yaml#can-i-name-the-file-codecovyml | Optional
|
||||||
| `commit_parent` | SHA (with 40 chars) of what should be the parent of this commit. | Optional
|
| `commit_parent` | SHA (with 40 chars) of what should be the parent of this commit. | Optional
|
||||||
| `directory` | Folder to search for coverage files. Default to the current working directory | Optional
|
| `directory` | Folder to search for coverage files. Default to the current working directory | Optional
|
||||||
@@ -140,7 +149,7 @@ Codecov's Action supports inputs from the user. These inputs, along with their d
|
|||||||
| `env_vars` | Environment variables to tag the upload with (e.g. PYTHON \| OS,PYTHON) | Optional
|
| `env_vars` | Environment variables to tag the upload with (e.g. PYTHON \| OS,PYTHON) | Optional
|
||||||
| `exclude` | Comma-separated list of folders to exclude from search. | Optional
|
| `exclude` | Comma-separated list of folders to exclude from search. | Optional
|
||||||
| `fail_ci_if_error` | On error, exit with non-zero code | Optional
|
| `fail_ci_if_error` | On error, exit with non-zero code | Optional
|
||||||
| `files` | Comma-separated explicit list of files to upload. These will be added to the coverage files found for upload. If you wish to only upload the specified files, please consider using "disable-search" to disable uploading other files. | Optional
|
| `files` | Comma-separated explicit list of files to upload. These will be added to the coverage files found for upload. If you wish to only upload the specified files, please consider using "disable_search" to disable uploading other files. | Optional
|
||||||
| `flags` | Comma-separated list of flags to upload to group coverage metrics. | Optional
|
| `flags` | Comma-separated list of flags to upload to group coverage metrics. | Optional
|
||||||
| `force` | Only used for empty-upload run command | Optional
|
| `force` | Only used for empty-upload run command | Optional
|
||||||
| `git_service` | Override the git_service (e.g. github_enterprise) | Optional
|
| `git_service` | Override the git_service (e.g. github_enterprise) | Optional
|
||||||
@@ -174,7 +183,7 @@ Codecov's Action supports inputs from the user. These inputs, along with their d
|
|||||||
| `use_oidc` | Use OIDC instead of token. This will ignore any token supplied | Optional
|
| `use_oidc` | Use OIDC instead of token. This will ignore any token supplied | Optional
|
||||||
| `use_pypi` | Use the pypi version of the CLI instead of from cli.codecov.io. If specified, integrity checking will be bypassed. | Optional
|
| `use_pypi` | Use the pypi version of the CLI instead of from cli.codecov.io. If specified, integrity checking will be bypassed. | Optional
|
||||||
| `verbose` | Enable verbose logging | Optional
|
| `verbose` | Enable verbose logging | Optional
|
||||||
| `version` | Which version of the Codecov CLI to use (defaults to 'latest') | Optional
|
| `version` | Which version of the Codecov CLI to use (defaults to 'latest', must start with a leading 'v'; example: `v10.0.1`) | Optional
|
||||||
| `working-directory` | Directory in which to execute codecov.sh | Optional
|
| `working-directory` | Directory in which to execute codecov.sh | Optional
|
||||||
|
|
||||||
### Example `workflow.yml` with Codecov Action
|
### Example `workflow.yml` with Codecov Action
|
||||||
|
|||||||
37
action.yml
37
action.yml
@@ -10,6 +10,10 @@ inputs:
|
|||||||
binary:
|
binary:
|
||||||
description: 'The file location of a pre-downloaded version of the CLI. If specified, integrity checking will be bypassed.'
|
description: 'The file location of a pre-downloaded version of the CLI. If specified, integrity checking will be bypassed.'
|
||||||
required: false
|
required: false
|
||||||
|
cleanup:
|
||||||
|
description: 'If true, download the CLI into a temporary directory and clean it up after the run. Off by default to preserve legacy behavior of downloading into the current working directory.'
|
||||||
|
required: false
|
||||||
|
default: 'false'
|
||||||
codecov_yml_path:
|
codecov_yml_path:
|
||||||
description: 'The location of the codecov.yml file. This is crrently ONLY used for automated test selection (https://docs.codecov.com/docs/getting-started-with-ats). Note that for all other cases, the Codecov yaml will need to be located as described here: https://docs.codecov.com/docs/codecov-yaml#can-i-name-the-file-codecovyml'
|
description: 'The location of the codecov.yml file. This is crrently ONLY used for automated test selection (https://docs.codecov.com/docs/getting-started-with-ats). Note that for all other cases, the Codecov yaml will need to be located as described here: https://docs.codecov.com/docs/codecov-yaml#can-i-name-the-file-codecovyml'
|
||||||
required: false
|
required: false
|
||||||
@@ -50,7 +54,7 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
default: 'false'
|
default: 'false'
|
||||||
files:
|
files:
|
||||||
description: 'Comma-separated list of explicit files to upload. These will be added to the coverage files found for upload. If you wish to only upload the specified files, please consider using disable-search to disable uploading other files.'
|
description: 'Comma-separated list of explicit files to upload. These will be added to the coverage files found for upload. If you wish to only upload the specified files, please consider using disable_search to disable uploading other files.'
|
||||||
required: false
|
required: false
|
||||||
flags:
|
flags:
|
||||||
description: 'Comma-separated list of flags to upload to group coverage metrics.'
|
description: 'Comma-separated list of flags to upload to group coverage metrics.'
|
||||||
@@ -177,16 +181,25 @@ runs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Check system dependencies
|
- name: Check system dependencies
|
||||||
shell: sh
|
shell: sh
|
||||||
|
env:
|
||||||
|
INPUT_SKIP_VALIDATION: ${{ inputs.skip_validation }}
|
||||||
run: |
|
run: |
|
||||||
missing_deps=""
|
missing_deps=""
|
||||||
|
|
||||||
# Check for required commands
|
# Check for always-required commands
|
||||||
for cmd in bash git curl gpg; do
|
for cmd in bash git curl; do
|
||||||
if ! command -v "$cmd" >/dev/null 2>&1; then
|
if ! command -v "$cmd" >/dev/null 2>&1; then
|
||||||
missing_deps="$missing_deps $cmd"
|
missing_deps="$missing_deps $cmd"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Check for gpg only if validation is not being skipped
|
||||||
|
if [ "$INPUT_SKIP_VALIDATION" != "true" ]; then
|
||||||
|
if ! command -v gpg >/dev/null 2>&1; then
|
||||||
|
missing_deps="$missing_deps gpg"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Report missing required dependencies
|
# Report missing required dependencies
|
||||||
if [ -n "$missing_deps" ]; then
|
if [ -n "$missing_deps" ]; then
|
||||||
echo "Error: The following required dependencies are missing:$missing_deps"
|
echo "Error: The following required dependencies are missing:$missing_deps"
|
||||||
@@ -223,7 +236,7 @@ runs:
|
|||||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||||
|
|
||||||
- name: Get OIDC token
|
- name: Get OIDC token
|
||||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
||||||
id: oidc
|
id: oidc
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@@ -238,24 +251,27 @@ runs:
|
|||||||
- name: Get and set token
|
- name: Get and set token
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [ "${{ inputs.use_oidc }}" == 'true' ] && [ "$CC_FORK" != 'true' ];
|
if [ "$INPUT_USE_OIDC" == 'true' ] && [ "$CC_FORK" != 'true' ];
|
||||||
then
|
then
|
||||||
echo "CC_TOKEN=$CC_OIDC_TOKEN" >> "$GITHUB_ENV"
|
echo "CC_TOKEN=$CC_OIDC_TOKEN" >> "$GITHUB_ENV"
|
||||||
elif [ -n "${{ env.CODECOV_TOKEN }}" ];
|
elif [ -n "$INPUT_CODECOV_TOKEN" ];
|
||||||
then
|
then
|
||||||
echo -e "\033[0;32m==>\033[0m Token set from env"
|
echo -e "\033[0;32m==>\033[0m Token set from env"
|
||||||
echo "CC_TOKEN=${{ env.CODECOV_TOKEN }}" >> "$GITHUB_ENV"
|
echo "CC_TOKEN=$INPUT_CODECOV_TOKEN" >> "$GITHUB_ENV"
|
||||||
else
|
else
|
||||||
if [ -n "${{ inputs.token }}" ];
|
if [ -n "$INPUT_TOKEN" ];
|
||||||
then
|
then
|
||||||
echo -e "\033[0;32m==>\033[0m Token set from input"
|
echo -e "\033[0;32m==>\033[0m Token set from input"
|
||||||
CC_TOKEN=$(echo "${{ inputs.token }}" | tr -d '\n')
|
CC_TOKEN=$(echo "$INPUT_TOKEN" | tr -d '\n')
|
||||||
echo "CC_TOKEN=$CC_TOKEN" >> "$GITHUB_ENV"
|
echo "CC_TOKEN=$CC_TOKEN" >> "$GITHUB_ENV"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
env:
|
env:
|
||||||
CC_OIDC_TOKEN: ${{ steps.oidc.outputs.result }}
|
CC_OIDC_TOKEN: ${{ steps.oidc.outputs.result }}
|
||||||
CC_OIDC_AUDIENCE: ${{ inputs.url || 'https://codecov.io' }}
|
CC_OIDC_AUDIENCE: ${{ inputs.url || 'https://codecov.io' }}
|
||||||
|
INPUT_USE_OIDC: ${{ inputs.use_oidc }}
|
||||||
|
INPUT_TOKEN: ${{ inputs.token }}
|
||||||
|
INPUT_CODECOV_TOKEN: ${{ env.CODECOV_TOKEN }}
|
||||||
|
|
||||||
- name: Override branch for forks
|
- name: Override branch for forks
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -282,7 +298,7 @@ runs:
|
|||||||
then
|
then
|
||||||
CC_SHA="$GITHUB_EVENT_PULL_REQUEST_HEAD_SHA"
|
CC_SHA="$GITHUB_EVENT_PULL_REQUEST_HEAD_SHA"
|
||||||
fi
|
fi
|
||||||
if [ -z "$CC_PR" ] && [ "${GITHUB_EVENT_NAME}" == "pull_request_target" ];
|
if [ -z "$CC_PR" ] && [ "$CC_FORK" == 'true' ];
|
||||||
then
|
then
|
||||||
CC_PR="$GITHUB_EVENT_NUMBER"
|
CC_PR="$GITHUB_EVENT_NUMBER"
|
||||||
fi
|
fi
|
||||||
@@ -305,6 +321,7 @@ runs:
|
|||||||
CC_BINARY: ${{ inputs.binary }}
|
CC_BINARY: ${{ inputs.binary }}
|
||||||
CC_BUILD: ${{ inputs.override_build }}
|
CC_BUILD: ${{ inputs.override_build }}
|
||||||
CC_BUILD_URL: ${{ inputs.override_build_url }}
|
CC_BUILD_URL: ${{ inputs.override_build_url }}
|
||||||
|
CC_CLEANUP: ${{ inputs.cleanup }}
|
||||||
CC_CODE: ${{ inputs.report_code }}
|
CC_CODE: ${{ inputs.report_code }}
|
||||||
CC_DIR: ${{ inputs.directory }}
|
CC_DIR: ${{ inputs.directory }}
|
||||||
CC_DISABLE_FILE_FIXES: ${{ inputs.disable_file_fixes }}
|
CC_DISABLE_FILE_FIXES: ${{ inputs.disable_file_fixes }}
|
||||||
|
|||||||
0
app/__init__.py
Normal file
0
app/__init__.py
Normal file
15
app/calculator.py
Normal file
15
app/calculator.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
class Calculator:
|
||||||
|
|
||||||
|
def add(x, y):
|
||||||
|
return x + y
|
||||||
|
|
||||||
|
def subtract(x, y):
|
||||||
|
return x - y
|
||||||
|
|
||||||
|
def multiply(x, y):
|
||||||
|
return x * y
|
||||||
|
|
||||||
|
def divide(x, y):
|
||||||
|
if y == 0:
|
||||||
|
return 'Cannot divide by 0'
|
||||||
|
return x * 1.0 / y
|
||||||
1
app/requirements.txt
Normal file
1
app/requirements.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
pytest-cov
|
||||||
31
app/test_calculator.py
Normal file
31
app/test_calculator.py
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
from .calculator import Calculator
|
||||||
|
|
||||||
|
|
||||||
|
def test_add():
|
||||||
|
assert Calculator.add(1, 2) == 3.0
|
||||||
|
assert Calculator.add(1.0, 2.0) == 3.0
|
||||||
|
assert Calculator.add(0, 2.0) == 2.0
|
||||||
|
assert Calculator.add(2.0, 0) == 2.0
|
||||||
|
assert Calculator.add(-4, 2.0) == -2.0
|
||||||
|
|
||||||
|
def test_subtract():
|
||||||
|
assert Calculator.subtract(1, 2) == -1.0
|
||||||
|
assert Calculator.subtract(2, 1) == 1.0
|
||||||
|
assert Calculator.subtract(1.0, 2.0) == -1.0
|
||||||
|
assert Calculator.subtract(0, 2.0) == -2.0
|
||||||
|
assert Calculator.subtract(2.0, 0.0) == 2.0
|
||||||
|
assert Calculator.subtract(-4, 2.0) == -6.0
|
||||||
|
|
||||||
|
def test_multiply():
|
||||||
|
assert Calculator.multiply(1, 2) == 2.0
|
||||||
|
assert Calculator.multiply(1.0, 2.0) == 2.0
|
||||||
|
assert Calculator.multiply(0, 2.0) == 0.0
|
||||||
|
assert Calculator.multiply(2.0, 0.0) == 0.0
|
||||||
|
assert Calculator.multiply(-4, 2.0) == -8.0
|
||||||
|
|
||||||
|
def test_divide():
|
||||||
|
# assert Calculator.divide(1, 2) == 0.5
|
||||||
|
assert Calculator.divide(1.0, 2.0) == 0.5
|
||||||
|
assert Calculator.divide(0, 2.0) == 0
|
||||||
|
assert Calculator.divide(-4, 2.0) == -2.0
|
||||||
|
# assert Calculator.divide(2.0, 0.0) == 'Cannot divide by 0'
|
||||||
64
dist/codecov.sh
vendored
64
dist/codecov.sh
vendored
@@ -37,11 +37,12 @@ g="\033[0;32m" # info/debug
|
|||||||
r="\033[0;31m" # errors
|
r="\033[0;31m" # errors
|
||||||
x="\033[0m"
|
x="\033[0m"
|
||||||
retry="--retry 5 --retry-delay 2"
|
retry="--retry 5 --retry-delay 2"
|
||||||
CC_WRAPPER_VERSION="0.2.7"
|
CC_WRAPPER_VERSION="0.3.0"
|
||||||
CC_VERSION="${CC_VERSION:-latest}"
|
CC_VERSION="${CC_VERSION:-latest}"
|
||||||
CC_FAIL_ON_ERROR="${CC_FAIL_ON_ERROR:-false}"
|
CC_FAIL_ON_ERROR="${CC_FAIL_ON_ERROR:-false}"
|
||||||
CC_RUN_CMD="${CC_RUN_CMD:-upload-coverage}"
|
CC_RUN_CMD="${CC_RUN_CMD:-upload-coverage}"
|
||||||
CC_CLI_TYPE=${CC_CLI_TYPE:-"codecov-cli"}
|
CC_CLI_TYPE=${CC_CLI_TYPE:-"codecov-cli"}
|
||||||
|
CC_CLEANUP="${CC_CLEANUP:-false}"
|
||||||
say " _____ _
|
say " _____ _
|
||||||
/ ____| | |
|
/ ____| | |
|
||||||
| | ___ __| | ___ ___ _____ __
|
| | ___ __| | ___ ___ _____ __
|
||||||
@@ -63,14 +64,28 @@ then
|
|||||||
else
|
else
|
||||||
exit_if_error "Could not find binary file $CC_BINARY"
|
exit_if_error "Could not find binary file $CC_BINARY"
|
||||||
fi
|
fi
|
||||||
elif [ "$CC_USE_PYPI" == "true" ];
|
elif [ "$CC_USE_PYPI" == "true" ] || [ "$CC_USE_PYPI" == "1" ];
|
||||||
then
|
then
|
||||||
if ! pip install "${CC_CLI_TYPE}$([ "$CC_VERSION" == "latest" ] && echo "" || echo "==$CC_VERSION")"; then
|
if ! pip install "${CC_CLI_TYPE}$([ "$CC_VERSION" == "latest" ] && echo "" || echo "==$CC_VERSION")"; then
|
||||||
exit_if_error "Could not install via pypi."
|
exit_if_error "Could not install via pypi."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
CC_COMMAND="${CC_CLI_TYPE}"
|
if [[ "$CC_CLI_TYPE" == "codecov-cli" ]]; then
|
||||||
|
CC_COMMAND="codecovcli"
|
||||||
|
elif [[ "$CC_CLI_TYPE" == "sentry-prevent-cli" ]]; then
|
||||||
|
CC_COMMAND="sentry-prevent-cli"
|
||||||
else
|
else
|
||||||
|
CC_COMMAND="${CC_CLI_TYPE}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
CC_DOWNLOAD_DIR="."
|
||||||
|
if [ "$CC_CLEANUP" == "true" ]; then
|
||||||
|
CC_DOWNLOAD_DIR=$(mktemp -d)
|
||||||
|
cleanup_downloads() {
|
||||||
|
rm -rf "$CC_DOWNLOAD_DIR"
|
||||||
|
}
|
||||||
|
trap cleanup_downloads EXIT
|
||||||
|
fi
|
||||||
if [ -n "$CC_OS" ];
|
if [ -n "$CC_OS" ];
|
||||||
then
|
then
|
||||||
say "$g==>$x Overridden OS: $b${CC_OS}$x"
|
say "$g==>$x Overridden OS: $b${CC_OS}$x"
|
||||||
@@ -87,7 +102,7 @@ else
|
|||||||
fi
|
fi
|
||||||
CC_FILENAME="${CC_CLI_TYPE%-cli}"
|
CC_FILENAME="${CC_CLI_TYPE%-cli}"
|
||||||
[[ $CC_OS == "windows" ]] && CC_FILENAME+=".exe"
|
[[ $CC_OS == "windows" ]] && CC_FILENAME+=".exe"
|
||||||
CC_COMMAND="./$CC_FILENAME"
|
CC_COMMAND="$CC_DOWNLOAD_DIR/$CC_FILENAME"
|
||||||
[[ $CC_OS == "macos" ]] && \
|
[[ $CC_OS == "macos" ]] && \
|
||||||
! command -v gpg 2>&1 >/dev/null && \
|
! command -v gpg 2>&1 >/dev/null && \
|
||||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install gpg
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install gpg
|
||||||
@@ -95,24 +110,36 @@ else
|
|||||||
CC_URL="$CC_URL/${CC_VERSION}"
|
CC_URL="$CC_URL/${CC_VERSION}"
|
||||||
CC_URL="$CC_URL/${CC_OS}/${CC_FILENAME}"
|
CC_URL="$CC_URL/${CC_OS}/${CC_FILENAME}"
|
||||||
say "$g ->$x Downloading $b${CC_URL}$x"
|
say "$g ->$x Downloading $b${CC_URL}$x"
|
||||||
curl -O $retry "$CC_URL"
|
curl -o "$CC_COMMAND" $retry "$CC_URL"
|
||||||
say "$g==>$x Finishing downloading $b${CC_OS}:${CC_VERSION}$x"
|
say "$g==>$x Finishing downloading $b${CC_OS}:${CC_VERSION}$x"
|
||||||
v_url="https://cli.codecov.io/api/${CC_OS}/${CC_VERSION}"
|
v_url="https://cli.codecov.io/api/${CC_OS}/${CC_VERSION}"
|
||||||
v=$(curl $retry --retry-all-errors -s "$v_url" -H "Accept:application/json" | tr \{ '\n' | tr , '\n' | tr \} '\n' | grep "\"version\"" | awk -F'"' '{print $4}' | tail -1)
|
v=$(curl $retry --retry-all-errors -s "$v_url" -H "Accept:application/json" | tr \{ '\n' | tr , '\n' | tr \} '\n' | grep "\"version\"" | awk -F'"' '{print $4}' | tail -1)
|
||||||
say " Version: $b$v$x"
|
say " Version: $b$v$x"
|
||||||
say " "
|
say " "
|
||||||
fi
|
fi
|
||||||
if [ "$CC_SKIP_VALIDATION" == "true" ] || [ -n "$CC_BINARY" ] || [ "$CC_USE_PYPI" == "true" ];
|
if [ "$CC_SKIP_VALIDATION" == "true" ] || [ "$CC_SKIP_VALIDATION" == "1" ] || [ -n "$CC_BINARY" ] || [ "$CC_USE_PYPI" == "true" ] || [ "$CC_USE_PYPI" == "1" ];
|
||||||
then
|
then
|
||||||
say "$r==>$x Bypassing validation..."
|
say "$r==>$x Bypassing validation..."
|
||||||
if [ "$CC_SKIP_VALIDATION" == "true" ];
|
if [ "$CC_SKIP_VALIDATION" == "true" ] || [ "$CC_SKIP_VALIDATION" == "1" ];
|
||||||
then
|
then
|
||||||
chmod +x "$CC_COMMAND"
|
chmod +x "$CC_COMMAND"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "$(curl -s https://keybase.io/codecovsecurity/pgp_keys.asc)" | \
|
gpg_key_url="https://keybase.io/codecovsecops/pgp_keys.asc"
|
||||||
gpg --no-default-keyring --import
|
gpg_import_ok=false
|
||||||
# One-time step
|
for gpg_attempt in 1 2 3; do
|
||||||
|
if curl -sf $retry "$gpg_key_url" | gpg --no-default-keyring --import; then
|
||||||
|
gpg_import_ok=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ "$gpg_attempt" -lt 3 ]; then
|
||||||
|
say "$r ->$x GPG key import attempt $gpg_attempt failed, retrying..."
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ "$gpg_import_ok" != "true" ]; then
|
||||||
|
exit_if_error "Could not import GPG verification key after 3 attempts. Please contact Codecov if problem continues"
|
||||||
|
fi
|
||||||
say "$g==>$x Verifying GPG signature integrity"
|
say "$g==>$x Verifying GPG signature integrity"
|
||||||
sha_url="https://cli.codecov.io"
|
sha_url="https://cli.codecov.io"
|
||||||
sha_url="${sha_url}/${CC_VERSION}/${CC_OS}"
|
sha_url="${sha_url}/${CC_VERSION}/${CC_OS}"
|
||||||
@@ -120,14 +147,14 @@ else
|
|||||||
say "$g ->$x Downloading $b${sha_url}$x"
|
say "$g ->$x Downloading $b${sha_url}$x"
|
||||||
say "$g ->$x Downloading $b${sha_url}.sig$x"
|
say "$g ->$x Downloading $b${sha_url}.sig$x"
|
||||||
say " "
|
say " "
|
||||||
curl -Os $retry --connect-timeout 2 "$sha_url"
|
curl -o "$CC_DOWNLOAD_DIR/${CC_FILENAME}.SHA256SUM" -s $retry --connect-timeout 2 "$sha_url"
|
||||||
curl -Os $retry --connect-timeout 2 "${sha_url}.sig"
|
curl -o "$CC_DOWNLOAD_DIR/${CC_FILENAME}.SHA256SUM.sig" -s $retry --connect-timeout 2 "${sha_url}.sig"
|
||||||
if ! gpg --verify "${CC_FILENAME}.SHA256SUM.sig" "${CC_FILENAME}.SHA256SUM";
|
if ! gpg --verify "$CC_DOWNLOAD_DIR/${CC_FILENAME}.SHA256SUM.sig" "$CC_DOWNLOAD_DIR/${CC_FILENAME}.SHA256SUM";
|
||||||
then
|
then
|
||||||
exit_if_error "Could not verify signature. Please contact Codecov if problem continues"
|
exit_if_error "Could not verify signature. Please contact Codecov if problem continues"
|
||||||
fi
|
fi
|
||||||
if ! (shasum -a 256 -c "${CC_FILENAME}.SHA256SUM" 2>/dev/null || \
|
if ! (cd "$CC_DOWNLOAD_DIR" && (shasum -a 256 -c "${CC_FILENAME}.SHA256SUM" 2>/dev/null || \
|
||||||
sha256sum -c "${CC_FILENAME}.SHA256SUM");
|
sha256sum -c "${CC_FILENAME}.SHA256SUM"));
|
||||||
then
|
then
|
||||||
exit_if_error "Could not verify SHASUM. Please contact Codecov if problem continues"
|
exit_if_error "Could not verify SHASUM. Please contact Codecov if problem continues"
|
||||||
fi
|
fi
|
||||||
@@ -137,11 +164,16 @@ else
|
|||||||
fi
|
fi
|
||||||
if [ -n "$CC_BINARY_LOCATION" ];
|
if [ -n "$CC_BINARY_LOCATION" ];
|
||||||
then
|
then
|
||||||
mkdir -p "$CC_BINARY_LOCATION" && mv "$CC_FILENAME" $_
|
mkdir -p "$CC_BINARY_LOCATION" && mv "$CC_COMMAND" "$CC_BINARY_LOCATION/$CC_FILENAME"
|
||||||
|
CC_COMMAND="$CC_BINARY_LOCATION/$CC_FILENAME"
|
||||||
say "$g==>$x ${CC_CLI_TYPE} binary moved to ${CC_BINARY_LOCATION}"
|
say "$g==>$x ${CC_CLI_TYPE} binary moved to ${CC_BINARY_LOCATION}"
|
||||||
fi
|
fi
|
||||||
if [ "$CC_DOWNLOAD_ONLY" = "true" ];
|
if [ "$CC_DOWNLOAD_ONLY" = "true" ];
|
||||||
then
|
then
|
||||||
|
if [ "$CC_CLEANUP" == "true" ] && [ -z "$CC_BINARY_LOCATION" ]; then
|
||||||
|
cp "$CC_COMMAND" "./$CC_FILENAME"
|
||||||
|
CC_COMMAND="./$CC_FILENAME"
|
||||||
|
fi
|
||||||
say "$g==>$x ${CC_CLI_TYPE} download only called. Exiting..."
|
say "$g==>$x ${CC_CLI_TYPE} download only called. Exiting..."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|||||||
Submodule src/scripts updated: 473e292469...ce44ce7e24
@@ -1 +1 @@
|
|||||||
5.5.0
|
7.1.0
|
||||||
|
|||||||
Reference in New Issue
Block a user