2017-08-31 71 views
0

我在Team Services中有一個簡單的生成設置。構建只需從Team Services託管的Git倉庫中下載源代碼,然後執行Powershell腳本。TFS Team Services在構建定義中使用來自變量組的Azure KeyVault機密

Powershell腳本接收4個參數;

-SiteName "$(AppServiceName)" -AzureRMTenantID "$(AzureRMTenantID)" -AzureRMUN "$(AzureRMUN)" -AzureRMPW "$(AzureRMPW)" 

當構建排隊時手動輸入AppServiceName。

3個AzureRM *參數應該來自我鏈接到構建定義的變量組;

variable configuration within the Build Job 的變量組AzureDevOps被配置爲從鑰匙天青保管箱鏈路祕密作爲變量;

Variable Group configured in the Library

基礎上的一切,我已經能夠找到關於這種模式,現在看來似乎應該只是工作。

作爲臨時健全性檢查,我在我的powershell腳本中輸出變量,以便我可以確認它們是否正確傳遞。

到目前爲止,我還沒有能夠正確打印任何AzureRM *變量的值,這導致我認爲他們是不是按預期方式通過。

Generating script. 
Formatted command: . 'd:\a\1\s\AppServices\Create Canned App Service Application.ps1' -SiteName "Testers" -AzureRMTenantID "" -AzureRMUN "" -AzureRMPW "" 
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -File "d:\a\_temp\23b9a27a-4b6d-4232-8e24-150173e08915.ps1" 
Working Set of Variables: 
SiteName: Testers 
ResourceGroup: Applications 
ASE Name: appservices-ase 
Location: East US 
Additional Variables: 
AzureRMTenantID: 

我不希望在這裏的日誌命令中打印變量;

Formatted command: . 'd:\a\1\s\AppServices\Create Canned App Service Application.ps1' -SiteName "Testers" -AzureRMTenantID "" -AzureRMUN "" -AzureRMPW "" 

但我希望他們能印在我的腳本中,我明確地寫出來;

Write-Host "Working Set of Variables:`nSiteName: "$SiteName"`r`nResourceGroup: "$RG"`r`nASE Name: "$ASEName"`r`nLocation: "$Location 
Write-Host "Additional Variables:`nAzureRMTenantID: "$AzureRMTenantID"`r`n"$AzureRMUN"`r`n"$AzureRMPW 

如果我在本地運行PS腳本,則值按預期打印;

PS C:\ashley\scm\AzureAutomation\AppServices> & '.\Create Canned App Service Application.ps1' -SiteName "tester" -AzureRMTenantID 12345 -AzureRMUN user -AzureRMPW 1234 
Working Set of Variables: 
SiteName: tester 
ResourceGroup: Applications 
ASE Name: appservices-ase 
Location: East US 
Additional Variables: 
AzureRMTenantID: 12345 
user 
1234 

有誰知道如何使這項工作?我想知道是否該問題與KeyVault權限有關,因爲請求來自Team Services中內置的「託管的2017」代理隊列。

回答

0

Key Vault支持目前僅適用於發佈定義。您可以創建釋放定義並將您的Git Repo鏈接爲工件,並且可以實現相同。

我在將Azure Keyvault VG鏈接到BD時收到此錯誤。 enter image description here

+0

有趣的是,我沒有在我所有的dorking中得到任何類似的錯誤。如果我,我可能不會結束髮布這個問題。這個錯誤顯示在門戶網站或其他地方? – Sage

+0

@Sage我認爲我們最近開始顯示錯誤,並且這些更改可能還沒有到達您的帳戶。您可以像starain-MSFT –

+0

Hi @Harshil指出的那樣添加KeyVault任務,鏈接到構建定義時仍然沒有錯誤消息。不過不用擔心,我理解KeyVault支持的變量組在構建定義中不起作用。這是我們能夠在我們的環境中解決的問題。 我正在尋找重用Jenkins的PS腳本以在發佈管理中執行相同的工作。最後,我選擇評論AzureRMLogin流程(需要這些變量),並使用內置於Azure Task的Powershell來完成這項工作。 – Sage

1

首先,您不能打印出祕密變量的值,您可以將數據發送到服務(例如Web API)以在構建/發佈期間獲取實際數據。其次,密鑰庫祕密變量用於發佈,它將在發佈期間添加Azure密鑰保管庫任務。 Link secrets from an Azure Key vault as variables

如果您在構建中使用,您將獲得空值。您可以將Key Vault Task添加到構建定義中,然後可以在以下任務中使用相關變量。(不需要鏈接到構建定義中的變量組)

+0

感謝starain-MSFT,我會試着將它作爲一個發佈,並且看看它是否有幫助。未來有沒有計劃在構建定義中支持這一點? – Sage

+0

@Sage沒有官方文章提到它,但你可以提交用戶聲音[這裏](https://visualstudio.uservoice.com/forums/330519-visual-studio-team-services/category/145254-ci-build) 。另一方面,我的答覆/答案是否解決了您的原始問題? –

相關問題