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

时间:2015-12-31 17:00:18

标签: azure deployment azure-cloud-services octopus-deploy

我已经做了一些挖掘,但我没有找到任何最近的文件:

我有一个.NET 4.6解决方案,包含许多我现在希望部署到云中的项目 - 特别是作为Azure云服务。

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

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

  • 要确保安装了正确版本的.NET Framework,并在需要时安装它。
  • 安装与我的其他服务器通信所需的SSL客户端证书。

对于内部部署或本地IIS安装,这不会有问题,因为Octopus Tentacle可以在服务器上运行脚本以确保存在正确版本的.NET Framework和SSL的安装cert,但我无法理解如何在Azure云服务上镜像此任务。

2 个答案:

答案 0 :(得分:0)

首先,您必须从章鱼脚本自动部署云服务。例如,在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

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

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

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

    任务commandLine =“startup \ startup.cmd”executionContext =“elevated”taskType =“simple”

参考文档在这里 https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/ 希望这可以帮助 新年快乐 ! 最好的祝福 斯特凡

答案 1 :(得分:0)

基本上,Cloud Service Project可帮助您编写所需文件,打包解决方案并进行部署。这些步骤可以分解为各个任务,其中创作和部署部分由stephgou和Lister先生描述。

要打包,您需要使用CSPack.exe。 https://azure.microsoft.com/en-us/documentation/articles/cloud-services-model-and-package/#servicepackagecspkg

另请参阅此处了解该过程。另一个答案中提供的PowerShell将替换本文中的GUI指南:https://azure.microsoft.com/en-us/documentation/articles/cloud-services-how-to-create-deploy-portal/