4

我遵循此說明在aws中獲得非常基本的ci工作流程。它工作完美,但我想要一個額外的功能,回滾。首先,雖然它可以「開箱即用」,但在我的情況下,如果我選擇CodeBuild中的前一個作業,我想要回滾並點擊「重試」,我會收到以下錯誤消息:「錯誤當使用工件類型CodePipelines時,必須設置ArtifactsOverride「。我也嘗試再次使用管道歷史頁面重新運行整個管道,但它只是一個沒有任何功能的構建列表。如何將回滾功能添加到基本的S3 CodeBuild部署

我的問題是:如何向我的工作流程添加回滾功能。它不必在同一條管道中,但它不應該碰到混帳。

回答

2

AWS CloudFormation now supports rolling back based in a CloudWatch alarm

我會將CloudFront分配放在您的S3存儲桶前,並將原始路徑設置爲該存儲桶中的文件夾。每次從CodeBuild部署到S3時,都會部署到一個隨機的新S3文件夾。

然後,您將JSON文件中的文件夾名稱作爲CodeBuild步驟中的輸出工件傳遞。您可以將此工件用作管道中CloudFormation操作更新的parameter to a CloudFormation template

CloudFormation模板會將CloudFront分配的OriginPath field更新爲包含新部署的文件夾。

如果報警觸發,則CloudFormation模板將回滾並翻轉回舊文件夾。

有幾個優點這種方法:

  • 客戶應該只看到無論是新的還是舊的版本,同時部署正在發生的事情,而不是部署在運行時看到潛在的混合文件。
  • 部署邏輯更簡單,因爲您每次都上傳一組新文件,而不是確定哪些文件是新文件,哪些文件需要刪除。
  • 回滾很簡單,因爲您正在翻轉回來的文件,而不是重新部署舊文件。

您的管道需要同時包含CodeBuild和一個順序的CloudFormation操作。

+0

謝謝,是否有可能做從管道ui回滾?或者我需要手動確定隨機文件夾名稱是什麼,並將其設置在CloudFormation中? – antpaw

+0

要手動觸發回滾,您可以取消堆棧更新。 CloudFormation堆棧的RollbackConfiguration中有一個選項可以等待多久。理想情況下,您的CloudWatch警報將涵蓋您的所有回滾標準,因此回滾將自動而非手動。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn--stack-update-cancel.html – TimB

相關問題