4

私はawsで非常に基本的なciワークフローを得るためにこの指示に従ってきました。それは完璧に動作しますが、ロールバック機能を追加したいと思います。最初に私は "Out-of-the-box"で動作しますが、私の場合は、CodeBuildの前のジョブを選択してロールバックして "再試行"したい場合、このエラーメッセージが表示されます: "ErrorアーティファクトタイプのCodePipelineを使用する場合は、ArtifactsOverrideを設定する必要があります。また、パイプラインの履歴ページでパイプライン全体を再度実行しようとしましたが、機能を持たないビルドの一覧に過ぎません。基本的なS3 CodeBuildにロールバック機能を追加する方法

私の質問は、ワークフローにロールバック機能を追加する方法です。それは同じパイプラインなどにある必要はありませんが、それはgitに触れるべきではありません。

答えて

2

AWS CloudFormation now supports rolling back based in a CloudWatch alarm

S3バケットの前にCloudFrontディストリビューションを配置し、起点パスをそのバケット内のフォルダに設定しました。 CodeBuildからS3にデプロイするたびに、ランダムな新しいS3フォルダに展開します。

次に、CodeBuildステップの出力成果物としてJSONファイル内のフォルダ名を渡します。このアーティファクトは、パイプラインのCloudFormationアクションによって更新されたparameter to a CloudFormation templateとして使用できます。

CloudFormationテンプレートはCloudFrontディストリビューションのOriginPath fieldを、新しいデプロイメントを含むフォルダに更新します。

アラームが発生すると、CloudFormationテンプレートはロールバックされ、古いフォルダに戻されます。

は、このアプローチにはいくつかの利点があります。展開が起こってではなく、展開が実行されている間、潜在的混合のファイルを見ている間に

  • お客様のみが新しいか古いバージョンのいずれかが表示されるはずです。
  • 新しいファイルと削除する必要があるファイルを調べるのではなく、毎回新しいファイルセットをアップロードするので、配置ロジックが簡単になります。
  • ロールバックはかなり簡単です。これは、古いファイルを再デプロイするのではなく、まだそこにあるファイルに逆戻りしているからです。

パイプラインには、CodeBuildとシーケンシャルCloudFormationアクションの両方が含まれている必要があります。

+0

ありがとう、パイプラインからロールバックを行うことは可能ですか?または、ランダムフォルダー名が何であるかを手動で把握してCloudFormationで設定する必要がありますか? – antpaw

+0

手動でロールバックを開始するには、スタックの更新を取り消すことができます。 CloudFormationスタックのRollbackConfigurationにはどれくらいの時間待機するかのオプションがあります。理想的には、CloudWatchのアラームはすべてのロールバック基準を網羅しているので、ロールバックは手動ではなく自動になります。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn--stack-update-cancel.html – TimB

関連する問題