短的问题:一个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