bitbucket.md 5.5 KB
Newer Older
D
Douwe Maan 已提交
1 2 3 4
# Integrate your server with Bitbucket

Import projects from Bitbucket and login to your GitLab instance with your Bitbucket account.

5
To enable the Bitbucket OmniAuth provider you must register your application with Bitbucket.
D
Douwe Maan 已提交
6 7 8 9
Bitbucket will generate an application ID and secret key for you to use.

1.  Sign in to Bitbucket.

10
1.  Navigate to your individual user settings (Manage account) 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.
D
Douwe Maan 已提交
11 12 13 14 15 16

1.  Select "OAuth" in the left menu.

1.  Select "Add consumer".

1.  Provide the required details.
17
    - Name: This can be anything. Consider something like `<Organization>'s GitLab` or `<Your Name>'s GitLab` or something else descriptive.
D
Douwe Maan 已提交
18
    - Application description: Fill this in if you wish.
19
    - Callback URL: leave blank.
D
Douwe Maan 已提交
20
    - URL: The URL to your GitLab installation. 'https://gitlab.company.com'
21 22 23 24 25

1.  Grant at least the following permissions.
    - Account: Email
    - Repositories: Read
    
D
Douwe Maan 已提交
26 27
1.  Select "Save".

28 29
1.  Select your newly created OAuth consumer.

30 31
1.  You should now see a Key and Secret in the list of OAuth customers.
    Keep this page open as you continue configuration.
D
Douwe Maan 已提交
32 33 34 35 36 37 38 39 40

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

    For omnibus package:

    ```sh
      sudo editor /etc/gitlab/gitlab.rb
    ```

T
Tobias Stöckler 已提交
41
    For installations from source:
D
Douwe Maan 已提交
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

    ```sh
      cd /home/git/gitlab

      sudo -u git -H editor config/gitlab.yml
    ```

1.  See [Initial OmniAuth Configuration](omniauth.md#initial-omniauth-configuration) for initial settings.

1.  Add the provider configuration:

    For omnibus package:

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

    For installation from source:

    ```
      - { name: 'bitbucket', app_id: 'YOUR_KEY',
        app_secret: 'YOUR_APP_SECRET' }
    ```

73
1.  Change 'YOUR_KEY' to the key from the Bitbucket application page from step 7.
D
Douwe Maan 已提交
74 75 76 77 78

1.  Change 'YOUR_APP_SECRET' to the secret from the Bitbucket application page from step 7.

1.  Save the configuration file.

79 80
1.  If you're using the omnibus package, reconfigure GitLab (```gitlab-ctl reconfigure```).

D
Douwe Maan 已提交
81 82
1.  Restart GitLab for the changes to take effect.

83 84
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.
D
Douwe Maan 已提交
85 86 87 88
If everything goes well the user will be returned to GitLab and will be signed in.

## Bitbucket project import

89
To allow projects to be imported directly into GitLab, Bitbucket requires two extra setup steps compared to GitHub and GitLab.com.
D
Douwe Maan 已提交
90 91 92

Bitbucket doesn't allow OAuth applications to clone repositories over HTTPS, and instead requires GitLab to use SSH and identify itself using your GitLab server's SSH key.

93
### Step 1: Public key
D
Douwe Maan 已提交
94

95
To be able to access repositories on Bitbucket, GitLab will automatically register your public key with Bitbucket as a deploy key for the repositories to be imported. Your public key needs to be at `~/.ssh/bitbucket_rsa.pub`, which will expand to `/var/opt/gitlab/.ssh/bitbucket_rsa` for omnibus package and to `/home/git/.ssh/bitbucket_rsa.pub` for installations from source.
D
Douwe Maan 已提交
96

97 98 99
If you have that file in place, you're all set and should see the "Import projects from Bitbucket" option enabled. If you don't, do the following:

1. Create a new SSH key:
D
Douwe Maan 已提交
100 101

    ```sh
102
    sudo -u git -H ssh-keygen
D
Douwe Maan 已提交
103 104
    ```

105
    When asked `Enter file in which to save the key` specify the correct path, eg. `/var/opt/gitlab/.ssh/bitbucket_rsa` or `/home/git/.ssh/bitbucket_rsa`.
106 107 108 109 110
    Make sure to use an **empty passphrase**.

1. Configure SSH client to use your new key:

    Open the SSH configuration file of the git user.
111 112 113 114 115 116 117 118
    
    For omnibus package:
    
    ```sh
      sudo editor /var/opt/gitlab/.ssh/config
    ```
    
    For installations from source:    
D
Douwe Maan 已提交
119 120

    ```sh
121
      sudo editor /home/git/.ssh/config
D
Douwe Maan 已提交
122 123
    ```

124 125 126 127 128 129 130
    Add a host configuration for `bitbucket.org`.

    ```sh
    Host bitbucket.org
      IdentityFile ~/.ssh/bitbucket_rsa
      User git
    ```
D
Douwe Maan 已提交
131

132
### Step 2: Known hosts
D
Douwe Maan 已提交
133

134
To allow GitLab to connect to Bitbucket over SSH, you need to add 'bitbucket.org' to your GitLab server's known SSH hosts. Take the following steps to do so:
D
Douwe Maan 已提交
135

136
1. Manually connect to 'bitbucket.org' over SSH, while logged in as the `git` account that GitLab will use:
D
Douwe Maan 已提交
137

138 139 140
    ```sh
    sudo -u git -H ssh bitbucket.org
    ```
D
Douwe Maan 已提交
141

142
1.  Verify the RSA key fingerprint you'll see in the response matches the one in the [Bitbucket documentation](https://confluence.atlassian.com/display/BITBUCKET/Use+the+SSH+protocol+with+Bitbucket#UsetheSSHprotocolwithBitbucket-KnownhostorBitbucket'spublickeyfingerprints) (the specific IP address doesn't matter):
D
Douwe Maan 已提交
143 144

    ```sh
145 146 147
    The authenticity of host 'bitbucket.org (207.223.240.182)' can't be established.
    RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
    Are you sure you want to continue connecting (yes/no)?
D
Douwe Maan 已提交
148 149
    ```

150 151 152
1. If the fingerprint matches, type `yes` to continue connecting and have 'bitbucket.org' be added to your known hosts.

1. Your GitLab server is now able to connect to Bitbucket over SSH.
D
Douwe Maan 已提交
153

154
1. Restart GitLab to allow it to find the new public key.
D
Douwe Maan 已提交
155

156
You should now see the "Import projects from Bitbucket" option on the New Project page enabled.