2016-04-16 28 views
5

Jenkinsにシェルコマンドを実行させようとしていますが、ワイルドカードを使用できるようにしています。ここで私は参考のために何をしようとしているのです:Jenkins - ワイルドカードでシェルコマンドを実行

mvn deploy:deploy-file -Dpackaging=jar -DrepositoryId=snapshots -Durl=http://nexus.example.net/content/repositories/snapshots -DpomFile=Spigot/Spigot-Server/pom.xml -Dfile=Spigot/Spigot-Server/target/spigot-*.jar 

私はそのプロジェクトのgitリポジトリは、私が所有または運営されていないため、上記のコマンドによって、このjarファイルを展開できるようにする必要がありますので、私は必要自分のNexusインスタンスに直接展開することができます。コンパイルされたjarの可能なすべてのバージョンを確実にサポートするためには、ワイルドカードを使用する必要があります。残念ながら、Jenkinsがコマンドを実行しようとすると、文字通りワイルドカードが使用されます。私は本当にこれを解決する方法がわかりません、私はあなたが提供できる任意のヘルプに感謝します。ありがとうございました!

答えて

2

EX展開:

のmavenは展開ファイルをパラメータファイル分類0でも、そのために例えばの.jar-sources.jar

からと種類はあなたが同じ(のgroupId、たartifactId、バージョン)の下に複数のアーティファクトを展開する際に使用されています文法はやや直感的ではありません。の場合はの場合はファイル= file1.jar、次にの場合はファイルを使用し、次にファイルをfile1-sources.jar、file1-test-残りため、あなたがアップロードされている各アーティファクトの分類器/タイプを指定するのと同じ方法(位置)に分類器/分類(およびパッケージ/タイプ)を使用している間。

ご利用の場合は、異なるバージョンのアップロードアーティファクトである場合は、各バージョンため1つのMavenのデプロイ・ファイルの呼び出しを行う必要があります。

また、いくつかの選択肢を検討するかもしれない:

  1. (どのように多くの成果物、および頻度を新しいものが来るに応じて) - 手動

  2. ネクサス

    にあなたネクサスくださいこれらの成果物をアップロード これらのアーティファクトを処理する別のNexusリポジトリをプロキシします。

+0

ありがとうございます!記録のために、私はただ一つのファイルを配備しようとしていました。 – mattrick

1

あなたはちょうど*が渡さ直接、ちょうどグロブ適用からシェルを避けるために、単一引用符を使用することにしたいわけ場合:あなたは、私が問題だと思う複数ファイルを展開しようとしている場合

mvn deploy:deploy-file [...] '-Dfile=Spigot/Spigot-Server/target/spigot-*.jar' 
+0

私は実際に反対を望んでいました。これは問題ではありません。 – mattrick

+0

@mattrick:ああ。おそらくそれを明らかにする価値があるだろう。複数のコマンドでそれを行う必要があるかもしれません。 –

+0

@JonSkeet、FWIW、投稿は「文字通りワイルドカードを取る」と言っています:-)興味深いことに、コマンドがジェンキンスの外でbashで実行された場合、シェルは引用の提案がない限りコマンドを実行する前にglobを試みます。なぜジェンキンスのシェルが同じ振る舞いに従わないのか分かりません。 –

0

Jenkinsまたはbashコマンドでではなくではありませんが、使用方法はMaven Deploy Pluginです。あなたは余分なアーティファクトを展開するかどう

ドキュメントは、あなたが余分ファイルを指定した場合、したがって、それは良いだろう

files  String - A comma separated list of files for each of the 
        extra side artifacts to deploy. If there is a 
        mis-match in the number of entries in types or 
        classifiers, then an error will be raised. 
User property is: files. 

を使用し、

file File - File to be deployed. 
User property is: file. 

と を述べましたに

mvn deploy:deploy-file -Dpackaging=jar -DrepositoryId=snapshots -Durl=http://nexus.example.net/content/repositories/snapshots -DpomFile=Spigot/Spigot-Server/pom.xml -Dfile=$(find Spigot/Spigot-Server/target/ -name 'spigot-*.jar') 

それは複数のファイルをだ場合、それは少し複雑です:それは、単純な単一の.jarファイルには、これを試していた場合は、追加のfilestypesclassifiesパラメータを使用して明示的に:

... -Dfile=Spigot/Spigot-Server/target/main-spigot.jar \ 
-Dfiles=$(ls -1d Spigot/Spigot-Server/target/spigot-*.jar | paste -sd ,) -Dtypes=... -Dclassifiers=... 
関連する問題