This post was written by Bitbucket user Ayush Sharma. 


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.

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.

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.

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

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.

Author bio: Ayush Sharma is a software engineer specializing in infrastructure and automation. In his free time he enjoys hot tea and a good book.

This post was originally posted in Ayush Sharma’s Notes.

Love sharing your technical expertise? Learn more about the Bitbucket writing program.

Looking to upgrade your Bitbucket Cloud plan?

Cloning another Bitbucket repository in Bitbucket Pipelines