2016-10-03 52 views
0

我想通過首先從bitbucket獲取代碼如下所示來自動化構建過程。powershell腳本使用訪問令牌下載bitBucket私有存儲庫

$output = "E:\FileName.xyz" 
$url = 'https://bitbucket.org/WhatEver/WhatEverBranchName/get/master.zip' 
$wc = New-Object -TypeName System.Net.WebClient 
$wc.Headers.Add('Authorization','token oinksdilikncl--MyAccessToken--ioiwcnoisif89kfg9') 
$wc.DownloadFile($url, $output) 

當我執行此,我收到在FileName.xyz該文件是一個重定向我到位桶的loginpage一個html文件,其基本要求creds,即使我suppiled訪問令牌。

我在哪裏錯了?有沒有其他的方式可以這麼說,Invoke-Webrequest?或者有人親切地指示我給代碼示例嗎?

+0

[也許有關](https://confluence.atlassian.com/bitbucket/oauth-on-bitbucket-cloud-238027431.html)。 –

回答

2

我在PowerShell中絕對沒有經驗,但我試圖在節點中做類似的任務,這裏是我的發現。

  1. 首先,在您的bitbucket帳戶設置的訪問管理部分創建一個「Oauth」。這給你一個「鑰匙」和一個「祕密」。

  2. 現在使用這些Key和Secret,你可以向Bitbucket詢問一個令牌。在我的情況下,我提出了一個http請求到https://bitbucket.org/site/oauth2/access_token。在你的情況下,你應該使用相當於CURL(Invoke-RestMethod也許?)。 curl命令是這樣的:

    $ curl -X POST -u "yourKeyHere:yourSecretHere" https://bitbucket.org/site/oauth2/access_token -d grant_type=client_credentials 
    

    我的http請求是這樣的(使用節點的SuperAgent)與我Content-Type設置爲application/x-www-form-urlencoded

    request.post("https://yourKeyHere:[email protected]/site/oauth2/access_token").send('grant_type=client_credentials'); 
    
  3. 現在,你有令牌,你程序或者你的命令可以用它來克隆私人回購。但是URL到您的回購應該是這樣的(保持托架周圍令牌):

    https://x-token-auth:{tokenHere}@bitbucket.org/youRepoOwnerHere/RepoNameHere.git 
    
  4. 現在,你有你的機器上的代碼庫的整體。但你想要一個單一的文件,而不是整個回購,我推薦你這個Retrieve a single file from a repository,但記得使用上述回購網址與令牌,而不是一個正常的回購網址。

相關問題