私が持っているプロジェクトがあります:
このプロセス全体を健全で堅牢な自動化された方法で整理するにはどうすればよいですか?
現時点で私が持っているのはGulpとMavenです。Mavenは基本的にプロセス全体を所有しています。
その種の作品は、Mavenが一般的に非常に硬直していることを除いて、私はやりすぎだと感じています。 antrunを使用してGulpを呼び出すのはいトリックです。これらのステップ間の依存関係を制御し、結果を監視することは非常に困難です。同じフェーズで物事の順序を制御することは困難です。フェイルセーフ検証は、Gulpが生成する外部JUnitレポートファイルを処理しないようです。続けられた。
ビルドパイプラインまたはパラメーター化されたトリガーを使用して、ビルドサーバー(Jenkins)でもっとやるべきかどうか疑問に思います-しかし、私はそれをやったことがなく、それが本当に良いかどうかわかりません。
それでは、どのように実装しますか?
私の経験では、フロントエンドのMavenプラグインは、このタイプのビルド/デプロイプロセスに最適なプラグインです。 https://github.com/eirslett/frontend-maven-plugin これは私がGruntでそれを使用する方法ですが、Gulpも同様にサポートします。
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>...</version>
<!-- optional -->
<configuration>
<workingDirectory>src/main/frontend</workingDirectory>
</configuration>
<execution>
<id>grunt build</id>
<goals>
<goal>grunt</goal>
</goals>
<!-- optional: the default phase is "generate-resources" -->
<phase>generate-resources</phase>
<configuration>
<!-- optional: if not specified, it will run Grunt's default
task (and you can remove this whole <configuration> section.) -->
<arguments>build</arguments>
</configuration>
</execution>
</plugin>
知っておくべきことの1つは、実行中のシステムのノードをダウンロードすることです。したがって、ビルドサーバーに別のOSがある場合、バージョン管理にチェックインしたバージョンであることを確認する必要があります。ローカルバージョン(OSXの場合)は、プロジェクトに対してローカルに維持する必要があります。
私はある種の貧乏人のパイプラインを構築しようとします。
Grunt/gulpに最初に作業を任せます(アセットの処理、フロントエンドテストの実行など-WARに含めるアーティファクトを準備します)。このステップが失敗すると、ビルド全体が失敗します(アセットの生成またはテスト)。
手順1で作成したアセットでWARファイルを生成する通常のMavenビルドを実行します。通常のWARファイルだけで独自のテストセットを実行します。うなり声/一口ものについて知る必要はありません。
次に、2つの場所があります。テストは実行されます(フロントエンド、grunt/gulpによって実行され、バックエンドはmavenによって実行されます)が、正しいレポーターを構成すると、CIサーバーがそれらのすべてを検出できます(TeamCityを使用して正常に処理します)。
少しスクリプトを作成すると、antrunを介してノードを複数回呼び出すよりも優れているはずです。または、mavenビルド内から最初のステップを実行できますが、制御が難しい場合があります。
このプロジェクトは約2年ですが、探しているものの多くを実行します。
https://github.com/pankajtandon/PointyPatient/blob/master/pointy-web/pom.xml
基本的にすべてのサブプロジェクトをWebからドメイン、レポジトリまで一緒に実行し、いずれか(JasmineまたはSpringMVCまたはSpringServicesテスト)が失敗すると失敗する親pomをチェックアウトします。また、サーバー側の展開にも戦争を引き起こします。
これは分度器でしたので、それは素晴らしい追加です。フロントエンドのMavenプラグインは、今では仕事のツールのように見えます。
HTHパンカジ
私はこれをスタブとして使用するつもりです。なぜなら、私は同様のことをしようとしてきたので、後で答えを充実させるために戻ってきます。それまでの間、 JHipster を検索する必要があります。彼らははるかに大きなスタックを持っており、彼らのスタックは既に構築されていますが、彼らは基本的にあなたが構築プロセス内であなたが望むと思うことをやっています。
私は彼らのビルドプロセスに完全に同意しませんが、私が現在取り組んでいるプロジェクトで私が何をしているのか、何をしているのかを説明するために戻ります。