是否可以在没有ccproj的情况下部署到需要启动脚本的Azure云服务?

是否可以在没有ccproj的情况下部署到需要启动脚本的Azure云服务?,azure,deployment,azure-cloud-services,octopus-deploy,Azure,Deployment,Azure Cloud Services,Octopus Deploy,我已经做了一些挖掘,但我没有找到任何关于这方面的最新文档: 我有一个.NET4.6解决方案,其中包括许多我现在希望部署到云上的项目,特别是作为Azure云服务 最好不要将创建云服务项目作为我的解决方案的一部分,因为我认为这是一个部署细节,因此与我的解决方案无关,我的解决方案可以很容易地托管在本地IIS机器上,甚至IIS Express上。因此,我发现的所有需要在我的解决方案中添加云服务项目的文档都感觉。。。肮脏的 我为我的部署工具部署了Jenkins和Octopus,如果可能的话,我想让他们直接

我已经做了一些挖掘,但我没有找到任何关于这方面的最新文档:

我有一个.NET4.6解决方案,其中包括许多我现在希望部署到云上的项目,特别是作为Azure云服务

最好不要将创建云服务项目作为我的解决方案的一部分,因为我认为这是一个部署细节,因此与我的解决方案无关,我的解决方案可以很容易地托管在本地IIS机器上,甚至IIS Express上。因此,我发现的所有需要在我的解决方案中添加云服务项目的文档都感觉。。。肮脏的

我为我的部署工具部署了Jenkins和Octopus,如果可能的话,我想让他们直接部署项目-Octopus似乎是开箱即用的,除了一个细节,我有一个启动脚本,需要在Azure云服务上运行:

  • 为确保安装了正确版本的.NET Framework,如果需要,请安装它
  • 安装SSL客户端证书,该证书是与我的另一台服务器通信所必需的

对于本地或本地IIS安装,这不会是一个问题,因为Octopus触手可以在服务器上运行脚本,以确保存在正确版本的.NET Framework并安装SSL证书,但我无法理解如何在Azure云服务上镜像此任务。

首先,您必须从八达通脚本自动部署云服务。例如,在PowerShell中,可以通过以下方式对其进行编码:

function CreateNewDeployment()
{
write-progress -id 3 -activity "Creating New Deployment" -Status "In progress"
Write-Output "$(Get-Date –f $timeStampFormat) - Creating New Deployment: In progress"

$opstat = New-AzureDeployment -Slot $slot -Package $packageLocation -Configuration $cloudConfigLocation -label $deploymentLabel -ServiceName $serviceName

$completeDeployment = Get-AzureDeployment -ServiceName $serviceName -Slot $slot
$completeDeploymentID = $completeDeployment.deploymentid

write-progress -id 3 -activity "Creating New Deployment" -completed -Status "Complete"
Write-Output "$(Get-Date –f $timeStampFormat) - Creating New Deployment: Complete, Deployment ID: $completeDeploymentID"

#StartInstances
}

$packageLocation = "$currentDirectory/$packagefile"
$cloudConfigLocation = "$currentDirectory/$cloudConfigFile"

Import-AzurePublishSettingsFile $publishsettings
Set-AzureSubscription -SubscriptionName $azureSubscription -CurrentStorageAccount $storageAccount

CreateNewDeployment
其次,为了运行启动脚本,您必须使用提升的执行上下文配置启动任务

启动任务是云服务的一项独特功能,使您能够在启动角色之前对角色实例的虚拟机执行配置更改
使用
元素中的
元素在云服务定义(.csdef)文件中定义启动任务。元素包含三个属性,您可以使用它们来影响任务的权限和行为,它们是:

  • 命令行标识要执行的程序或脚本
  • executionContext设置脚本所需的权限级别,以及 可以是有限的,也可以是升高的。配置更改,例如 更改IIS设置将要求在 提升模式
  • taskType可以是简单、前台或 背景。简单任务在角色之前同步执行 开始。前台和后台任务是异步执行的 与角色并行。前台任务可以使角色保持运行 并防止其关闭或回收。后台任务将 如果角色需要关闭或回收,则停止

    Task commandLine=“startup\startup.cmd”executionContext=“highed”taskType=“simple”

参考文件在这里 希望这有帮助 新年快乐! 顺致敬意,
Stéphane

实际上,云服务项目可以帮助您编写所需的文件、打包解决方案并进行部署。这些步骤可以分解为单个任务,其中创作和部署部分由Steffgou和Mr Lister描述

要打包,您需要使用CSPack.exe


还可以看看这里,了解流程。另一个答案中提供的PowerShell将替代本文中的GUI指南:

因此,如果我正确理解了这一点,我需要部署PowerShell脚本(与您提供的示例类似)、包文件、.csdef文件和publishsettings文件(八达通能否从环境/帐户/Azure订阅中提供此功能?从八达通的设置方式可以推断,它会)以及csdef需要引用的任何其他脚本……所有这些工作都意味着云服务项目仍然是正确的方向?