[jenkinsci-ja:710] Pipeline 利用時の Maven ローカルリポジトリ

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
T.N
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[jenkinsci-ja:710] Pipeline 利用時の Maven ローカルリポジトリ

T.N
既存の Maven のジョブを Pipeline Plugin 使って置き換えようかと思っています。
その際にローカルリポジトリを以前の「Maven プロジェクトのビルド」にあったように Jenkins のエグゼキューター毎に持たせたいのですが、良い実現方法が思いついていません。

現状 Pipeline 対応の Maven プラグインはまだ無いようなので、単に mvn コマンドを実行する形になると思います。
ローカルリポジトリは settings.xml で指定することになるので動的に `mvn --settings` で置き換えるにしても、肝心のエグゼキューターの情報をどう得るのかが分かりませんでした。

どうにかして Jenkins のオブジェクトを Pipeline のコード上で取得できたりするのでしょうか?

--
このメールは Google グループのグループ「日本Jenkinsユーザー会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには [hidden email] にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [jenkinsci-ja:711] Pipeline 利用時の Maven ローカルリポジトリ

Kiyotaka Oku
「Use Groovy Sandbox」のチェックを外せばPipelineスクリプト内でもJenkinsのAPIを呼び出すことが出来ます。

import jenkins.model.Jenkins
def executor = Jenkins.instance.getJob('ジョブ名').builds[0].executor

PipelineジョブだとOneOffExecutorが返ってくるようなので、やりたいことは出来なさそうです。


2016-08-02 16:03 GMT+09:00 tak.n <[hidden email]>:
既存の Maven のジョブを Pipeline Plugin 使って置き換えようかと思っています。
その際にローカルリポジトリを以前の「Maven プロジェクトのビルド」にあったように Jenkins のエグゼキューター毎に持たせたいのですが、良い実現方法が思いついていません。

現状 Pipeline 対応の Maven プラグインはまだ無いようなので、単に mvn コマンドを実行する形になると思います。
ローカルリポジトリは settings.xml で指定することになるので動的に `mvn --settings` で置き換えるにしても、肝心のエグゼキューターの情報をどう得るのかが分かりませんでした。

どうにかして Jenkins のオブジェクトを Pipeline のコード上で取得できたりするのでしょうか?

--
このメールは Google グループのグループ「日本Jenkinsユーザー会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには [hidden email] にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「日本Jenkinsユーザー会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには [hidden email] にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
T.N
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [jenkinsci-ja:713] Pipeline 利用時の Maven ローカルリポジトリ

T.N
Oku さん

ご回答ありがとうございました。

よくよく見てましたら、Pipeline Syntax の Global Variable Reference に evn.EXECUTOR_NUMBER で取得できると書いてありました。
確認不足ですみません。

複数エグゼキューターを持たせたノード上で同時にジョブを実行させたところ、異なる値を得られました。

Maven については -Dmaven.repo.local=path/to で settngs.xml を使わなくてもローカルリポジトリを指定できたので、
上記の evn.EXECUTOR_NUMBER と組み合わせて、エグゼキューター毎に使い分けさせられそうです。


sh "mvn  -Dmaven.repo.local=/path/to/repos.${evn.EXECUTOR_NUMBER} ... clean install"

実行結果抜粋
mvn --errors --update-snapshots --batch-mode -Dmaven.repo.local=/var/tmp/repos.0 -f xxx/pom.xml clean install



2016年8月3日水曜日 10時44分47秒 UTC+9 Kiyotaka Oku:
「Use Groovy Sandbox」のチェックを外せばPipelineスクリプト内でもJenkinsのAPIを呼び出すことが出来ます。

import jenkins.model.Jenkins
def executor = Jenkins.instance.getJob('ジョブ名').builds[0].executor

PipelineジョブだとOneOffExecutorが返ってくるようなので、やりたいことは出来なさそうです。
<a href="http://javadoc.jenkins-ci.org/hudson/model/OneOffExecutor.html" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fjavadoc.jenkins-ci.org%2Fhudson%2Fmodel%2FOneOffExecutor.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNE1jLjsT5U26v49n5mnAuUrEZzWTw&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fjavadoc.jenkins-ci.org%2Fhudson%2Fmodel%2FOneOffExecutor.html\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNE1jLjsT5U26v49n5mnAuUrEZzWTw&#39;;return true;">http://javadoc.jenkins-ci.org/hudson/model/OneOffExecutor.html


2016-08-02 16:03 GMT+09:00 tak.n <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="P2kVET08CgAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">avis.c...@...>:
既存の Maven のジョブを Pipeline Plugin 使って置き換えようかと思っています。
その際にローカルリポジトリを以前の「Maven プロジェクトのビルド」にあったように Jenkins のエグゼキューター毎に持たせたいのですが、良い実現方法が思いついていません。

現状 Pipeline 対応の Maven プラグインはまだ無いようなので、単に mvn コマンドを実行する形になると思います。
ローカルリポジトリは settings.xml で指定することになるので動的に `mvn --settings` で置き換えるにしても、肝心のエグゼキューターの情報をどう得るのかが分かりませんでした。

どうにかして Jenkins のオブジェクトを Pipeline のコード上で取得できたりするのでしょうか?

--
このメールは Google グループのグループ「日本Jenkinsユーザー会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには <a href="javascript:" target="_blank" gdf-obfuscated-mailto="P2kVET08CgAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">jenkinsci-ja...@googlegroups.com にメールを送信してください。
その他のオプションについては <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout にアクセスしてください。

--
このメールは Google グループのグループ「日本Jenkinsユーザー会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには [hidden email] にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。
Loading...