7

I would like to install a private package for my python app with pip.

My package is stored in a git repo on Azure DevOps (Visual Studio Team Services).

I see that git is supported by pip, but I cannot determine a workable format for the URL for Azure.

I would like to avoid the Credential Manager. I have tried both git+ssh (with key) and git+https (with Personal Access Token).

Is it possible to do this with Azure/VSTS?

For context, I referenced these resources:

https://www.revsys.com/tidbits/using-private-packages-python/

Is it possible to use pip to install a package from a private github repository?

Here are some of my attempts:

git+https://myUsername:myAccessToken@myCompany.visualstudio.com/myProject/_git/myPackage.git
git+https://<myAccessToken>@visualstudio.com/<myCompany>/<myProject>.git@<ref>
git+https://<myUsername>:<myAccessToken>@<myCompany>.visualstudio.com/<myteam>/<myProject>.git@<ref>
git+https://<myUsername>:<myAccessToken>@visualstudio.com/<myCompany>/<myProject>.git@<ref>
git+https://<myUsername>:<myAccessToken>@visualstudio.com/<myCompany>/<myProject>.git@<ref>
git+ssh://myCompany@vs-ssh.visualstudio.com:v3/myCompany/<myProject>.git@<ref>
Scott Coldwell
  • 868
  • 7
  • 14
  • 1
    Not sure this helps, but could you please try [this](https://developercommunity.visualstudio.com/content/problem/362548/azure-devops-python-unable-to-install-dependency-f.html) – Jayendran Nov 07 '18 at 03:23
  • @jayendran, that is exactly the problem! My scenario is outside of the build pipeline, but that led me to the correct format. Formulate that into an answer and I'll mark it correct. Thank you! – Scott Coldwell Nov 07 '18 at 20:18

1 Answers1

2

It is possible, please have a look it to this existing Request

As per that, you need to follow the below steps,

  • Check the Allow script to access the OAuth token in the Agent job phase
  • Include the Task: command Line
  • Add $(System.AccessToken) between repo clone URL

This above is the System variable, you can find the full details here

You can also use the Rest API like below for getting the access token

$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build-release/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 1000)"
Jayendran
  • 9,638
  • 8
  • 60
  • 103