Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

How can I access a private repo within a docker service container?

Antonios Pavlakis January 22, 2021

Hello

 

I am using a docker service in bitbucket-pipelines and calling composer from within that container. However, that container does not have permission to access private repositories in bitbucket.

 

Would I need to create a new user just for the CI with a private key to get this working or is there an easier way to link to the existing account?

1 answer

1 accepted

1 vote
Answer accepted
Theodora Boudale
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
January 25, 2021

Hi @Antonios Pavlakis ,

If you only need to clone (and not push to) another private Bitbucket repo, you can set up Access keys.

Let's say you have repo-A and repo-B, Pipelines is running in repo-A and you want to clone repo-B.

  1. In Bitbucket website, go to repo-A's Repository settings > SSH keys
  2. In that page you can generate an SSH key pair
  3. Copy the public SSH key
  4. Go to repo-B's Repository settings > Access keys
  5. Add there the public key you copied before

You will then be able to clone repo-B from Pipelines builds running in repo-A via SSH. You will need to have admin permissions to both repos to access their Repositories settings page.

Access keys give read-only access, so if you also need to push to repo-B, you'll need a different approach.

If you don't want to tie authentication to a certain user, you can set up OAuth:

If the repos don't belong in the same workspace, you'll need to generate an OAuth consumer in the workspace that owns repo B. You'll need to have admin permissions in the workspace to do that.

Please note that the script in the documentation above is for pushing back to the same repo where Pipelines is running. If you want to push to a different repo, you can adjust the URL in the example to be the one of repo-B and use that URL in the push command (no need to change origin).

I hope this helps, please feel free to let me know if you have any questions.

Kind regards,
Theodora

Joseph Saliba January 13, 2022

Hi,

 

This is a bit old now, but just pointing out that I was looking for a solution for the same problem.

The real problem is that the pipeline is fetching the repo, it's the docker image builder (another vm) that is doing that.

So far, the solutions I have run across are either using buildkit (not yet supported by bitbucket pipelines) or by passing the private and public key as variables and setting them in the .ssh dir of your user. 

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events