Skip to end of metadata
Go to start of metadata

This page describes how to configure Bamboo to use a Git repository.

You can specify repositories at the following levels in Bamboo:

  • global – repositories are available to all plans in Bamboo.
  • plan – repositories are available to all jobs in the Bamboo plan.
  • job – repositories are available to all tasks in the Bamboo job.

The recommended approach is to set up linked source repositories at the global level – see Linking to source code repositories.

You need to have previously defined a Git capability before you can configure a Git source repository – see Defining a new version control capability.

(info) Note that Bamboo comes with its own built-in Git implementation. However, you need to use native Git to be able to use symbolic links, submodules, automatic branch detection and automatic merging - these are not supported by the built-in Git.

You can download Git from the following locations:

Configure a Git source repository

  1. Navigate to the repository configuration for a linked repository, plan or job. See Linking to source code repositories.
  2. Either click Add Repository to add a new repository, or edit an existing repository configuration.
  3. Choose Git from the Source Repository list.
  4. Enter a Display Name to help identify the repository in Bamboo.
  5. You can configure the following settings for a Git source repository for your plan:
Repository URL

The full path to your Git repository (eg: https://bitbucket.org/atlassian/bamboo-git-plugin.git)

Valid URLs are of the form:

  • git://host.xz[:port]/path/to/repo.git
  • ssh://[user@]host.xz[:port]/path/to/repo.git
  • [user@]host.xz[:port]/path/to/repo.git
  • http[s]://host.xz[:port]/path/to/repo.git
  • /path/to/repo.git
  • file:///path/to/repo.git 
Branch   Type the name of the relevant branch (or tag) you want to work on. Leave empty to work on the master branch.
Authentication Type None – choose none if you want to access the repository anonymously.
Username/password – authenticate with a username and password.
SSH private key – upload an SSH Key and provide the corresponding SSH Passphrase.
Use shallow clones

Allows Bamboo to perform shallow clones (i.e. history truncated to a specified number of revisions). This should increase the speed of the initial code checkouts, however if your build depends on the full repository history, we recommend that you do not use this option. Shallow clones are enabled by default.

Location of POM file

The path to your project's pom.xml file, relative to the root of your Git Repository URL (defined above).

(Only available when importing a Maven 2 project) 

Advanced Options

Use submodulesSelect to enable submodules support if these are defined for the repository. If native Git capability is not defined for agent submodules support will be disabled.
Command timeout This is useful to stop hung Bitbucket processes. On slower networks, you may consider increasing the default timeout to allow Bamboo time to make an initial clone of the Git repository.
Verbose logs Turns on more verbose logs from Git commands. Use this option if you encounter problems with Git in Bamboo.
Enable Quiet PeriodSpecifies a delay after a single commit is detected before the build is started. This allows multiple commits to be aggregated into a single build.
Include/Exclude Files

Allows you to specify the files that Bamboo should, or should not, use to detect changes. When you configure the Include option, it means that you want Bamboo to use only the mentioned files for change detection because by default Bamboo checks all the files. The same way,  if you configure the Exclude option, Bamboo will not consider the excluded files for detecting changes.

Enter into File Pattern a regular expression to match the files that Bamboo  includes or excludes. The regex pattern must match the file path in the repository. See sub page for examples.

Exclude ChangesetsEnter a regular expression to match the commit messages for changesets that should not start a build.
Web Repository

If your repository can be viewed in a web browser, select the repository type.

This allows links to relevant files to be displayed in the 'Code Changes' section of a build result.

Stash – specify the following details for the repository:
    • Stash URL – the URL of your Stash instance (e.g. 'https://stash.mycompany.com').
    • Stash Project Key – the key of the project in Stash (e.g. 'CONF').
    • Repository Name – the name of the repository in Stash (e.g. 'conf-dev').

See Integrating Bamboo with Stash for more information.

FishEye – specify the URL and other details for the repository:

    • FishEye URL — the URL of your FishEye repository (e.g. ' https://atlaseye.atlassian.com/ ').
    • Repository Name — the name of your FishEye repository (e.g. 'Bamboo'). This is effectively the alias for your repository path.
    • Repository Path — the path for your FishEye repository (e.g. '/atlassian/bamboo/').

See Integrating Bamboo with FishEye for more information.

How do I determine my Repository Path?

If you have previously run builds with changes from your repository, the easiest way of determining your repository path is to view the code changes and copy the path from the start of the path of one of the changed files, up to (but not including) the appropriate root directory. The root directories for repositories are the ones shown by FishEye when browsing a repository (e.g. trunk)). For example, if a code change listed /atlassian/bamboo/trunk/bamboo-acceptance-test/pom.xml, the path would be /atlassian/bamboo/.
If you have not previously run builds with changes from your repository, you will need to ask your FishEye administrator for the repository path indexed by FishEye.

  • No labels

22 Comments

  1. What about triggers for git? Didn't find anything in documentation - table with "Build strategies" looks like copied from documentation for Subversion, not a word regarding git there.

    1. Er, what do you mean by 'triggers for git'? What kind of information you need which the above documentation lacks?

      1. I need information how to configure git, to automatically trigger bamboo build after each push. Second option in "build strategies" table - there's a link to this page: http://confluence.atlassian.com/display/BAMBOO/Repository+Triggers+the+Build+when+Changes+are+Committed, but nothing about git can be found there.

        1. I'd say you need to:

          • add post-receive script to your git repository. For example my .git/hooks/post-receive looks like:
            (where http://localhost:8085/bamboo is my Bamboo basedir, and HOOK-HOOK is the project-plan key for the plan using Git Repository)
          • you might need to tweak Trigger IP Address (Bamboo->Plan->Repository Configuration page). For example I had to change it to:

          And that should do the trick. Does it help?

          1. Yes, Piotr, I see that you added info to the page about Git configuration too, and that's exactly what I was asking for - thank you.

          2. Does this still work since the remote API is gone, and now we've got a REST api?

            I couldn't find stuff in the REST API about triggering a build.

            Thanks, David

            1. I believe this still work - the above mechanism is not depending on "remote API" nor on the REST api. For the full reference - one can use REST "queue" endpoint to trigger the builds manually, but I don't see a reason why one would favourite REST instead of the plain  "updateAndBuild.action".

              Why do you ask? Any particular problem you're experiencing? Maybe we can help somehow?

              1. Yeah I'm having trouble with it, it doesn't seem to be triggering my Plan. I've got a support request open: https://support.atlassian.com/browse/BSP-10330

                Thanks (smile)

                1. Just a question: do you want to trigger the build and run it no-matter-if-there-are-any-new-changes-in-the-repo, or do you want to trigger only the change detection on the repository?

                  If you need to trigger the build (I assume that is the case, am I right?), then the following REST endpoint should help in your situation: https://docs.atlassian.com/bamboo/REST/4.0/#idp263696 - "POST" on the "/queue" resource. Can you make it on your own with that information how to call that endpoint, or do you need further help?

                  1. I think that solves my problem. Change detection is fine, since it should only be pushed via git on a push, but I don't mind if it runs "unnecessarily"

                    I executed this:

                    POST server:port/rest/api/latest/queue/PLAN-KEY 

                    I get a 401 unauthorized, I guess it requires me to set up a username and password explicitly for the automated builds? That's a bit trickier to make work with github. 

                    1. Hm... In that case the "updateAndBuild.action" should be preferable. I do wonder why does it not work on your machine. But I think diagnosing this won't be easy and it is good idea that you've raised that BSP-10330 - I've added myself to its watchers. I hope that with a help from Support Engineer you'll get to the root of the problem soon.

                      I'll pass here, as I reckon the issue is too big to be discussed via Bamboo Documentation comments, and I am unable to help you further right now. Is that OK to you?

                      good night! (smile)

                      1. Totally OK with me, thanks for your help.

  2. Is there a specific version of git that shallow clones have been tested with? I've noticed that on some repos (very small ones, I think, 556K with the one I consistently reproduce the problem with), enabling shallow clones causes the clone command to hang indefinitely. Switching to full clones works fine.

    I am using git 1.7.10.1 with my build agent.

  3. Anonymous

    Is there any support for having the output of 'git describe' passed to a Bamboo environment variable during a build?

  4. Anonymous

    Committing to a branch still causes master to compile and my branch does not get compiled when using manual branches.   Is this a known issue with bamboo integration or have I neglected something in my branch trigger. I do specify master for master.  Using GitHub services hooks which trigger on commit to bamboo.  It looks like I can specify the main project-plan which is how I trigger the build.  

    1. I think you should use "polling" strategy in Bamboo instead of relying on GitHub services to "ping" the Bamboo. I'm guessing GitHub services aren't aware of plan-branches created in Bamboo, so they always trigger the master-plan...

  5. I just wanted to point out that the SSH-authentication for a git repository won't work if the private-key is in putty format.
    When I converted it to the openssh format, it worked fine. 

  6. Checking out a tag does not seem to work. I have to checkout the tag manually with a script task.

    The documentation shoult mention this:

    Type the name of the relevant branch (or tag) you want to work on. Leave empty to work on the master branch.

     

  7. Not critical but is there any way to clone or copy a shared repository?

     

    Dang it I have done the captcha 15+ times...what the heck????

  8. Is it possible to store an SSH public key in Bamboo, rather than having to upload it via a webform for each new plan? Ideally we want to create a 'bamboo' user in Stash so we don't have to use a random individual's authentication details in a build plan. However, we'd still have to manually upload an SSH key. Does Bamboo provide a key store?

    1. Hi Rick,

      I am sorry for the confusion; Bamboo 5.2 has this feature as it's mentioned here - https://answers.atlassian.com/questions/231064/store-stash-ssh-key-on-the-bamboo-server?page=1#231271. You need navigate to the Administration -> Shared credentials page.

      Armen

  9. I'm looking to only trigger builds with a certain commit text through the "Exclude changesets" option. However, it doesn't look like Bamboo supports negative regular expressions. Is this the case?

    My regex is ^(?![some-text] some other text).*\n

    Btw, having to specify \n at the end is really bad. Especially since it isn't noted in the documentation.