I recently had a use-case where I wanted to clone another Bitbucket repository during a Pipelines execution. Doing this is very simple, but there is a lot of conflicting information online, so I thought I would document the steps here.

Imagine a very simple Pipeline that looks like this:

pipelines:
  default:
    - step:
        script:
          - git clone git@bitbucket.org:ayushsharma/my-submodules.git

The repository that triggers the Pipeline will need permission to clone my-submodules.

Create SSH keys for the main repository

In Bitbucket, go to the repository SSH keys page under Settings > Pipelines > SSH keys.

Cloning another Bitbucket repository in Bitbucket Pipelines - Settings > Pipelines > SSH keys

Next, click on Generate keys to let Bitbucket auto-generate a random, secure SSH key-pair. You can also upload a custom key-pair if you want.

Cloning another Bitbucket repository in Bitbucket Pipelines - Generate keys

Once completed, click Copy public key. We will need to paste this in the next step.

Add SSH public key in the target repository

Go to the my-submodules repository. Under Settings > General > Access keys, you should see the option to add SSH public keys to gain read-only access.

Cloning another Bitbucket repository in Bitbucket Pipelines - Settings > General > Access keys

Click Add key, enter a label, and paste the public key we copied in the previous step.

Cloning another Bitbucket repository in Bitbucket Pipelines - Add key

Our main repository now has read-only permissions to clone my-submodules from within its Pipelines. After the above configuration, executing a build for the repository will show all-green.

Cloning another Bitbucket repository in Bitbucket Pipelines - Successful deployment!

Resources