問題タブ [build-pipeline]
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.
continuous-integration - Jenkins-パラメーター化されたビルドのアーティファクトを破棄/保持
Jenkins(またはHudson)で、アーティファクトのコピープラグインを使用してアーティファクトを相互にコピーするパラメータ化されたジョブのパイプライン(A-> Bなど)を設定しました。すべてのジョブは同じパラメーターを使用します(例:ターゲットプラットフォーム)。各ジョブは、古いビルドとアーティファクトを破棄してディスク使用量を制限し、最新の安定したビルドアーティファクトのみを保持するように設定されています。パラメータ設定のみが異なる多くのジョブを維持する必要がないように、パラメータ化されたビルドを使用します。
このセットアップは、すべてのビルドが同じパラメーター設定のパイプラインで次々に実行される場合にのみ機能します。したがって、最新のビルドアーティファクトは、依存するジョブのプラットフォームパラメーター設定と一致します。ここで、誰かが最初にプラットフォームx用にジョブAを作成し、次にプラットフォームy用にビルドし、次にプラットフォームx用にBを作成した場合、プラットフォームx用のAからのアーティファクトはすでに破棄されているため、Bはこれらをコピーできません。
Jenkinsに、ビルドごとに異なるパラメーターを使用して最新のアーティファクトを保持し、他のすべてのアーティファクトを破棄するように指示する方法はありますか?
python - Jenkins は GUI/GUI 以外のインタラクティブな Python または Java プログラムを処理できますか?
ビルド パイプラインを作成したいのですが、開発者は、フロント エンド GUI を使用して入力されるプロパティ ファイルにいくつかの設定を行う必要があります。
Python を使用してサンプルの CLI インタラクティブ スクリプトを実行してみましたが、名前を尋ねただけで後で出力されましたが、Jenkins は何年も待ってからハングアップしました。入力を求められたことがわかりましたが、ユーザーがデータを入力する方法がありませんでした。
編集:現在、サービスとしてJenkinsを実行しています..または、誰かが推奨する優れたプラグインがありますか、それともPythonスクリプトを作成した方法ですか?
好み: 少し軽量なので Python を使用することを好みますが、他の言語で成功した場合は構成できます。
GUI メニューを使用してデータを入力すると、オプション ボックスを使用したり、ドロップダウン メニューを使用したりできるので便利ですが、必須ではありません。現在の展開よりも CLI の方がはるかに優れています。
ところで、Python 2.7 と Java 1.7 を実行している Windows 7 ラップトップでこれらすべてを実行しています。
エッセイでごめんなさい!うまくいけば、人々は私を助けることができます!
maven - Maven pom.xml の変更物理的な価値観
相互に依存するいくつかのプロジェクトの展開パイプラインを構築しています。各ビルドは、Maven リポジトリにデプロイされる一意のバージョン番号を持つ新しいリリース ビルドを生成します。パイプラインの下流プロジェクトは、その新しいバージョンを依存関係としてトリガーされ、同様の方法でビルドされます。
プロジェクトをビルドする前に、pom.xml (またはマルチ モジュール プロジェクト内のすべての pom) のプロパティ値を変更する必要があります。たとえば、次のコードでは、「0.1.200」が「0.1.345」(または最新のビルド番号) に変更されます。更新された pom は Maven リポジトリにデプロイされるため、システム プロパティを使用することはできません。したがって、変更は永続的でなければなりません。
1 つのコマンド ライン命令でこれを行うための Maven プラグインはありますか? それ以外の場合は、プロジェクト内のすべての pom.xml ファイルを解析して変更する短いスクリプト (Ruby など) を作成する必要があります。
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 のベスト プラクティスを遵守するにはどうすればよいでしょうか。
jenkins - Jenkins - ビルド パイプラインでアップストリーム プロジェクトをスキップする
複雑なビルド パイプラインをセットアップしようとしています。依存関係グラフは次のようになります。
パイプラインは Prj-A から始まり、Prj-B が続きます。Prj-C DE は並行して実行できます。Prj-C、D、E がすべて完了したら、Prj-F を実行します。
要件の 1 つは、たとえば、Prj-C は Prj-A と Prj-B に依存しているため、Prj-C のソース コードのみを変更する場合は、Prj-C のみを実行し、次に Prj-G を実行したいということです。これは、ビルド時間を節約するために他のジョブをビルドしないようにするためです。
多くのグーグル検索の後、そのような場合に利用できる解決策が見つかりませんでした。したがって、私の解決策は次のとおりです(私は試していません)。
- プロジェクトごとにトリガー ジョブを作成します。これは、そのプロジェクトのソース コードが変更されたかどうかのみをチェックするため、7 つのトリガー ジョブが作成されます。
- パイプラインの依存関係リゾルバー ジョブを作成します。
- トリガー ジョブのいずれかが変更を検出すると、依存関係リゾルバー ジョブがトリガーされます。依存関係リゾルバー ジョブは、どのプロジェクトが変更されたかを認識し、このビルドでスキップできるプロジェクトを判断し、対応する環境変数を設定します。たとえば、Prj-C を変更する場合、skip-proja=true、skip-projb=true、skip-projd=true、skip proj-e=true を設定します。その後、ビルド パイプラインをトリガーします。
- 各プロジェクトが実行されると、依存関係リゾルバー ジョブによって設定された環境変数に従ってスキップできるかどうかがチェックされます。
この場合の他の解決策があるかどうか、または私の解決策に対するコメントがあるかどうかをお知らせください。ありがとう!
jenkins - ビルド パイプラインの複数のステージにわたる SonarQube コード カバレッジ結果の集計
Jenkins で (非常に単純な) ビルド パイプラインを 2 つのジョブに構築したとします。
- コンパイルと単体テスト
- 統合テスト
理想的には、両方のテスト セットから SonarQube にコード カバレッジを取得したいと考えています。これは可能ですか?SonarQube は、すべての更新がプロジェクト全体に対する単一のトランザクションであると想定しているようです。
最初は、インクリメンタル分析が追加されたことに興奮しましたが、これは別のユースケースを対象としているようです: 変更されたファイルのみのコミット前チェックを行うことです。
SonarQube でこれを行う方法がない場合は、単体テストから (少なくとも SonarQube で) コード カバレッジを利用できるようにするか、ステップ 2 の後まで SonarQube プロジェクトの更新を遅らせるかのいずれかに制限されますが、統合テストには時間がかかります。つまり、SonarQube の結果が遅れます。
人々はこれを現実の世界でどのように扱っていますか?
jenkins - Nexus で Maven 以外のアーティファクトを宣伝するにはどうすればよいですか?
バイナリが Nexus にデプロイされる非 Maven プロジェクトがあります。Gradle の Maven プラグインを使用してアーティファクトを作成し、Nexus に公開しました
さて、問題は、この成果物を Nexus でリリースするようにどのように宣伝するかです。jenkins の M2 リリース プラグインを検索しようとしましたが、ソース コードで pom ファイルを検索します。
build - IBM DevOps パイプライン: 前のジョブからアーティファクトにアクセスする方法は?
以下に示すように、afrontend
と aの 2 つのビルド ジョブを含むビルド ステージがありbackend
ます。ジョブのビルド スクリプトからジョブのビルド アーカイブ ディレクトリに直接アクセスするにはどうすればよいですか?frontend
backend
frontend
最終的なアーカイブを適切にビルドするには、ビルド アーティファクトにアクセスする必要があります。frontend
また、ビルドの [アーティファクト] タブにすべてのアーティファクトが表示されていることがわかります。しかし、2 番目のジョブ (backend
ビルド) からアクセスするにはどうすればよいでしょうか?
ここで、現在のジョブのアーカイブ ディレクトリにアクセスするための環境変数があることを確認しましたが、他のジョブのアーカイブ ディレクトリにアクセスする必要があります。
typescript - angular-cli のビルドパイプラインを拡張する
angular-cli 自体を書き直さずに angular-cli のビルドプロセスを拡張できますか? 昔のように、ビルド プロセス用に gulp/grunt タスクを作成し、必要なものをすべて変更できました。
angular-cli のデフォルトのビルドシステムを変更したいです。本番ビルドでスタイルと html テンプレートをインライン化し、ファイルのコンパイル、連結などの順序を変更します。_home、_about などの「_」プレフィックスを持つ sass ファイルのコンパイルを防止します。いくつかの引数/構成をビルド コマンドに渡します。