1

展開中に置き換えられる DLL と Web.Config のバックアップを作成してから、展開が失敗した場合に簡単にロールバックできるようにしたいと考えています。

人々は「octopus を使用して以前のバージョンをデプロイするだけ」と言いますが、octopus のデプロイ プロセスがうまく機能しなくなったと想像してください。その場合、古いファイルをバックアップ zip ファイルから手動で置き換える以外に選択肢はありません。

触手でこの zip ファイルを自動的に作成するための機能は Octopus にありますか?

4

2 に答える 2

2

Rather than overwriting the previous deployed version, I would deploy a new version to a versioned directory. Octopus will be default install apps to paths like /Applications/TEST/App.Name/1.2.1/ so the next install will go to /Applications/TEST/App.Name/1.3.0/ for example. Then if you want to rollback but find your deployment process is broken you just need to repoint to the previous version. If this was a website in IIS then you'd just change the wwwroot directory - If this was a windows service you'd just install it using the old path.

これをライフサイクルと組み合わせて、特定の数のバージョンを利用できるようにし、カスタム カスタム コードを記述する必要がないようにします。展開の一部として手動で何かを行うことは本当に避けたいと思います。ロールバック (以前のファイルを解凍してコンテンツをコピーするなど) であっても、これは私たち人間が間違いを犯す可能性があるためです。これを 10 台以上のサーバーで実行する必要があると想像してください...本当に再現可能なものが必要な場合は、その部分をスクリプト化できますが、IIS のルート ディレクトリを変更するスクリプトやサービスのインストール パスをスクリプト化する方がはるかに簡単です。

クラウド内の Paas に直接デプロイする場合は、おそらくこれを使用するケースがあります。Octopus Libraryには、これに役立つステップがあります。

お役に立てれば

于 2016-03-14T20:28:04.853 に答える
1

これは少し古いですが、octo のプロセスで行っていることを追加すると思いました。

子ステップを使用してローリング デプロイを実行します。

以前の IIS パスを出力変数に記録するための PowerShell ステップがあります。

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 スクリプトを持つ失敗した子アイテムのセットがあります。

$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'"
    }
}

これにより、すべてのサーバーが以前に表示されていたものに戻ります。

また、デフォルトのパッケージの場所を使用し、以前のファイルを上書きしないことを付け加えておきます。もう 1 つのオプションは、展開手順がより複雑であるが、私にとっては迅速にフェールバックしたい場合に、octo で REST API を使用して以前の成功した展開をトリガーすることです (param は octo にあります)。

于 2018-02-13T23:22:16.760 に答える