問題タブ [continuous-delivery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - 継続的展開/配信とセキュリティ
これは漠然とした質問ですが、チームがセキュリティを継続的デリバリー/展開とどのように統合しているかに関するブログや情報を探しています。AWSに1日に複数回デプロイしており、チームがフローにセキュリティを追加する方法を探しています。
チームがキュウリを使用してnmapテストを行ったプレゼンテーションを見たことがあります。これは私が探しているものではありませんが、トラフィックを受け入れるロードバランサーに入る前に、アプリノードがデプロイされた後の自動テストである可能性があります。
continuous-integration - 継続的インテグレーションのレベル
最近のインタビューで、当社で実践されている継続的インテグレーションのレベルについて尋ねられました。私たちが何をしたかを説明し始めたとき、インタビュアーが割り込んでレベル番号を尋ねてきました - 私には CMM レベルのように聞こえました。私が現在の会社でフォローされているレベルを認識していないと彼に言ったとき、彼は私の答えに不満を持っているようでした.
そのような情報をオンラインで見つけることができません。
誰か光を投げてくれませんか?
jenkins - インクリメンタル Gradle ビルドを使用した Jenkins ビルド パイプライン
この基本的なビルド パイプライン (gradle タスクを使用) を使用します。
- 単体テストのコンパイル/実行 (gradle クリーン ビルド)
- 統合テスト (gradle integrationTest)
- 受け入れテスト (gradle acceptTest)
- デプロイ (gradle myCustomDeployTask)
Jez Humble の "Continuous Delivery" book によると、バイナリは 1 回だけビルドする必要があります。したがって、上記の理論的なパイプラインでは、ステップ 1 で WAR をクリーンアップ、コンパイル、ビルドし、ステップ 2 で (ステップ 1 のコンパイル済みコードを使用して) 統合テストを実行し、ステップ 3 で (コンパイル済みコードを使用して) 受け入れテストを実行します。ステップ 1 のコード)、ステップ 4 で (ステップ 1 でビルドした) WAR をデプロイします。ここまでは順調ですね。
このパイプラインを Jenkins に実装しようとしています。各ジョブには独自のワークスペースがあるため、ステップ 2、3、および 4 はコードを再コンパイルして WAR を構築することになります。
これに対抗するために、「Clone Workspace SCM」 Jenkins プラグインを使用しました。これは、最初のビルドからワークスペースを圧縮し、ビルド 2、3、および 4 のワークスペースのソースになります。ただし、gradle はそれぞれのコードを再コンパイルします。ファイルの絶対パスを使用して、タスクを実行する必要があるかどうかを判断するためです。プラグインがファイルを新しいワークスペースに移動したため、絶対パスが変更されたため、gradle はインクリメンタル ビルドを実行するのではなく、最初から開始する必要があると判断しました。
Jenkins でワークスペースを共有できるようになりましたが、共有ワークスペースに対して 2 つのジョブが実行される可能性があるため、これも嫌われています。
では、Jenkins と Gradle を使用して上記のパイプラインを実装し、継続的デリバリー、Jenkins、および Gradle のベスト プラクティスを遵守するにはどうすればよいでしょうか。
tomcat - Grails による継続的デリバリー
バックグラウンド:
私のチームは Jenkins を使用して、Grails アプリケーションの継続的インテグレーション (CI) を実行しています。デプロイ パイプラインをセットアップし、複数の環境 (Dev、Itg、Prod) へのプッシュ ボタン デプロイを行うことで、継続的デリバリーに近づけようとしています。Jenkins Tomcat プラグインを使用してコードをデプロイしようとしましたが、Tomcat で時折 PermGen の問題が発生し、デプロイ後に手動で再起動する必要がありました。
質問:
- Jenkins は、Grails での自動デプロイメントに使用する適切なツールですか?
- あとで手動で再起動することなく、Tomcat へのデプロイを自動化するにはどうすればよいでしょうか?
sharepoint - 継続的デリバリーの部分パッケージ
現在、C# (Sharepoint 上に構築) プロジェクトを実行しており、配信を支援する一連の自動化プロセスを実装しています。詳細は次のとおりです。
- 継続的統合。DEV 環境で頻繁にコンパイルおよび展開するための典型的な CI システム。
- 部分的なパッケージ。毎週、修正を伴う欠陥のリストが特定され、対応するアセンブリが完全なパッケージから取得されて、部分的なパッケージが形成されます。部分パッケージは、後続の環境で展開およびテストされます。
このパイプラインでは、2 つのパッケージが検証されています。部分的なパッケージ用の新しいシステム (Web サイト、スクリプト、プロセスなど) を構築するには、余分な労力が必要です。しかし、いくつかの要因がその改善を妨げています。
- ビルドとデプロイの時間が長すぎます。開発者のマシンでは、アセンブリに変更を加えるたびに、IIS での再展開に約 5 ~ 10 分かかります。さらに、ソリューション全体を再構築するには 15 分 (またはそれ以上) かかります。(この企画の一番の痛手)
- 地理的な違い。最終的なパッケージはすべて別のオフィスに配送されるため、手作業は避けられず、パッケージのサイズは小さいことが好まれます。
継続的デリバリーの実践を推進するために、ご意見をお聞かせいただければ幸いです。ありがとう!
configuration-management - 構成設定サービス/リポジトリ: 実際に使用されていますか
私は現在、「Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation」を楽しんで読んでいますが、私の注意を引いた部分は、アプリケーションの構成設定の管理に関するものです。
この本で提案されているのは、すべての構成設定が外部化され、何らかのリポジトリ (LDAP ディレクトリ、ESCAPE サーバーなど) に集中化され、そこから取得されるということです。
このアプローチは多くの具体的な利点を提供できるため、私には非常に説得力があるように思えますが、少しグーグルで調べてみると、これは正確に広まっているアプローチではないように思えます。
このテーマに関するTwelve-Factor App の記事があることは知っていますが、一元化されたリポジトリの代わりに環境変数を使用することを提案しています。このアプローチは最も一般的に使用されているようですが、リポジトリベースのソリューションと比較すると汚いもののように感じます.
では、中央構成リポジトリのアプローチは、現実の世界で重要な方法で使用されていますか?そうでない場合、その理由は何ですか?