Closed AllanOricil closed 1 year ago
I tried with "cobertura" format and I got the same result
these are the files that were uploaded by the action
I'm also having this issue, looks like it finds the coverage files OK but there aren't any results on Codecov.
@AllanOricil I'm having the same problem, I don't think your issue is that the upload is empty, but rather that codecov is (wrongly) deciding that CI is failing, see it says "X CI Failed" in the screenshot.
Because CI failed, they report "No Files covered..." rather than showing "CI failed".
At least that's my theory, I have been having the same problem.
@AllanOricil I'm having the same problem, I don't think your issue is that the upload is empty, but rather that codecov is (wrongly) deciding that CI is failing, see it says "X CI Failed" in the screenshot.
Because CI failed, they report "No Files covered..." rather than showing "CI failed".
At least that's my theory, I have been having the same problem.
Where did you see that the CI failed?
in your screenshot, near the top.
(screenshot from codecov)
@samuelcolvin found it.
It is really weird because it does not say what went wrong. Besides that, codecov's github action outputs success
Yup, it's super confusing. I've had tests passing, but no visible coverage because codecov thinks the PR is failing. If I go back to the main page for the project and change branch, I can see coverage for the commit, but not a diff of coverage :disappointed:.
I'm a bit confused by it all, but I think this is what codecov's CTO @hootener was saying to me on twitter.
We are also hitting this issue in https://github.com/cda-tum/qmap/pull/138 (more generally in the whole project since approximately 3 weeks). All checks on GitHub pass and the codecov upload succeeds, but codecov won't post a report and reports "CI Failed" on the website.
In contrast to the above, we also see cases where codecov reports "CI Passed" and still shows that one of the uploads is empty.
@hootener are you tracking this issue somewhere else?
I'm seeing the same thing while trying to configure Codecov on a public repository: Codecov's website both says that the CI has failed (it hasn't) and that the upload is empty (it isn't).
This may or may not help others, but I seem to have gotten Codecov into a semi-working state by uploading coverage.py
's XML report format instead of the default SQLite DB.
In particular, if I run python -m coverage xml
and upload the coverage.xml
that results, Codecov seems to ingest it.
Sadly I get the problem when uploading an xml from coverage, so I'm afraid that's not a panacea, though if it's working, it's working :shrug:.
A month has passed and this hasn't been fixed. Did any of you fix the problem somehow? or did Codecov's devs comment about this issue somewhere?
A month has passed and this hasn't been fixed. Did any of you fix the problem somehow? or did Codecov's devs comment about this issue somewhere?
Not for me. The "fix" I posted above has stopped working consistently for me.
I have the same issue, I can't make my Xcode xcresult code coverage to show up.
Edit:
I replaced this action with this and now the code coverage is being correctly processed:
- name: 🔄 Upload code coverage to Codecov
run: |
npm i yargs --save
node ./.github/scripts/generate-codecov-json.js --archive-path ./results.xcresult
bash <(curl -s https://codecov.io/bash) -t ${{ secrets.CODECOV_TOKEN }} -f ./coverage-report-results.json
The example is located here: https://github.com/codecov/uploader/issues/223#issuecomment-961328872 The javascript file: https://github.com/codecov/xcode-poc/blob/master/generate-codecov-json.js From this repo: https://github.com/codecov/xcode-poc
I assume this action is broken and should not be used.
I have the same issue, I can't make my Xcode xcresult code coverage to show up.
Edit:
I replaced this action with this and now the code coverage is being correctly processed:
- name: 🔄 Upload code coverage to Codecov run: | npm i yargs --save node ./.github/scripts/generate-codecov-json.js --archive-path ./results.xcresult bash <(curl -s https://codecov.io/bash) -t ${{ secrets.CODECOV_TOKEN }} -f ./coverage-report-results.json
The example is located here: https://github.com/codecov/uploader/issues/223#issuecomment-961328872 The javascript file: https://github.com/codecov/xcode-poc/blob/master/generate-codecov-json.js From this repo: https://github.com/codecov/xcode-poc
I assume this action is broken and should not be used.
So you are just manually uploading your code coverage to codecov?
@AllanOricil Correct
@ppamorim didnt work for me
How is the codecov.yml
configured in your project?
Same problem with Xcode. First I thought it might be because we had no coverage results on main branch, so I tried it locally with the uploader, but still the same result. But it explicitly mentioned the xcode conversion step
and created a json file, but it was empty:
In Xcode, the coverage shows up correctly
So maybe the upload itself works but the conversion doesn't?
I tried to convert manually using @ppamorim 's answer, and now the json is not empty, but the upload still shows nothing, albeit the message is different:
... maybe the null
s? 🤔
I'm really lost here 😐
Same problem over here.
codecov-action reporting successful ingestion:
But codecov.io dashboard reporting CI failed with the upload being empty:
My coverage build environment: ubuntu-latest, c++, gcc, cmake with a custom coverage hook, report generation via lcov, uploading to codecov via codecov-action v3.
I was intermittently seeing this issue pop up in the action debug logs, so I'm wondering if these two issues are related.
Codecov does not work at all. For unknow reason every upload I do, using any of my github actions, always shows as "Upload is empty". But when this github app uploads the "SAME" coverage, it works
why does it create this "merge" commit? I don't understand.
We are seeing similar problems with the circleCI orb so I don't think this is limited to the GH action. Codecov shows CI as passing for us too. Support suggested manual path fixing (https://docs.codecov.com/docs/fixing-paths) but we didn't have any luck with that - the flags that fail for us are consistent across runs but are no different to some that pass (and use common functionality to generate the report and upload it).
We are having similar problems with circleCI.
Before we upload, we convert the xcresult to json format report, but after upload, the codecov say the upload is empty. Maybe the format of report is not supported
xcrun xccov view --report UnitTest.xcresult --json >> result.json
+1 to this thread. I'm also experiencing this issue when trying to upload coverage reports generated by xunit and coverlet
Getting the same message and I noticed codecov does not see the branch the commit is for. In my case the upload is for the main branch, but, in the branch pull-down menu, there is no main listed. Couldn't find a way to get codecov to resync the branches.
edit: I did a little experimenting and this doesn't seem to be related as I get the same issue on branches that are listed
Just give up on this. No support from the maintainers means you will only be wasting your time. Their girhub bot also behaves weirdly. It computes code coverage even when there isn't any code coverage reports. Moreover it is able to upload reports without this "upload is empty" error 🤯
I had this issue and solved it by adding the checkout action to my codecov job. I was running tests in other jobs and uploading the coverage files as artifacts for my uploader job, so the rest of the repo wasn't present. It's not really documented that the codecov uploader requires the full repo presence in order to successfully upload a report.
Don't think this will solve the full issue here but something to check before giving up!
Tried for a while to get codecov to work, but I couldn't get past this issue. I ended up switching to use https://coveralls.io/. I was able to get it up and running pretty easily and it does everything that I was looking for from codecov (I pretty much just wanted the badge on my repo).
Same issue here - here is my GH run:
https://github.com/kontent-ai/management-sdk-net/actions/runs/3855468419/jobs/6570551138
And on codecov I am getting: https://app.codecov.io/github/kontent-ai/management-sdk-net/commit/21cb5e00a89ce34c4b380eadeafcdaa4f65a8bdd
I have tried to pass the Auth token too (even though it is a public repository) with no luck.
Codecov is showing the CI failed, by my CI passed. I have also found the response for ploads:
<Error>
<Code>ExpiredToken</Code>
<Message>The provided token has expired.</Message>
<Details>Request signature expired at: 2023-01-06T13:11:30+00:00</Details>
</Error>
Finally, we change fastlane to build the app, and upload the slather report, it works. Maybe you need not change to fastlane, only convert the report to slather format here is my fastfile
lane :unitTest do
run_tests(
scheme: "XXXX",
code_coverage: true,
clean: true,
device: "iPhone 11 Pro Max",
workspace: "XXX.xcworkspace",
output_directory: "reportOutput/",
derived_data_path: "testOutput/")
slather(
build_directory: "testOutput/",
scheme: "XXXX",
workspace: "XXX.xcworkspace",
proj: "XXXX.xcodeproj",
output_directory: "testOutput/slatherOutput",
cobertura_xml: true,
ignore: ["Pods/*", "3rdparty/*"])
end
and you should upload the cobertua.xml report
The slather command
slather coverage --cobertura-xml --build-directory testOutput/ --output-directory testOutput/slatherOutput
I fixed my problem after setting disable_default_path_fixes
to false
. And since I did not let codecov's action fix paths to me, I had to create my own custom action to do so.
codecov.yml
codecov:
disable_default_path_fixes: true
workflow.yml
...
- name: Fix Apex Code Coverage
uses: VodafoneIS/salesforce-fix-code-coverage-reports-action@main
if: ${{ env.SF_REPORT_APEX_CODE_COVERAGE == 'true' && steps.codecov_user.outputs.is_active == 'true' }}
continue-on-error: true
with:
code-coverage-report-path: ./dist/${{ secrets.SF_ORG_ALIAS }}/tests/coverage/coverage.json
code-coverage-report-type: APEX
output-directory: ./dist/${{ secrets.SF_ORG_ALIAS }}/tests/coverage
- name: Upload Apex Code Coverage
uses: codecov/codecov-action@v3
if: ${{ env.SF_REPORT_APEX_CODE_COVERAGE == 'true' && steps.codecov_user.outputs.is_active == 'true' }}
continue-on-error: true
with:
flags: APEX
token: ${{ secrets.CODECOV_COVERAGE_UPLOAD_TOKEN }}
files: ./dist/${{ secrets.SF_ORG_ALIAS }}/tests/coverage/fixed-coverage.json
...
I had a similar issue for several months. I managed to solve this issue by changing the format of the upload to codecov to XML. coverage
was generating a internal file and I had to add an export in XML, then upload the XML file to codecov.
For me using Golang, it was a matter of adding -coverpkg <PACKAGE_DIR>
so that I actually get the cover profile for packages I want 🤦 .
For Gradle users: the issue is pretty much the same, just upload jacocoTestReport.xml
files instead of test.exec
from JaCoCo:
Hi all, this topic has gotten a little out of hand for me to be able to process properly. Some of the issues that you are having are related, but it's not directly clear.
I'm going to close this out and point to the community boards as the place to get help if you still are running into an empty upload issue. It is far easier for me to handle types of issues there.
Github Action logs say that the coverage file was found and uploaded successfuly
But when I open Codecov, it says "upload is empty"
This is how I configured Codecov's action
This is the directory that I configured in codecov's actions tests.zip