Snapshot dependencies not always being satisfied

Answered

Hello,

I'm not super-skilled at administering TeamCity, so I'm likely doing something wrong.  I tried searching for this via Google and these search tools, but I couldn't find anything.  I would love some help figuring this out!  We're using TeamCity 10.0.3.

We're trying to set up a continuous deployment build chain, where several types of tests are run in parallel before building a Docker container.  The container build has snapshot dependencies and triggers on the 3 dependencies, but it seems that sometimes there are Docker container builds that don't have all dependencies satisfied.  For example, a healthy build looks like:

But I am regularly seeing builds where not all snapshot dependencies are filled, e.g.:

I've confirmed that users are not removing builds of the dependencies, so I'm not sure what could be leading to this.  It's important to us that the Docker container isn't built unless all the tests are run, so we really don't want build chains without all the dependencies running.  Any idea what causes this and how to prevent it? 

 

 

0
3 comments
Avatar
Permanently deleted user

More details: 

The dependencies (Specs, Static Analysis, UI Tests aka "features") all trigger builds off of VCS commits to any branch, and successful builds of those dependencies all trigger the Docker container.  Successful builds of the Docker container then trigger builds of an ETL project that test against the container.

The Docker container has a snapshot dependency (with branch filters) on Specs, Static Analysis, and the UI tests, while the ETL project has a snapshot dependency on the Docker container.

Specs, Static Analysis, and features are all configured with a VCS trigger like so:

The Docker container project has 3 triggers: one for each snapshot dependency.  

The dependencies are configured thusly:



And all three dependencies lead to identical triggers for the Docker container project:

 



 

 

0

Hello Sean,

You setup is a bit complicated. Please configure the following:

1. Snapshot dependencies: from Docker to Specs, Static Analysis, UI Tests; and from ETL project to Docker.

2. In ETL project (last build configuration in the build chain) configure only one VCS trigger with option "Trigger in changes in snapshot dependencies" enabled.

In this case, if there are any changes in any build configuration in the chain, the whole build chain will be triggered. Please find more details in the section.

0
Avatar
Permanently deleted user

Thanks for the response, Alina.  I didn't mention it earlier (sorry), but I wanted to call out that we do find it desirable that Specs, Static Analysis, and UI Tests run for every branch (not just master and deploy).  The Docker and ETL projects should only run on master and deploy.

If I'm not mistaken, the suggested configuration would result in Docker/ETL runs for every commit, or we'd filter Docker/ETL (and thus its dependencies) for only master and deploy.  Would it make sense to keep the VCS triggers on the dependencies (filtering out master and deploy), while also triggering on ETL with master and deploy?

 

And to close the loop - we're backing off of this approach, because we needed to unblock our build process (we may revisit once we're stable again), but I'm curious if you have any explanation as to why TC would be ignoring some snapshot dependencies.  Any ideas?

In any case, thank you for the help!

0

Please sign in to leave a comment.