2017-02-01 51 views
0

有兩個項目,例如: Project1和Project2。 現在在project2中,我們需要創建一個發佈定義,其中我們需要複製project1構建定義的構建輸出。

問題是我們無法在Project2版本中爲Project1構建定義提供工件。

如果我們可以從Project2訪問project1的$(Build.BuildNumber)變量,則將解析prolem。

請建議。

謝謝。

+0

您可以從相同的構建定義構建兩個項目。那麼兩者將共享相同的「環境」屬性。 –

回答

0

您可以通過REST API,簡單的步驟訪問的內部版本號:

  1. 在項目中創建與此代碼一個新的PowerShell腳本文件:

代碼:

Param(
    [string]$teamProject, 
    [string]$collectionURL, 
    [string]$buildId, 
    [string]$userName, 
    [string]$password 
    ) 
$basicAuth = ("{0}:{1}" -f $userName,$password) 
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth) 
$basicAuth = [System.Convert]::ToBase64String($basicAuth) 
$headers = @{Authorization=("Basic {0}" -f $basicAuth)} 
$url="$($collectionURL)$($teamProject)/_apis/build/builds/$($buildId)?api-version=2.0" 
Write-Output $url 
Function GetBuildNumber{ 
    $result = Invoke-RestMethod -Uri $url -headers $headers -Method Get 
    Write-Output $result.buildNumber 
    Write-Host "##vso[task.setvariable variable=anotherBuildNumber;]$($result.buildNumber)" 
} 
GetBuildNumber 
  1. 簽入源代碼管理
  2. 隊列構建並公佈文物
  3. 編輯您的版本定義
  4. 添加這些變量

​​

  • 添加PowerShell的任務,你的版本定義。

    腳本文件名:[您的powershell腳本文件在工件中,例如$(System.DefaultWorkingDirectory)/PowerShellVnext/TFS2015U2Solution/PowerShellModuleProject1/RestTest.ps1];

    參數:-teamProject $(teamProject)-collectionURL $(System.TeamFoundationCollectionUri)-buildId $(buildId)-userName $(用戶名)-passwor $(密碼)

  • 之後的內部版本號值存儲在另一個生成號變量中。

    0

    沒有鏈接其他團隊項目現在建立在TFS文物特徵,但作爲一種解決方法,你可以Project2中釋放定義添加Windows計算機上的文件複製任務複製從PROJECT1的工件。這question供您參考。

    +0

    感謝Andy-MSFT ...我們需要複製的文件夾是作爲構建輸出的一部分創建的,其名稱包含內部版本號。由於其他團隊項目的內部版本號無法訪問,因此我們也不能使用Windows機器文件副本。 – hanu

    相關問題