Короткого вопрос:Azure Arm развертывание шаблона из приложения почтового пакета веб программно с помощью построить артефакт
мне было интересно, если параметр packageUri в MSDeploy ресурсе (Развертывание лазурной службы приложения) ниже может указывать на расположение VSTS строить Место выгрузки сервера, которое используется конвейером Release.
Как программно получить доступ к построению местоположения перетаскивания? Чтобы использовать 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')]"
}
}
}
]
Longer вопрос и объяснение: Я использую определение выпуска VSTS для развертывания инфраструктуры веб-приложений во время разработки. Веб-приложение будет построено и упаковано с помощью моей сборки VSTS и загружено на серверную папку. Я использую агент на месте (мой компьютер) для моего конвейера сборки и выпуска.
Хотя я могу выполнять развертывание веб-приложений с помощью vsts. Развертывание задачи выпуска Azure App Service (которая знает, как найти артефакты сборки), я хочу сделать автоматическое развертывание нескольких веб-приложений программным путем из веб-приложения, которое я собираюсь построить.
Я хочу знать, может ли этот пакет .zip веб-приложений каким-то образом быть доступен для моего шаблона развертывания ARM. Все рекомендуют копировать пакет .zip в блок памяти с маркером SAS, и таким образом релиз «Deploy azure app service» может найти его. Я хочу избежать этого копирования. На самом деле я хочу, по крайней мере, программно загрузить этот пакет и, в конечном итоге, скопировать его в контейнер контейнера памяти, если я не смогу это сделать, как было задано.
Вот мое небольшое исследование, я сделал:
Я включил протоколирования агента как для сборки и выпуска
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. Я хотел бы создать веб-приложение или приложение Api, которое может программно обнаружить этот .zip-пакет и использовать его для развертывания приложения, используя ресурс «Веб-развертывание для веб-приложений».
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 и т. Д. (Некоторая зашифрованная строка, возможно, представляет собой расположение пакета .zip, опущена).
Даже если я не могу сделать этот URL-адрес загрузки доступным для ресурса MSDeploy , было бы здорово, если бы я мог программно загрузить его и загрузить в контейнер с блоком хранения и сгенерировать токен SAS для MSDeploy, чтобы его найти.
Итак, как программно получить доступ к построению места падения? Спасибо Рад
уверен, что вам просто необходимо предоставить предъявитель маркеров с помощью «Authentication» заголовка – 4c74356b41
Это должна быть не интерактивным пользователем. Как я уже сказал выше, мне нужно знать, как получить последний или конкретный пакет .zip артефакта за веб-приложением или веб-заданием и начать развертывание инфраструктуры PaaS в качестве кода и развертывания MS с использованием шаблона и параметра, например: ResourceManagementClient client = new ResourceManagementClient (новые TokenCloudCredentials (подписка, токен);); client.Deployments.CreateOrUpdate (resourceGroup, correId.ToString(), new DeploymentProperties (режим, шаблон, параметры ... и т. Д.)); Есть ли способ использовать что-то вроде Persona Access Token для VSTS Build API. – Rad
Я только узнал, как получить токен, но в примере, где я нашел код ниже, они создают новые TokenCredentials из этого токена, в то время как мне нужен экземпляр TokenCloudCredentials. Я не знаю, в чем разница между ними. var cc = new ClientCredential ("{client-id}", "{client-secret}"); var context = new AuthenticationContext ("https://login.windows.net/{tenant-id}"); var token = ожидание context.AcquireTokenAsync ("https://management.azure.com/", cc); Скажем, я нашел способ взаимодействия с vsts api из службы, как получить .zip-артефакт, исходящий из определенной сборки. – Rad