touchifyapp / vsts-changed-files

Azure DevOps pipeline task to get changed files since last succeeded build
MIT License
12 stars 6 forks source link

Changes detected from queued pipelines resulting in longer builds #50

Open SA-Egress opened 10 months ago

SA-Egress commented 10 months ago

Hi,

A pipeline is designed to check for changes in your codebase and then build those changes. For various reasons, only one pipeline can run at any given time.

  1. Pipeline A is triggered because it detected changes in your codebase.
  2. While Pipeline A is running, more changes are made to the codebase. Because Pipeline A is still running, these changes trigger another pipeline, Pipeline B, which is then queued to run after Pipeline A.
  3. More changes are made to the codebase while Pipeline A is still running. These changes trigger Pipeline C, which is queued to run after Pipeline B.
  4. Pipeline A finishes running and successfully builds the changes it detected.
  5. Now, Pipeline B starts running. However, the changes that Pipeline B detected include the changes that Pipeline A already built. This is because when Pipeline B was triggered and queued, it included the changes that were present at that time, which includes the changes that Pipeline A was running for.
  6. Pipeline B finishes running and successfully builds the changes it detected, including the changes that were already built by Pipeline A.
  7. Finally, Pipeline C starts running. But the changes that Pipeline C detected include the changes that both Pipeline A and Pipeline B already built. This is because when Pipeline C was triggered and queued, it included all the changes that were present at that time, which includes the changes that Pipelines A and B were running for.

Is there a way to work around this without having to split the pipeline?

Second question - if the pipeline partially succeeds or is cancelled. The changes are still not considered 'built' so will be included in the next run. Is that correct?

Kind Regards