kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Visual Studio Team ServicesのNuGetサーバー機能を使う(12日目)

はじめに

NuGetを使う場合、通常はnuget.orgに公開したパッケージは誰でも使うことができます。しかし、エンタープライズなどの用途で非公開パッケージを使いたい場合はnuget.orgではなく、myget.orgや、IISをNuGetサーバーとして構築する必要がありました。

最近、VSTSにもPackage Management機能が提供され、悩みがだいぶ減りました。使い方について紹介します。

インストール

f:id:kkamegawa:20161211202359p:plain

Package Managementは標準では提供されておらず、5人までは無償で使える拡張機能になっています。

www.visualstudio.com

価格などはこちらに載っています。Visual Studio Enterpriseのサブスクリプションを持っているユーザーはカウントに入りません。

azure.microsoft.com

f:id:kkamegawa:20161211202400p:plain

インストールするVSTSのテナント名を指定します。注意点として、Visual Studio Enterpriseを持っている人だけであれば、Buyではなく、横にあるドロップダウンから"Install for paid users"を選択してください。

f:id:kkamegawa:20161211202401p:plain

これで成功です。marketplaceを閉じて、VSTSをリロードすると、Build & ReleaseにPackagesというハブが追加されています。

フィードを作成する

f:id:kkamegawa:20161211202402p:plain

New feedをクリックすると、新しいフィードの作成ができます。

f:id:kkamegawa:20161211202403p:plain

フィード名やセキュリティを設定します。

  • Only(チーム名) members can view package:チームに所属しているメンバーのみパッケージの閲覧(つまり使用)が可能です。
  • Everyone in your account can view package:このVSTSホストにアクセスできる人ならだれでも閲覧できます。

つまり、無制限に公開するNuGetサーバーというものは作れなくて、あくまでもVSTSの認証が前提になっています。

  • (チーム名) members can add package:チームメンバーがパッケージの追加可能です。
  • Project Collection Build Service can add package:VSTSのビルドサービスのみが追加可能です。つまり、VSTS内にあるソースをビルドしてアップロードのみが可能で、よそからもってきたパッケージをアップロードするということはできません。

  • Include packages from the public NPM registory in this feed:外部のnpmレジストリのフィードを含めます。

f:id:kkamegawa:20161211202404p:plain

フィード作成後、パッケージの接続ができます。Connect to feedをクリックします。

フィードに接続する

Nugetフィードを構成する

f:id:kkamegawa:20161211202405p:plain

NuGetとnpmのフィードが使用可能です。こちらはNuGet。画面にあるDownload Nuget + VSTS Credential Managerをダウンロードして、実行しておきましょう。

画面中にはnuget.exeにソースフィードを登録するコマンドも出ているので、実行しておきましょう。

npmフィードを構成する

f:id:kkamegawa:20161211202406p:plain

npmを使う場合はnpmフィードも登録しておきましょう。Linuxおよび、macOSで使う場合はGenerate npm credentialsをクリックします。

macOS/Linux

f:id:kkamegawa:20161211202407p:plain

npmcrcファイルに生成されたテキストをコピペしてください。

Windows

f:id:kkamegawa:20161211202408p:plain

node.jsをインストール(Visual Studioに含まれているものでも構わないはずです)して、管理者コマンドプロンプトで以下のコマンドを実行します。

npm install -g vsts-npm-auth --registry https://registry.npmjs.com

f:id:kkamegawa:20161211202409p:plain

インストール後、適当なエディタで以下の記述を書いて、.npmrcというファイル名で保存します。

f:id:kkamegawa:20161211202410p:plain

ここではアカウントのルート(%HOMEPATH%)に保存しています。保存後、以下のコマンドを実行します。

vsts-npm-auth -config .npmrc

.npmrcファイルを保存した場所を指定してください。これで準備ができました。

プレビュー版を非表示にする

f:id:kkamegawa:20161211202411p:plain

nuget.orgでも、プレリリース版のパッケージは -pre を付けていますが、同様な機能のRelease Viewsがあります。リリース度合いに応じて、Prerelease,Releaseというビューを指定できます。

作成パッケージの管理

f:id:kkamegawa:20161211202413p:plain

作成したNuGetパッケージはこのように管理できます。

  • Promote:先ほどの@Prerelease, @releaseなどのどのビューに登録するか選択します。
  • Unlist:非表示にします
  • Delete package:パッケージを永久に削除します
  • Download:パッケージをダウンロードします。

注意点として、一度作成したNugetパッケージは同じバージョンで再度登録することはできません。例えば1.0.0を登録して、ビルドが間違えていたから1.0.0を再度登録するということはパッケージを削除したとしてもできません。

むやみやたらにセマンティックバージョンを上げることもできないので、このような場合は1.0.0-Dev-ビルド番号という方法で回避してください。

kkamegawa.hatenablog.jp

具体的な方法は過去に書きましたので、参考にしてください。

f:id:kkamegawa:20161211202412p:plain

パッケージを削除するときの警告です。

まとめ

パッケージ管理機能は認証も使えるので、非常に便利です。Enterpriseを持っていないと課金の対象になりますが、持っている場合はぜひ使ってみてください。

明日はたぶんテスト関係を…やれたらいいな。