Cloning another Bitbucket repository in Bitbucket Pipelines
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.