BobBuildTool/bob

binary archive: check recipes against archives?

Opened this issue · 3 comments

Hi, is it somehow possible to check the current state of the recipes against the artifacts stored in a binary archiv? The result of this "check" should be show if the recipes are still in sync (so no new packages must be uploaded) or if a new run of the Jenkins/CI shall be triggered. This will help among other things not so experienced users to see what effects their changes have.

No, there is currently no such command available. What comes close is to do a bob (build|dev) --download=forced -f /path/to/descendant-or-self@package which will try to download the package and all dependencies. Note that this might not catch any tools that were forwarded. And it will fail on the first package. It will also actually download all the packages and probably waste a good amount of disk space.

Note that the recipes are not the only possible reason for mismatches with the artifact repository. Overrides (SCM, environment) and source code changes will have an impact too. Depending on the recipes and what has been uploaded to the artifact repository it might always be required to checkout some of the source code...

We use bob in addition to Jenkins within GitLab CI/CD. It would be nice to have the possibility to check the state of the recipes vs. the artifacts stored in the archive to prevent building e.g. all tools from scratch. It would be good if you could define a job that checks this and then cancels all the following dependent jobs. If the job fails this, on the one hand, is the indication that something may have been misconfigured in the recipes or the indication that the archive must be updated (in our case the Jenkins must be triggered manually because it is reponsible to build and upload the tools).

I guess this needs to be implemented in a dedicated command. Anything else will either be incomplete or have too much overhead. It may also have an advantage to have such a command for the following cases:

  • Check if checkout predictions are correct to analyze/fix the "restarting build due to wrong predictions" errors
  • Verify which mirror provides the required artifacts

The details still need to be fleshed out, though...