web-dev-qa-db-ja.com

AWS Code DeployとJenkinsを使用する場合の長所と短所は何ですか?

将来的に拡張される可能性があるEC2インスタンスの束(約100インスタンス)を使用していますが、現在、JenkinsまたはAWS Code Deployのいずれかを使用した自動デプロイを検討しています。

JenkinsでAWS Codeデプロイプラグインを使用できることがわかりましたが、以下の長所と短所は何ですか?

1)スタンドアロンAWS Code Deploy 2)AWS Code Deployプラグインを含むJenkins。

12
user2379271

AWS環境へのデプロイを管理するために、CodeDeployとJenkinsの両方を使用します。

彼らにはそれぞれの役割があり、私はそれを賛否両論の分析とは見なしていません。継続的な統合ビルド(Jenkins)とテスト済みビルドをEC2環境にデプロイするプロセス(CodeDeploy)の両方を管理するには、[〜#〜] both [〜#〜]が必要だと思います

これが私たちのセットアップです:

  1. JenkinsがSCMをポーリングして変更を確認します。変更が発生すると、アプリがビルドされ、Zipにアーカイブされ、デプロイ可能なアーティファクトとしてCodeDeployに登録されます。リビジョンにはJenkinsビルド番号のラベルを付けます-たとえばapp_6111.Zip各ビルドにはコードデプロイメントバケットが送信されます:s3:codedeploy-example-com/app

  2. CodeDeployには、テスト、本番環境などの各環境のデプロイメントグループを使用して、アプリケーションが構成されています。私たちは#1を使用しているため、すべてのビルドは常にすぐに展開する準備ができています。たとえば、1回または2回のクリックで、リビジョンapp_6111.Zipをテストサーバーにデプロイします。

私たちにとって、Jenkinsは、最新の開発と継続的な統合、テスト、および展開のスイスアーミーナイフです。ビルド、テスト、およびデプロイメントアーティファクトのビルドを管理できるバックボーンです。 S3、CodeDeploy、Elastic BeanstalkなどのすべてのAWSサービスと統合できます。

特定の質問に答えるには:

JenkinsでAWS Codeデプロイプラグインを使用できることがわかりましたが、以下の長所と短所は何ですか?

1)スタンドアロンAWSコードデプロイ

スタンドアロンCodeDeployはビルドプロセスに統合されません。手動でアップロードされた静的S3アーティファクト、またはGithub URLのいずれかに構成する必要があります。 Githubは問題ありませんが、ビルドの概念はありません。マスターまたは他のブランチからデプロイされます。たとえば、既知のビルドに簡単にロールバックすることはできません。テストは統合されていません。タスク/ジョブをパイプライン処理する機能はありません。

2)AWS Code Deployプラグインを使用したJenkins。

これは私見の好ましいアプローチです。両方のツールを使用します。既知のテスト済みビルドをビルドしてから、デプロイメントをCodeDeployに登録します。人生は素晴らしい。

17
Rodrigo M