我已将Visual Studio Online连接到我的Azure网站。这不是.NET ASP.NET MVC项目,只是几个静态HTML文件。 现在我希望将我的文件上传到Azure,并在我提交/推送到TFS之后“在线”。 当执行构建定义(基于GitContinuousDeploymentTemplate.12.xaml)时,它会失败并显示一条明显的消息:
Exception Message: The process parameter ProjectsToBuild is required but no value was set.
我的问题:如何设置构建定义,以便在提交时自动将我的静态文件复制到Azure? 或者我是否需要为此任务使用不同的工具(如WebMatrix)。
更新
我最终创建了一个空网站,并使用webdeploy从Visual Studio手动部署它。在Azure上创建本地Git时可考虑的其他可能选项。
答案 0 :(得分:4)
好的,让我试着给你一个答案:
我遇到了类似的问题。我有一个静态的HTML,JS和CSS站点,我需要在TFS中使用该项目,并希望使用持续部署让我的生活更轻松。所以我所做的就是:
当您在TFS中使用Git时,您将获得存储库的URL - 类似于:
https://yoursite.visualstudio.com/COLLECTION/PROJECT/_git/REPOSITORY
但是,为了访问存储库本身,如果您尝试将带有身份验证的URL放入Azure,则需要进行身份验证(目前无法进行身份验证):
https://username:password@TFS_URL
它不接受它。因此,为了绑定部署,您所做的就是将存储库的URL放在那里(部署将失败,但是它将为我们准备环境以便继续)。
但是,当您将其链接到那里时,您可以在网站的配置选项卡上获得DEPLOYMENT TRIGGER URL。它的作用是当你将更改推送到你的存储库时(比如GitHub),GitHub会向该链接发出HTTP POST请求,并告诉Azure将新代码部署到网站上。
现在我去了Kudu,这是处理部署的Azure网站的底层系统。我想如果您将HTTP POST(JSON格式)中的正确内容发送到DEPLOYMENT TRIGGER URL,您可以让它从任何存储库部署代码,甚至可以进行身份验证!
所以剩下要做的就是在TFS站点上生成备用身份验证凭据并将整个请求放在一起。我将整个过程包装到以下PowerShell脚本中:
# Windows Azure Website Configuration
#
# WAWS_username: The user account which has access to the website, can be obtained from https://manage.windowsazure.com portal on the Configure tab under DEPLOYMENT TRIGGER URL
# WAWS_password: The password for the account specified above
# WAWS: The Azure site name
$WAWS_username = ''
$WAWS_password = ''
$WAWS = ''
# Visual Studio Online Repository Configuration
#
# VSO_username: The user account used for basic authentication in VSO (has to be manually enabled)
# VSO_password: The password for the account specified above
# VSO_URL: The URL to the Git repository (branch is specified on the https://manage.windowsazure.com Configuration tab BRANCH TO DEPLOY
$VSO_username = ''
$VSO_password = ''
$VSO_URL = ''
# DO NOT EDIT ANY OF THE CODE BELOW
$WAWS_URL = 'https://' + $WAWS + '.scm.azurewebsites.net/deploy'
$BODY = '
{
"format": "basic",
"url": "https://' + $VSO_username + ':' + $VSO_password + '@' + $VSO_URL + '"
}'
$authorization = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($WAWS_username+":"+$WAWS_password ))
$bytes = [System.Text.Encoding]::ASCII.GetBytes($BODY)
$webRequest = [System.Net.WebRequest]::Create($WAWS_URL)
$webRequest.Method = "POST"
$webRequest.Headers.Add("Authorization", $authorization)
$webRequest.ContentLength = $bytes.Length
$webRequestStream = $webRequest.GetRequestStream();
$webRequestStream.Write($bytes, 0, $bytes.Length);
$webRequest.GetResponse()
我希望我在这里写的内容有道理。您需要的最后一件事是将此脚本绑定到Git中的钩子,因此当您执行推送时,脚本会在脚本和站点部署后自动触发。我还没想到这件作品。
这也应该用于部署PHP / Node.js和类似的代码。
答案 1 :(得分:0)
最简单的方法是将它们添加到空的ASP .NET项目中,将它们设置为复制到输出文件夹,然后“构建”项目。
如果不这样做,您可以修改构建过程模板,但这是“最后的手段”选项。