首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Octopus -备份当前部署文件夹

Octopus -备份当前部署文件夹
EN

Stack Overflow用户
提问于 2016-01-11 18:33:44
回答 2查看 1.1K关注 0票数 1

我想备份在部署过程中要替换的DLL和Web.Config,然后再替换它们,以便在部署失败的情况下可以轻松回滚。

人们会说,“只需使用octopus部署以前的版本”,但想象一下octopus部署过程不再很好地工作,在这种情况下,除了从备份zip文件手动替换旧文件之外,您别无选择。

Octopus中是否有自动在触手中创建此zip文件的功能?

EN

回答 2

Stack Overflow用户

发布于 2016-03-15 04:28:05

我不会覆盖以前部署的版本,而是将新版本部署到版本化目录。Octopus将默认将应用程序安装到/Applications/TEST/App.Name/1.2.1/这样的路径,因此下一次安装将转到/Applications/TEST/App.Name/1.3.0/。然后,如果您想回滚,但发现您的部署过程已中断,您只需重新指向以前的版本。如果这是IIS中的一个网站,那么您只需更改wwwroot目录-如果这是一个windows服务,则只需使用旧路径安装它。

将它与生命周期结合起来,以确保您保持一定数量的版本可用,并且不需要编写任何自定义代码。我真的避免将任何手动操作作为部署的一部分,甚至回滚(解压缩之前的文件和复制内容等),因为这是我们人类引入错误的机会之窗。现在想象一下,你必须在10台服务器上做到这一点。如果你真的想有一些可重复的东西,那么你可以编写脚本,但是通过脚本更改IIS中的根目录或服务的安装路径要容易得多。

如果您要直接部署到云中的Paas,那么可能会有这样的用例。在Octopus Library中有一个步骤可以帮助你做到这一点。

希望这能有所帮助

票数 2
EN

Stack Overflow用户

发布于 2018-02-14 07:22:17

这有点老了,但我想我应该在octo中添加我在进程中所做的事情。

我使用子步骤运行滚动部署。

我有一个powershell步骤,用于在输出变量中记录前面的IIS路径。

代码语言:javascript
复制
Import-Module 'WebAdministration'

Write-Host ('IIS:\Sites\Online-' + $OctopusParameters["Octopus.Environment.Name"])

$formerPath = (Get-ItemProperty -Path ('IIS:\Sites\Site-' + $OctopusParameters["Octopus.Environment.Name"]) -Name physicalPath)
if($formerPath.length -gt 0) {
    Set-OctopusVariable -Name 'FormerIISPath' -Value $formerPath
    Write-Host "Former path is '$formerPath'"
}

然后,我为我的部署做我需要做的事情,并有一个手动步骤来检查每个滚动部署。

如果手动步骤被取消,我有一个失败的子项集,它具有以下powershell脚本。

代码语言:javascript
复制
$formerPath = $OctopusParameters["Octopus.Action[Set previous path].Output.FormerIISPath"]

if($formerPath.Length -gt 0) {
Import-Module 'WebAdministration'
    $currentPath = (Get-ItemProperty -Path ('IIS:\Sites\Online-' + 
    $OctopusParameters["Octopus.Environment.Name"]) -Name physicalPath)
    if($currentPath -ne $formerPath) {
         Set-ItemProperty -Path ('IIS:\Sites\Site-' + $OctopusParameters["Octopus.Environment.Name"]) -Name 'physicalPath' -Value $formerPath
         Write-Host "Deployment failed, reverted to former path - '$formerPath'"
    }
}

这将使所有服务器恢复到它们以前显示的状态。

我想补充的是,我也使用默认的包位置,并且从不覆盖以前的文件。另一种选择是在octo上使用REST API来触发之前成功的部署(param在octo上),如果您的部署步骤比较复杂,但对我来说,我想要快速回切。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34719295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档