Flags in codecov.yml vs sending a report with the --flag argument

I’m trying to learn the difference between defining flags in a codecov.yml file and for manually defining the flag when publishing a report via the cli.

In our example, we have a mono repo with 3x projects. As such, I’ve created a codecov.yml file with 3x flags in it:

coverage:
  status:
    project:
      default: on
      project1:
        target: 85%
        flags: project1
      project2:
        target: 85%
        flags: project2
      project3:
        target: 85%
        flags: project3

flags:
  project1:
    paths:
        - <paths to src and all tests, etc>
  project2:
    paths:
        - <paths to src and all tests, etc>
  project3:
    paths:
        - <paths to src and all tests, etc>

now, in any of the projects i send the reports up to codcov like this…

(This is using Azure DevOps but it’s a CLI tool so it could be anywhere)

** Project 1’s CI file (called a pipeline yml file)

# Send coverage reports
- script: |
   codecov -f "$(Build.SourcesDirectory)/Project1.UnitTest1/coverage.opencover.xml" -t $(CODECOV_TOKEN) --flag project1
  displayName: 'upload report to codecov.io for Project1 UnitTest 1'

- script: |
   codecov -f "$(Build.SourcesDirectory)/Project1.UnitTest2/coverage.opencover.xml" -t $(CODECOV_TOKEN) --flag project1
  displayName: 'upload report to codecov.io for Project1 UnitTest 2'

=> notice the flag there?

of course, i’ll hardcode different flag values in the other project CI files …

so …

Q1: do i need to define the flag stuff in BOTH files?
Q2: what is the releationship between the flag settings in the codecov.yml file vs the CLI tool ?

A1: You need both parts :slight_smile:
A2: You define the flags in the codecov.yml. You tell Codecov which of those flags you are using for an upload by adding --flag to your bash upload command.

Does that help?

Yes sir, it does! cheers!

1 Like