-1


We have a huge monolith project and every day a lot of developers check-in their code to the project. As you may guess working on a project like this is really hard especially while lots of developers working as the same time on it. During the day there are often check-ins and building the project really takes time. Under these conditions carrying on CI/CD process is really hard but the hardest thing is that if a developer check-ins that causes to fail build, since check-ins done often it brings along lots of check-ins accumulate. Actually I know what is missing but don't know the best practice solution. I believe what is missing is as it's said in the book Continuous Delivery by Jez Humble Chapter 3, Essential Practices section

Don't Check In on a Broken Build

We use Jenkins for CI/CD and we use TFS for SCM. Currently, our Jenkins version is 2.204.2 and TFS Plugin version is 5.157.0

Could you help me about how to apply these practice? How do I prevent check-in o a broken build? It's crucial because everday we are looking for who broke the build and say to him/her "Hey, your last check-in broke the build can you check it.. Because everyone is waiting for you."

happy-integer
  • 383
  • 1
  • 3
  • 15

1 Answers1

0

I think TFS is limiting the possibilities you have because of it's branching model.

When I had to implement more modern ALMs, I migrated the SCM code from TFS to the Git (hosted inside TFS server). This allowed me to put more logic and features in the ALM, build workflow and tagging. There is a github repo with already made project for TFS-to-Git migration.

TFS migration link:

TudorIftimie
  • 1,050
  • 11
  • 21
  • 1
    Right now it seems hard to migrate from TFS to Git but thank you for your answer and suggestion – happy-integer Mar 02 '20 at 06:06
  • have you tried building the branches in separate build threads and approve a branch merge on trunk only if the branch builds successfully ? You could use the same pipeline jenkinsfile and show the developers how to clone the trunk and make a branch build project. The bad part is that would require extra resources and lot of cleanups.I think there is a way to automatically delete jobs that were not ran for an amount of time though.. – TudorIftimie Mar 04 '20 at 11:04