Developer team has specific requirements for tools. [I have] [read] [a lot] [about] [ideal] [workflows] and came up with something that works like this:
- Developer creates a change request, hotfix, feature, etc in Jira. That unique item id will be tracked along the work flow.
- Developer pulls repo from Git, creates a
feature-a
branch, commit changes locally and pushes to remote git repo. Pushes tomaster
are forbidden. - Git hook triggers a Jenkins job which runs a smoke test (compilation and unit tests). If tests pass then creates a revision in Crucible.
- Unless code review committee approves changes, we have to start from step (1). Crucible triggers a Jenkins job.
- Jenkins auto merges to
master
. If it fails then a manual merge is required and go back to step (2). Review step (4) might be bypassed. - Jenkins starts QA tests (integration tests, static analysis, system tests, IP scan, etc.).
- Gatekeeper (or senior developer) promotes that particular commit for release candidate.
Jenkins has a lot of plugins but nothing that works out-of-the-box. I need to develop many connectors (Jenkins-Crucible, Jenkins-Git for auto-merge). Changing tools is not an option.
How can I simplify the workflow?