[英]Azure DevOps Pipeline to non-Azure site via FTP App_Offline
如果没有 App_Offline,您将无法覆盖活动站点的 .dll 位,我也无法删除它们,因此我肯定需要使站点脱机。 我不想手动执行此操作,因为它会降低管道的用处。
我不能是唯一/第一个需要这样做的人 - 有没有人有一些 YAML 可以完成这项特定工作?
您可以按照此处的说明使用“EnableMSDeployAppOffline”功能在部署之前将您的应用程序设置为离线: Web 发布应用程序离线更新和使用校验和。
如果它不起作用,您还可以添加一个PowerShell 任务来运行脚本,如下所示停止应用程序,部署然后重新启动应用程序:
param($websiteName, $packOutput)
$website = Get-AzureWebsite -Name $websiteName
# get the scm url to use with MSDeploy. By default this will be the second in the array
$msdeployurl = $website.EnabledHostNames[1]
$publishProperties = @{'WebPublishMethod'='MSDeploy';
'MSDeployServiceUrl'=$msdeployurl;
'DeployIisAppPath'=$website.Name;
'Username'=$website.PublishingUsername;
'Password'=$website.PublishingPassword}
Write-Output "Stopping web app..."
Stop-AzureWebsite -Name $websiteName
Write-Output "Publishing web app..."
$publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1"
. $publishScript -publishProperties $publishProperties -packOutput $packOutput
Write-Output "Starting web app..."
Start-AzureWebsite -Name $websiteName
有关详细信息,请参阅线程: VSTS - 在部署之前使应用程序脱机。
我让上传工作...
第 1 步:将 App_Offline.htm 文件添加到 repo
第 2 步:添加一个初始 FTP 步骤以在站点本身的 ftp 上传之前使站点脱机。 像这样(设置与实际部署ftp使用的设置类似,除了filePatterns):
- task: FtpUpload@2
inputs:
credentialsOption: 'inputs'
serverUrl: 'ftp://ftpx.ftptothesite.com' # 3rd party hoster site address
username: '$(ftpUsername)'
password: '$(ftpPassword)'
rootDirectory: '$(Build.ArtifactStagingDirectory)/s'
filePatterns: 'app_offline.htm'
remoteDirectory: '/web/content/'
preservePaths: true
trustSSL: true
displayName: 'Take site offline'
这使得上传工作,但使远程站点脱机(因为那里的根目录中有一个 app_offline.htm)。
第三步:删除 app_offline.htm 注意 FTP 任务有一个“customCmds”参数,MS 描述为:
可选 FTP连接后将发送到远程 FTP 服务器的命令
我的斜体。 自定义命令在定义它们的 FTP 任务之前运行,而不是之后。 因此,我需要另外一个 FTP 上传任务,这是良性的,但最后一个命令是DELE /web/content/app_offline.htm
。 请注意,需要完整路径,大概是因为它在设置 remoteDirectory 之前运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.