短的問題:一個Web應用程序壓縮包的Azure的手臂模板部署編程方式使用打造神器
我在想,如果在MSDeploy資源(部署蔚藍的應用服務)以下packageUri參數可以指向VSTS打造的位置釋放管道使用的服務器放置位置。
如何以編程方式獲得acccess構建放置位置? 要使用vsts api?哪個? 也許這個鏈接可以提供一些線索燈:
grab-your-build-artifacts-from-visual-studio-online
Basic authentication for the REST APIs
"resources": [
{
"name": "MSDeploy",
"type": "extensions",
"location": "[parameters('location')]",
"apiVersion": "2014-06-01",
"dependsOn": [
"[concat('Microsoft.Web/sites/', parameters('siteName'))]"
],
"tags": {
"displayName": "ContentDeploy"
},
"properties": {
"packageUri": "[concat(parameters('packageUrl'), parameters('sasToken'))]",
"dbType": "None",
"connectionString": "",
"setParameters": {
"IIS Web Application Name": "[parameters('siteName')]"
}
}
}
]
較長的問題,並解釋: 我正在使用VSTS發佈定義在開發期間部署我的Web應用程序基礎結構。 Web應用程序將由我的VSTS構建版本打包並上傳到服務器放置位置。我正在使用本地(我的PC)代理進行構建和發佈管道。
儘管我可以使用vsts進行web應用部署部署Azure應用服務發佈任務(知道如何查找構建工件),但我想從我打算構建的Web應用程序以編程方式自動部署多個Web應用。
我想知道這個.zip web應用程序包是否可以以某種方式提供給我的ARM部署模板。每個人都建議將.zip軟件包複製到帶有SAS令牌的存儲塊,並且這種方式發佈「部署天藍色應用服務」可以找到它。 我想避免這種複製。其實我至少要以編程方式下載此軟件包,並最終將其複製到存儲blob容器中,如果我無法按照要求進行操作。
這是我的一點研究,我做的事:
我打開代理日誌記錄都構建和發佈
Some Build variables:
BUILD_SOURCESDIRECTORY=F:\agent\_work\1\s
BUILD_STAGINGDIRECTORY=F:\agent\_work\1\a
Some release variables:
[SYSTEM_ARTIFACTSDIRECTORY] --> [F:\agent\_work\r3\a]
[RELEASE_ARTIFACTS_ECOMMERCESITECI_SOURCEVERSION] --> [91]
[BUILD_BUILDNUMBER] --> [20161230.12]
[BUILD_BUILDID] --> [85]
[SYSTEM_TEAMPROJECTID] --> [7ab6c2a4-208d-411d-81e5-5e88b26f2252]
[RELEASE_RELEASEWEBURL] --> [https://vstsaccount.visualstudio.com/7ab6c2a4-208d-411d-81e5-5e88b26f2252/_apps/hub/ms.vss-releaseManagement-web.hub-explorer?releaseId=103&_a=release-summary]
RELEASE_RELEASEWEBURL是一個有趣的網頁,我可以按僞影顯示所有鏈接的來源(在我的情況下,我有一個主要來源來自我的CI構建。)。然後,我可以按照鏈接進入特定的版本EcommerceSiteCI/Build 20161230.12,並且我可以按下載按鈕(從下面的鏈接)下載我之後的.zip軟件包。我想了解它,但從我的Arm模板編程。我想創建一個Web應用程序或Api應用程序,它可以通過編程方式發現此.zip軟件包,並使用它來使用「Web Deploy for Web Apps」資源部署應用程序。
https://vstsaccount.visualstudio.com/vstsproject/_build/index?buildId=85&_a=summary&tab=artifacts
看着小提琴手我設法看到什麼是資產下載的網址:
所以我可以看到基於[BUILD_BUILDID] - > [85]和[SYSTEM_TEAMPROJECTID] - > [7ab6c2a4-208d-411d-81e5-5e88b26f2252]我可以組裝這個URL。 唯一的是如何驗證這個請求。當我輸入上述地址時,系統提示我使用Microsoft帳戶登錄,我看到它是oauth 2.0身份驗證。 url是這樣的: https://login.live.com/oauth20_authorize.srf?response_type=code&client_id=51483342-012c-4d86-bf138-cf50c7252078&scope=openid+profile+email+offline_access&response_mode=form_pos etc ...(一些加密的字符串 - 可能代表.zip包的位置被省略)。
即使我無法將此下載URL提供給MSDeploy arm資源 如果我可以通過編程方式下載並上載到存儲blob容器併爲MSDeploy生成SAS令牌來找到它,那將是非常好的。
那麼如何以編程方式獲得acccess構建放置位置? 謝謝 Rad
敢肯定你只需要使用「身份驗證」頭 – 4c74356b41
這應該是一個非交互式的用戶提供令牌的承載。正如我上面所說,我需要知道如何檢索Web應用程序或Web作業背後的最新或特定工件.zip軟件包,並使用模板和參數開始部署PaaS基礎架構作爲代碼和MS部署,如下所示:ResourceManagementClient client = new ResourceManagementClient(新的TokenCloudCredentials(subscriptionId,token);); client.Deployments.CreateOrUpdate(resourceGroup,correlationId.ToString(),新的DeploymentProperties(模式,模板,參數等));有什麼方法可以爲VSTS Build API使用Persona Access令牌之類的東西。 – Rad
我剛剛發現瞭如何獲取令牌,但在我發現下面的代碼的示例中,他們創建了新令牌令牌,而我需要TokenCloudCredentials實例。我不知道兩者有什麼區別。 var cc = new ClientCredential(「{client-id}」,「{client-secret}」); var context = new AuthenticationContext(「https://login.windows.net/{tenant-id}」); var token = await context.AcquireTokenAsync(「https://management.azure.com/」,cc);假設我找到了一種方法來與服務中的vsts api進行交互,如何獲得來自某個版本的.zip神器 – Rad