bitbucket.md 5.1 KB
Newer Older
S
Stan Hu 已提交
1
# Integrate your GitLab server with Bitbucket Cloud
D
Douwe Maan 已提交
2

3 4 5
NOTE: **Note:**
You need to [enable OmniAuth](omniauth.md) in order to use this.

6 7
Import projects from Bitbucket.org and login to your GitLab instance with your
Bitbucket.org account.
D
Douwe Maan 已提交
8

9
## Overview
D
Douwe Maan 已提交
10

V
Valery Sizov 已提交
11
You can set up Bitbucket.org as an OAuth2 provider so that you can use your
12 13
credentials to authenticate into GitLab or import your projects from
Bitbucket.org.
D
Douwe Maan 已提交
14

15
- To use Bitbucket.org as an OmniAuth provider, follow the [Bitbucket OmniAuth
16 17 18 19
  provider](#bitbucket-omniauth-provider) section.
- To import projects from Bitbucket, follow both the
  [Bitbucket OmniAuth provider](#bitbucket-omniauth-provider) and
  [Bitbucket project import](#bitbucket-project-import) sections.
D
Douwe Maan 已提交
20

21 22 23
## Bitbucket OmniAuth provider

> **Note:**
24
GitLab 8.15 significantly simplified the way to integrate Bitbucket.org with
25 26
GitLab. You are encouraged to upgrade your GitLab instance if you haven't done so
already. If you're using GitLab 8.14 or below, [use the previous integration
27
docs](https://gitlab.com/gitlab-org/gitlab/blob/8-14-stable-ee/doc/integration/bitbucket.md).
28 29

To enable the Bitbucket OmniAuth provider you must register your application
30
with Bitbucket.org. Bitbucket will generate an application ID and secret key for
31
you to use.
D
Douwe Maan 已提交
32

33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
1. Sign in to [Bitbucket.org](https://bitbucket.org).
1. Navigate to your individual user settings (**Bitbucket settings**) or a team's
   settings (**Manage team**), depending on how you want the application registered.
   It does not matter if the application is registered as an individual or a
   team, that is entirely up to you.
1. Select **OAuth** in the left menu under "Access Management".
1. Select **Add consumer**.
1. Provide the required details:

   | Item | Description |
   | :--- | :---------- |
   | **Name** | This can be anything. Consider something like `<Organization>'s GitLab` or `<Your Name>'s GitLab` or something else descriptive. |
   | **Application description** | Fill this in if you wish. |
   | **Callback URL** | The URL to your GitLab installation, e.g., `https://gitlab.example.com/users/auth`. |
   | **URL** | The URL to your GitLab installation, e.g., `https://gitlab.example.com`. |

   NOTE: Be sure to append `/users/auth` to the end of the callback URL
   to prevent a [OAuth2 convert
   redirect](http://tetraph.com/covert_redirect/) vulnerability.

   NOTE: Starting in GitLab 8.15, you MUST specify a callback URL, or you will
   see an "Invalid redirect_uri" message. For more details, see [the
   Bitbucket documentation](https://confluence.atlassian.com/bitbucket/oauth-faq-338365710.html).

   And grant at least the following permissions:

   ```
   Account: Email, Read
   Projects: Read
   Repositories: Read
   Pull Requests: Read
   Issues: Read
   Wiki: Read and Write
   ```

   ![Bitbucket OAuth settings page](img/bitbucket_oauth_settings_page.png)

1. Select **Save**.
1. Select your newly created OAuth consumer and you should now see a Key and
   Secret in the list of OAuth consumers. Keep this page open as you continue
   the configuration.

   ![Bitbucket OAuth key](img/bitbucket_oauth_keys.png)

1. On your GitLab server, open the configuration file:

   ```
   # For Omnibus packages
   sudo editor /etc/gitlab/gitlab.rb

   # For installations from source
   sudo -u git -H editor /home/git/gitlab/config/gitlab.yml
   ```

1. Add the Bitbucket provider configuration:

   For Omnibus packages:

   ```ruby
   gitlab_rails['omniauth_enabled'] = true

   gitlab_rails['omniauth_providers'] = [
     {
       "name" => "bitbucket",
       "app_id" => "BITBUCKET_APP_KEY",
       "app_secret" => "BITBUCKET_APP_SECRET",
       "url" => "https://bitbucket.org/"
     }
   ]
   ```

   For installations from source:

   ```yaml
   omniauth:
     enabled: true
     providers:
       - { name: 'bitbucket',
           app_id: 'BITBUCKET_APP_KEY',
           app_secret: 'BITBUCKET_APP_SECRET',
           url: 'https://bitbucket.org/' }
   ```

   ---

   Where `BITBUCKET_APP_KEY` is the Key and `BITBUCKET_APP_SECRET` the Secret
   from the Bitbucket application page.

1. Save the configuration file.
1. For the changes to take effect, [reconfigure GitLab][] if you installed via
   Omnibus, or [restart][] if installed from source.
D
Douwe Maan 已提交
124

125 126 127
On the sign in page there should now be a Bitbucket icon below the regular sign
in form. Click the icon to begin the authentication process. Bitbucket will ask
the user to sign in and authorize the GitLab application. If everything goes
128
well, the user will be returned to GitLab and will be signed in.
D
Douwe Maan 已提交
129 130 131

## Bitbucket project import

132 133
Once the above configuration is set up, you can use Bitbucket to sign into
GitLab and [start importing your projects][bb-import].
D
Douwe Maan 已提交
134

135 136
If you want to import projects from Bitbucket, but don't want to enable signing in,
you can [disable Sign-Ins in the admin panel](omniauth.md#enable-or-disable-sign-in-with-an-omniauth-provider-without-disabling-import-sources).
137

138
[bb-import]: ../user/project/import/bitbucket.md
139 140
[reconfigure GitLab]: ../administration/restart_gitlab.md#omnibus-gitlab-reconfigure
[restart]: ../administration/restart_gitlab.md#installations-from-source