How to use Jenkins pre-build branch merging only for branches I want to merge?

I am reading https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin#GitPlugin-AdvancedFeatures which allows pre-builds of feature branches before pushing commits to the master branch, effectively implementing a pre-commit build/test queue.

It says under Using Git, Jenkins and pre-build branch merging:

  • Gitlab ce ssh pupkey
  • I commit three times. How can I delete the second commit only?
  • Exclude a single commit from a “git diff”
  • gradle - getWorkingBranch error on gradle-git
  • Can I connect from VS 2015 to VSTS and GitHub the same time?
  • How to input password to git pull command?
  • Set up your Jenkins project, and leave the ‘branch’ field in the Git
    SCM blank. This will cause Jenkins to consider any change on any
    branch for building.

    Next, pick a particular branch name as the integration target in the
    ‘Advanced’ section – (e.g. ‘master’, or ‘stable’), and select ‘Merge
    before build’.

    Select ‘Push GIT tags back to origin repository’ from the post-build
    actions (this is required to update your centralised git repo with the
    results of the build).

    Now, developers should never commit directly to your integration
    branch (the ‘master’ or ‘stable’). Instead, they should either use
    feature branches, or create new remote branches on commit (e.g : “git
    push origin HEAD:refs/heads/myNewFeature”). You could also set up your
    GIT repository to only accept commits onto the integration branch from
    Jenkins.

    You’re done. Commits should now be automatically merged with the
    integration branch (they will fail if they do not merge cleanly), and
    built. If the build succeeds, the result of the merge will be pushed
    back to the remote git repository.

    Now I often have feature branches that I would like to continue developing on, and only merge them into master later.

    As far as I understand, this setup will merge and push any feature branch into master as soon as it builds.

    (How) Can Jenkins support my use case, building all feature branches, but merging only those into master that I indend to be merged?

  • Git pick changes from another branch
  • Can I use git submodule to manage individual files as well as directories?
  • Git Error : 'upstream' does not appear to be a git repository
  • Add .gitignore to gitignore
  • How do I push a new local branch to a remote Git repository and track it too?
  • Jenkins Host key verification failed
  • 2 Solutions collect form web for “How to use Jenkins pre-build branch merging only for branches I want to merge?”

    I have a build pipeline where I only want the develop branch to merge back to my stable branch. All others should not be merged. The way I’ve solved this is to have a separate job for the merge. When the build job is complete, the ‘merge’ job is only triggered if the environment variable GIT_BRANCH equals ‘develop’.

    Jenkins doesn’t have a very good conditional trigger that works the way I want. Here is how I set up my build job to conditionally trigger the merge step.

    • Add a build step to remove a file called trigger.properties (I use the Execute Shell build step)
    • Add a build step (conditional-buildstep plugin) Conditional step (single) to run if $GIT_BRANCH equals “origin/develop”. When true, it runs a shell command to create the trigger.properties file. (touch trigger.properties)
    • Add a post-build action (Parameterized Trigger plugin) to trigger my merge job when the build is stable. In the Parameters from properties file section, fill in the field with “trigger.properties”. There is an option “Don’t trigger if any files are missing”, so check that.

    So the process is that the trigger.properties file is first removed to make sure a previous run didn’t conflict. Then, check to see if the git branch is develop. If it is, recreate the trigger.properties file. The post-build step requires that file to exist for the next job to get triggered.

    Now you can perform the kinds of merging you like in a job made just for that. You can also modify this process so that more than one branch makes it to the merge job.

    Have you had a look at the pretested commit plugin for Jenkins?
    https://wiki.jenkins-ci.org/display/JENKINS/Pretested+Integration+Plugin

    It was designed for exactly the purpose you described.

    Git Baby is a git and github fan, let's start git clone.