【发布时间】:2018-04-23 23:49:59
【问题描述】:
我有一个 ASP.NET Core 2.0 API 作为 Azure 应用服务,并有一个用于 QA 的部署槽,我已经使用了几个月。我在 VS2017 中开发,并使用项目的内置发布到 Azure 应用服务组件发布到 Azure。这工作得很好。
我现在正在尝试将部署移动到 Bamboo 部署服务器。
我通常遵循类似于此链接how to use azure kudu zipdeploy from a bamboo deployment server的过程
在我的 Bamboo 构建中,我运行了一个 Powershell 脚本来调用 dotnet publish 以将发布文件放入输出文件夹中,然后我将这些文件压缩到单个 zip 文件中并将其用作工件。然后,在我的 Bamboo 部署项目中,我引用该工件并运行一个 Powershell 脚本,该脚本使用 Invoke-WebRequest 调用 Kudu 端点,如下所示;
Invoke-WebRequest -Uri "https://userName:userPassword@MySiteDeploymentSlot.scm.azurewebsites.net/api/zipdeploy" `
-InFile zipfileName -ContentType "multipart/form-data" -Method Post -UseBasicParsing
Username 和 UserPassword 是我从 Azure 门户中部署槽的发布配置文件中获得的,ZipFileName 是工件中的 zip 文件,它是我的项目的压缩发布输出。
注意:我现在使用 Kudu URL 中的实际值只是为了让进程正常工作,而不会出现在作为其他人在使用 Powershell 时报告的参数传递给 Powershell 时必须回勾用户名和密码属性的问题对于这个过程。
当脚本运行时,我得到以下信息
StatusCode : 200
StatusDescription : OK
Content :
<!DOCTYPE html>
<html dir="ltr" class="" lang="en">
<head>
<title>Sign in to your account</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-eq...
RawContent : HTTP/1.1 200 OK
Pragma: no-cache
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
x-ms-request-id: 31607f18-c30a-46f3-bdaf-d84a...
Forms :
Headers : {[Pragma, no-cache], [Strict-Transport-Security, max-age=31536000; includeSubDomains],
[X-Content-Type-Options, nosniff], [X-Frame-Options, DENY]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml :
RawContentLength : 34599
由于我得到状态码 200,我假设它已上传,但当我查看 Kudu 部署端点时它没有出现在部署列表中。
我的理解是,您只需将 zip 文件上传到 Kudu zipdeploy 端点,它就会被部署到指定的 Azure 部署槽。但是当我在 Kudo 中查看该站点的文件日期时,它们都表明了我一周前在 VS2017 中所做的最后一次发布。
显然,我在这里遗漏了一些东西。
从 ZipDeploy 返回的响应,即使它是状态 200,在 Head 部分的 Title 属性中也有文本“登录到您的帐户”。我也看到了 DENY (X-Frame-Options: DENY) 这个词,但我不知道这是否与我看到的问题有关。
有什么想法吗?
【问题讨论】:
-
不确定这是否有帮助...我在这里写了一篇关于上传到 kudu 应用程序的文章:powershellposse.com/2017/09/04/…
标签: powershell azure bamboo kudu azure-app-service-envrmnt