はじめに
NuGetを使う場合、通常はnuget.orgに公開したパッケージは誰でも使うことができます。しかし、エンタープライズなどの用途で非公開パッケージを使いたい場合はnuget.orgではなく、myget.orgや、IISをNuGetサーバーとして構築する必要がありました。
最近、VSTSにもPackage Management機能が提供され、悩みがだいぶ減りました。使い方について紹介します。
インストール
Package Managementは標準では提供されておらず、5人までは無償で使える拡張機能になっています。
価格などはこちらに載っています。Visual Studio Enterpriseのサブスクリプションを持っているユーザーはカウントに入りません。
インストールするVSTSのテナント名を指定します。注意点として、Visual Studio Enterpriseを持っている人だけであれば、Buyではなく、横にあるドロップダウンから"Install for paid users"を選択してください。
これで成功です。marketplaceを閉じて、VSTSをリロードすると、Build & ReleaseにPackagesというハブが追加されています。
フィードを作成する
New feedをクリックすると、新しいフィードの作成ができます。
フィード名やセキュリティを設定します。
- 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レジストリのフィードを含めます。
フィード作成後、パッケージの接続ができます。Connect to feedをクリックします。
フィードに接続する
Nugetフィードを構成する
NuGetとnpmのフィードが使用可能です。こちらはNuGet。画面にあるDownload Nuget + VSTS Credential Managerをダウンロードして、実行しておきましょう。
画面中にはnuget.exeにソースフィードを登録するコマンドも出ているので、実行しておきましょう。
npmフィードを構成する
npmを使う場合はnpmフィードも登録しておきましょう。Linuxおよび、macOSで使う場合はGenerate npm credentialsをクリックします。
macOS/Linux
npmcrcファイルに生成されたテキストをコピペしてください。
Windows
node.jsをインストール(Visual Studioに含まれているものでも構わないはずです)して、管理者コマンドプロンプトで以下のコマンドを実行します。
npm install -g vsts-npm-auth --registry https://registry.npmjs.com
インストール後、適当なエディタで以下の記述を書いて、.npmrcというファイル名で保存します。
ここではアカウントのルート(%HOMEPATH%)に保存しています。保存後、以下のコマンドを実行します。
vsts-npm-auth -config .npmrc
.npmrcファイルを保存した場所を指定してください。これで準備ができました。
プレビュー版を非表示にする
nuget.orgでも、プレリリース版のパッケージは -pre を付けていますが、同様な機能のRelease Viewsがあります。リリース度合いに応じて、Prerelease,Releaseというビューを指定できます。
作成パッケージの管理
作成したNuGetパッケージはこのように管理できます。
- Promote:先ほどの@Prerelease, @releaseなどのどのビューに登録するか選択します。
- Unlist:非表示にします
- Delete package:パッケージを永久に削除します
- Download:パッケージをダウンロードします。
注意点として、一度作成したNugetパッケージは同じバージョンで再度登録することはできません。例えば1.0.0を登録して、ビルドが間違えていたから1.0.0を再度登録するということはパッケージを削除したとしてもできません。
むやみやたらにセマンティックバージョンを上げることもできないので、このような場合は1.0.0-Dev-ビルド番号という方法で回避してください。
具体的な方法は過去に書きましたので、参考にしてください。
パッケージを削除するときの警告です。
まとめ
パッケージ管理機能は認証も使えるので、非常に便利です。Enterpriseを持っていないと課金の対象になりますが、持っている場合はぜひ使ってみてください。
明日はたぶんテスト関係を…やれたらいいな。