OSGiベースのアプリケーションの場合に継続的デプロイを機能させる方法を理解するために数時間を費やした後、私はついにスタックオーバーフローに関する最初の質問を提起し、私が間違ったことや見逃したことについてのいくつかの兆候を期待しています-どういうわけか間違った方向に進んでいるように感じます...
これが私が達成したいことです:
いくつかのバンドルをビルドし、それらをMavenリポジトリにインストールします(ここでは問題ありません。bndを使用します)
これで、アプリケーションを構成するすべてのバンドル(すべてのテストに合格するなど)ができたので、アプリケーションをデプロイして実行します。つまり、それらのバンドルを使用してOSGiフレームワークを起動します。
開始は問題ではありません-「mvnpax:provision -Dframework=equinox」がトリックを行います。私のアプリケーションはjettyを起動するので、ブラウザーを介して問題がないかどうかを簡単に確認できます(すべてのテストに加えて)
しかし、今、「継続的」であることを試みて、次にこの手順を適用したいときは、最初にアプリケーションの実行中のインスタンスをシャットダウンすることを確認する必要があります(少なくとも使用されているポートを解放します)。したがって、すべてを再実行するには、最初に古いインストールをシャットダウンする必要があります。
そして、これが私の質問の始まりです。これを手伝ってくれるものはありますか?maven-deploy-pluginがあることは理解していますが、これはWAR / EARファイルを標準のアプリケーションコンテナーにデプロイする場合にのみ役立つようです(再起動する必要はないようです)。
私は本当にOSGi環境を起動するためにいくつかのスクリプトを実行する必要があるだけです-そして次に、それを再び起動する前にそれを正常にシャットダウンします。tomcat、jetty、jbossなどには、shutdown.shスクリプトまたはmvn jetty:stop命令がいくつかありますが、これらの種類のスクリプトを自分で作成する必要がありますか?これは私が間違った方向に進み始めていると思うところです、誰かが私の前にそれらの問題を抱えていて、私が推測するそれらを解決したに違いありません;)
どういうわけかJMXを使用するか、telnetコンソールを使用して実行中のインスタンスにアクセスして「stop0」コマンドを発行できることを理解しましたが、これは間違っていると感じます。
jenkinsから開始されたプロセスは、プロジェクトをコンパイル/ビルド/デプロイする必要がありますが、実行時間の長いスレッドは開始しないと思います。そのため、次に再試行するときに最初に強制終了したいプロセスを「外部」で開始する必要があります。
何か案は?多分私は何かが欠けていますか?これに関するご意見をよろしくお願いします!