はじめに
VSTS/TFS 2017にはNuGetパッケージサーバー機能が提供されています。VSTSの場合、最初の5名までは無料です。パブリックに公開するようなパッケージではnuget.orgを使えばいいのですが、内部でパッケージの開発&テストするときにはVSTSのパッケージサーバー機能を使うと便利です。
いくつかパッケージ公開していますが、いずれも確認用はVSTSでテストして、問題なければnuget.orgに公開しています。
フィード作成
Package Managementからフィードを作成します。用途に応じて好きに設定します。チームメンバーか、だれでも使えるか。
誰でもパッケージを追加できるか、ビルド時のみパッケージ追加か。要はVSTSもしくは外部リポジトリ(GitHubなど)にあるソースをビルドして、VSTSに取り込むという方法です。
最近追加された新機能でnpmもサポートされました。
ソースファイル
NuGetパッケージはこんな感じで作っています。NuGetパッケージごとにリポジトリ作っておけばよかったかなと思いつつも、ぼっちプロジェクトなのでいいかなと。GitHubにもミラーしています。
ビルド
ビルドはdevブランチとmasterブランチの二つに対して設定しています。devにpushすると、VSTSのCIで、VSTSのパッケージ管理に登録されます。masterにpushすると、nuget.orgに公開しています。
こちらがdevブランチをビルドした時のNuGet公開タスク設定。フィードにInternal NuGetとfeed URLを指定するだけでOKです。
devブランチをビルドするときはパッケージ番号にRelease番号を付けています。これは同じバージョン番号でNuGetパッケージを上書きできないという仕様によるものです。正式版はセマンテックバージョンに従って手動で上げていきます。
正確にはこんな風にバージョン番号をファイルに記録しているので、この番号を変更するだけですが。
Python27Dev_NuGet/VERSION at master · kkamegawa/Python27Dev_NuGet · GitHub
masterブランチのNuGet PublisherタスクではExternal NuGet Feed(nuget.org)を指定しています。これは外部サービス機能で事前にAPI KEYを登録しておきます。
devブランチをビルドすると、こんな感じで、NuGetフィードがVSTSに登録されます。不要になったものはDeleteで消せます。Unlistすると、表示もされなくなります。
フィードに接続する
Package Managementの右上にあるConnect to feedをクリックすると、VSおよび、npmで接続するための方法が表示されます。
Visual StudioではPackage source URLをこんな風に登録します。
オプションのNuGetパッケージマネージャーにある、パッケージソースに登録します。これでInstall-packageコマンドレットで自動的に登録が可能になります。
npmの場合、npmに対応した認証マネージャーがあるので、connect to feedの画面でダウンロードしておいてください。
VSTS/TFSのPackage Manager機能は非公開および、内部でテスト用のパッケージ作るとき便利ですよ。