2017-08-24 4 views
1

無効なライセンス情報についてArtifactoryを監視することを検討しています。言い換えれば、私は、リポジトリが登録されているライセンスの一つと一致しないライセンス情報をアップロードする項目(プロパティartifactory.licenses)を持っていれば意識になりたい(管理] - > [設定]> [はライセンス)をユーザプラグインを使用してArtifactoryリポジトリ内の無効なライセンス情報をモニタする

artifactoryクライアントAPIで、このようなアーティファクトを作成するための簡単なテストケースは次のようになります。

File result = artifactory 
     .repository("sandbox") 
     .upload("com/google/guava/guava/14.0.1/guava-14.0.1.jar", jarFile) 
     .withProperty("artifactory.licenses", "NOTaLICENSE-1.0") 
     .doUpload() 

承認されなかったり、未承認もされていないライセンス情報を検出するために使用することができるライセンス情報を検索するための公共REST APIがあります、それは要件に合っていて不正確なアーティファクトを見つけるように思われる:

curl -u "admin:password" -X GET "http://artifactory_server/artifactory/api/search/license?unapproved=0&approved=0" 
{ 
    "results" : [ { 
    "uri" : "http://artifactory_server/artifactory/sandbox/com/google/guava/guava/14.0.1/guava-14.0.1.jar", 
    "license" : "Unknown", 
    "found" : "", 
    "status" : "Unapproved" 
    } ] 
} 

しかし、私はむしろ、ユーザーのプラグインでこれを行うしたいと思います(https://www.jfrog.com/confluence/display/RTF/User+Pluginsを参照)が、私はArtifactoryパブリックAPIから同じ情報を取得する方法が表示されません。

items.find({"@artifactory.licenses" : "Unknown"}) 

一方で、私たちの間違ったアーティファクトを返しますでしょうない私たちを返します不正な成果物

  • 登録されたライセンスのリストを返すAPIはありません。プロパティから、私は、ユーザーのプラグインからのREST APIを呼び出すことを考えていますが、これはすべてのアイデアは歓迎右:-)

    することはできません登録ライセンス

artifactory.licensesを値と一致するので、何のスクリプト可能な方法がありません。これはArtifactory 5.4.6です。

答えて

0

だから、右のトラックに私を得た既存のユーザーのプラグインがあります:https://github.com/JFrogDev/artifactory-user-plugins/blob/master/governance/discoverLicenseAndPreventUnapproved/discoverLicenseAndPreventUnapproved.groovy

基本的には、ライセンスを確認するため、公開REST APIはorg.artifactory.addon.license.service.InternalLicensesServiceと呼ばれるサービスに依存します

このサービスは、他の方法の中でも、サーバー上で宣言されたすべてのライセンスを一覧表示する方法を提供します。

// Beware - Internal API of an addon - from artifactory-addon-license-5.4.6.jar 
def licensesService = ctx.beanForType(forName('org.artifactory.addon.license.service.InternalLicensesService')) 
def allLicenseInfos = licensesService.artifactLicensesInfo.licenses 
def artifactLicenses = allLicenseInfos*.name 

このコードスニペットは、Artifactory UIで宣言されたすべてのライセンス名のリストを返します。

その後、artifactory.licensesプロパティを使用して、アーティファクトに関連付けられたライセンス名をこのリストと比較することが容易になります。

関連する問題