かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その17 )( Nexus へコンポーネントを登録する専用 User を作成する )

概要

共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その16 )( 共有ライブラリを管理するために Sonatype の Nexus Repository Manager OSS を使用する ( その16 )( Nexus を 3.0.1-01 → 3.1.0-04 へバージョンアップする ) ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • admin ではなくアップロード用の User を作成してコンポーネントを登録します。

参照したサイト・書籍

目次

  1. コンポーネント登録用の Role を作成する
  2. コンポーネント登録用の User を作成する
  3. 作成した User でコンポーネントを登録する
  4. メモ書き

手順

コンポーネント登録用の Role を作成する

  1. http://localhost:8081/ にアクセスし nexus の管理画面を表示後、画面右上の「Sign in」をクリックして admin / admin123 でサインインします。

  2. 画面上部の歯車のアイコンをクリックします。

    f:id:ksby:20161217193641p:plain

  3. 画面左側のツリーから「Security」-「Roles」を選択後、画面右側の画面の「Create role」-「Nexus role」をクリックします。

    f:id:ksby:20161217194554p:plain

  4. 「Create Role」画面が表示されます。以下の値を入力後、「Create role」ボタンをクリックします。Privileges には以下のものを選択します。

    Maven2 の repository にコンポーネントを追加するのに必要なのは nx-repository-view-maven2-maven-... で始まる role です。
    ※今回作成するユーザにはアップロードされたコンポーネントを削除できないように ...-delete 以外の role を追加します。

    f:id:ksby:20161217225204p:plain

    f:id:ksby:20161217201252p:plain

コンポーネント登録用の User を作成する

  1. 画面左側のツリーから「Security」-「Users」を選択後、画面右側の画面の「Create user」をクリックします。

    f:id:ksby:20161217202832p:plain

  2. 「Create User」画面が表示されます。以下の値を入力後、「Create user」ボタンをクリックします。

    • 今回は単純に role と同じ名前を付けることにします。
    • Password には xxxxxxxx を入力します。
    • Roles には上で作成した「upload-component」だけを選択します。

    f:id:ksby:20161217203142p:plain

    f:id:ksby:20161217203709p:plain

作成した User でコンポーネントを登録する

  1. まず upload-component ユーザで maven-releases と maven-snapshots の repository を閲覧できるか確認します。

  2. nexus の管理画面右上の「Sign out」をクリックしてサインアウトした後、「Sign in」をクリックして upload-component でサインインします。サインイン後、maven-releases と maven-snapshots の repository は以下のように表示されました。

    f:id:ksby:20161217205700p:plain

    f:id:ksby:20161217205914p:plain

  3. ksbysample-library-depend-nospring プロジェクトで作成した upload-component ユーザでアップロードできるか確認します。

  4. build.gradle を リンク先のその1の内容 に変更します。

  5. IntelliJ IDEA の Gradle projects View の「Refresh all Gradle projects」ボタンをクリックした後、uploadArchives タスクを実行します。"BUILD SUCCESSFUL" が表示され、登録に成功します。

    f:id:ksby:20161217225547p:plain

  6. nexus の管理画面で maven-snapshots repository を見ると、ksbysample-library-depend-nospring ライブラリが登録されていることが確認できます。

    f:id:ksby:20161217225857p:plain

    f:id:ksby:20161217225949p:plain

    「Delete component」ボタンが表示されていますが、クリックしても削除できませんでした。

    f:id:ksby:20161217230628p:plain

  7. build.gradle を リンク先のその2の内容 に変更します。

  8. IntelliJ IDEA の Gradle projects View から uploadArchives タスクを実行します。"BUILD SUCCESSFUL" が表示され、登録に成功します。

    f:id:ksby:20161217231918p:plain

  9. nexus の管理画面で maven-releases repository を見ると、ksbysample-library-depend-nospring ライブラリが登録されていることが確認できます。

    f:id:ksby:20161217232039p:plain

    f:id:ksby:20161217232121p:plain

    「Delete component」ボタンが表示されていますが、クリックしても削除できませんでした。

    f:id:ksby:20161217232331p:plain

  10. 今回 nexus に登録した 1.3-SNAPSHOT, 1.3-RELEASE のコンポーネントは削除し、build.gradle の修正も元に戻します。

メモ書き

今回はやりませんでしたが、upload するコンポーネントを限定したい場合にはおそらく以下の手順で Role を作成すれば出来るはず。。。

  1. Content selector を作成します。selector の Specification に JEXL で限定するコンポーネントを記述します。
  2. Privilege を作成します。
  3. Privilege を割り当てた Role を作成します。

マニュアルはここ ( https://books.sonatype.com/nexus-book/reference3/admin.html#content-selectors )。

ソースコード

build.gradle

■その1

group 'ksbysample.library'
version '1.3-SNAPSHOT'

........

uploadArchives {
    def nexusUrl = "http://localhost:8081"
    def nexusUsername = "upload-component"
    def nexusPassword = "xxxxxxxx"

    ........
}
  • version の値を 1.2-RELEASE1.3-SNAPSHOT へ変更します。
  • uploadArchives タスクの nexusUsername, nexusPassword を adminupload-component, admin123xxxxxxxx へ変更します。

■その2

group 'ksbysample.library'
version '1.3-RELEASE'

........
  • version の値を 1.3-SNAPSHOT1.3-RELEASE へ変更します。

履歴

2016/12/18
初版発行。