17. How can you delegate more to Jenkins?
• Does your CI server shift work from
laptops to servers?
– You need to commit to have Jenkins test it
– But if your commit is bad, it blocks others
– You end up testing locally before committing
– FAIL
17
18. Motivation
• We want to make changes safely
– Your mistake shouldn’t block others
– Only push after changes are validated
• We want to run tests asynchronously
– Your brain has more important things to do
– Make change and move on
– Even with TDD!
• We want to run tests on the server
– Your laptop has more important things to do
18
19. Solution: Jenkins should be Git server
• I push to Jenkins
• Jenkins merges it with upstream
• Jenkins tests it
• If good, Jenkins pushes it upstream
upstream
repo
gate
repo
19
20. Another way to look at it
Tip of master in upstream
Tip of master in upstream
My changes
20
21. Implementation
• Transport
– HTTP
– SSH
• JGit embedded in Jenkins for git server
functionality
– A bit of magic like Gerrit to make it seamless
• Additional tags to let you pull submitted
changes
21