I am trying to implement a modified Integration-Manager workflow similar to that described in ProGit .

Instead of integration manager merge integration manager , I want developers to team up locally before publishing their code, and I want Quality Gateway provide our continuous integration standards, such as a minimum code coverage level and 100% tests before allowing code to enter to a blissful repository that will be checked by other developers. The idea is that the code in the blessed repository always meets the minimum standard that we define and always build.
I want Jenkins to act as a quality gateway, and only push the code into a blissful repository when builds are successful.
So far, I have set up the system so that the following public repositories exist: the blissful repository, the repository on the build server for Jenkins, which is an open repo accessible through gitosis, and, of course, the developer’s own repositories.
I have developers pulling out a blissful repo and clicking on repo integration. Now I'm trying to get Jenkins to promote successful builds from an integration repo to a blessed repo.
So far, the only option I have seen, it seems like what I'm trying to achieve, is the " Push Only If Build Succeeds " option in the Git Publisher settings for Post Build Actions in the Jenkins project configuration. However, these parameters do not allow you to specify the push address of push or remote for pressing.
As I understand it, Git Publisher settings will push Jenkins repo clones into the workspace back to the Jenkins public repo, but I want to click on another remote, a blessed repository.
Does anyone have any suggestions on how I can get Jenkins to click on the blessed repo?
EDIT 0 : I tried putting Post Step to execute the push command in my blessed repository. This seems to work as there are no errors. However, no changes are happening, and the logs show that Git believes that everything is updated:
[INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1 minute 7 seconds [INFO] Finished at: Fri Nov 18 16:10:50 UTC 2011 [INFO] Final Memory: 19M/45M [INFO] ------------------------------------------------------------------------ channel stopped [My Project] $ /bin/sh -xe /tmp/hudson5604254372179801803.sh + git push git@example.com:my-project.git --all Everything up-to-date
I don’t know why Git doesn’t want to push anything because it definitely is.