Refer to the exhibit. The pipeline is configured as shown. A developer pushes a change to the `main` branch that modifies a file under `src/Controllers/HomeController.cs` and also adds a new file under `docs/readme.md`. Which of the following best describes what happens?
Trap 1: The pipeline does not trigger because the `docs/` path is excluded…
This is incorrect because Azure Pipelines evaluates path filters against the complete set of files changed in the push, not per file. Although a changed file under `docs/` would be excluded, the push also contained a change to `src/Controllers/HomeController.cs`, which is not in any excluded path. As long as at least one changed file is not excluded, the CI trigger fires; the presence of an excluded file does not cancel the trigger. If the commit had touched only `docs/` or `tests/`, the pipeline would indeed not trigger.
Trap 2: The pipeline triggers only if the change is on a branch matching…
This is too restrictive because the trigger's branch include list contains `main` in addition to `release/*` (or at least `main` is clearly enabled). Branch filters are additive in Azure Pipelines: a push to any branch that matches one of the include patterns triggers the pipeline, so a change on `main` also fires it. The `release/*` wildcard does not exclude or override the `main` include; it merely adds release branches as additional trigger sources.
Trap 3: The pipeline triggers but runs only tests because the build is…
This misunderstands the scope of path filters: they only determine whether the pipeline is triggered by the push, not which tasks or jobs execute inside the run. Once the trigger fires, all steps in the pipeline's stages and jobs run according to their normal `condition` values; Azure Pipelines does not automatically skip the build because a changed file is in an excluded path. To run only tests in such a scenario, you would need explicit task conditions or a separate pipeline, not path-filter behavior.
- A
The pipeline does not trigger because the `docs/` path is excluded and includes a change.
Why wrong: This is incorrect because Azure Pipelines evaluates path filters against the complete set of files changed in the push, not per file. Although a changed file under `docs/` would be excluded, the push also contained a change to `src/Controllers/HomeController.cs`, which is not in any excluded path. As long as at least one changed file is not excluded, the CI trigger fires; the presence of an excluded file does not cancel the trigger. If the commit had touched only `docs/` or `tests/`, the pipeline would indeed not trigger.
- B
The pipeline triggers because the change to `src/Controllers/HomeController.cs` is not in an excluded path.
The configured trigger includes the `main` branch and uses path exclusions for `docs/*` and `tests/*`, with no explicit include list. Therefore a push to `main` that modifies `src/Controllers/HomeController.cs`—a file outside both excluded paths—satisfies the trigger condition, so the pipeline run is queued. Path filter evaluation is based on the entire set of changed files; this file makes the push eligible. Once triggered, the pipeline runs normally.
- C
The pipeline triggers only if the change is on a branch matching `release/*`.
Why wrong: This is too restrictive because the trigger's branch include list contains `main` in addition to `release/*` (or at least `main` is clearly enabled). Branch filters are additive in Azure Pipelines: a push to any branch that matches one of the include patterns triggers the pipeline, so a change on `main` also fires it. The `release/*` wildcard does not exclude or override the `main` include; it merely adds release branches as additional trigger sources.
- D
The pipeline triggers but runs only tests because the build is skipped due to excluded paths.
Why wrong: This misunderstands the scope of path filters: they only determine whether the pipeline is triggered by the push, not which tasks or jobs execute inside the run. Once the trigger fires, all steps in the pipeline's stages and jobs run according to their normal `condition` values; Azure Pipelines does not automatically skip the build because a changed file is in an excluded path. To run only tests in such a scenario, you would need explicit task conditions or a separate pipeline, not path-filter behavior.