このページの本文へ

FIXER cloud.config Tech Blog

プライベートなNuGetパッケージはAzure Artifactsで配信しよう。

2020年02月26日 11時00分更新

文● 和田 一真/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「プライベートなNuGetパッケージはAzure Artifactsで配信しよう。」を再編集したものです。

 こんにちは。バックエンドエンジニアの和田です。最近インフラ周りも触り始めてきたので、今回は仕事で利用しているAzure Artifactsという便利サービスについてご紹介します。

Azure Artifactsって?

 プロジェクトにクラウドでホストされた容量無制限のプライベート Git リポジトリを実現します

Azure Artifacts | Microsoft Azure

 Azure DevOpsが提供しているサービスのひとつで、NuGetやnpmなど著名なパッケージマネージャのフィード(パッケージを配信するサーバー)を簡単に作成し、公開することができます。nuget.orgで配信されているようなサードパーティ製だけではなく、チーム内のみで使う自家製ライブラリもパッケージマネージャで管理したい時に便利です。

フィードを作ってみよう

 Azure DevOpsのメニューに並ぶアイコンのうち、ピンクのアイコンをクリックするとArtifactsのページが表示されます。Create Feedをクリックしてください。

 するとこんな画面が出てきました。名前を入力後、公開したい範囲とUpstream sourcesを設定するかどうかを選択します。Upstream sourcesというのは、Artifactsのフィード経由でnuget.orgなどのパブリックフィードで配信されているパッケージを取得できる機能です。

 Upstream sourcesで取得したパッケージはArtifactsのフィードにキャッシュされ、取得できるバージョンのコントロールもできるようになります。ソリューション全体でパッケージのバージョンを管理しやすくなったり、突然利用しているパッケージがnuget.orgから削除されてしまった時のために設定するのがオススメです。

 全ての設定が終わったら、いよいよCreateをクリックしてフィードを作成しちゃいましょう。今回はPulshukaという名前のフィードを作りました。ちなみに、Artifactsでは作成時にパッケージマネージャを選択する必要はありません。対応しているパッケージマネージャならそれぞれの方法でアップロードすることでいい感じに配信してくれます。

NuGetパッケージを作ってみよう

 Visual StudioでNuGetパッケージを作成していきます。npmなど他のパッケージマネージャを使う場合はそれぞれの手順に従って作成してください。「新しいプロジェクトの作成」をクリックして、「クラス ライブラリ」を選択しましょう。

 パッケージに含めるクラス(Artifact.cs)はこんな感じで作りました。


using System;

namespace Artifacts
{
    public class Artifact
    {
        public Artifact()
        {
            Console.WriteLine("Sparagmos");
        }
    }
}

 コンストラクタを呼んだらSparagmosって叫ぶだけのシンプルなコードですね。

 クラスができたら次はパッケージの設定をしましょう。プロジェクトのプロパティを開いて、パッケージタブを選択してください。

 ここでパッケージの名前やバージョン番号などを設定することができます。NuGetはセマンティックバージョニング 2.0を採用しているので、これに従ってバージョン番号を付けるのが良いと思います。

 さて、このままだとコード中に次のようなXMLコメントを記述してもパッケージに含まれないため読むことができません。


/// <summary>
/// これであんなことやこんなことをします。 
/// </summary>
public Artifact() 
{ 

 XMLコメントをパッケージに含めたい場合には、ビルドタブで「XML ドキュメント ファイル(X)」のチェックを入れてください。

 あとはリリース構成でビルドを行なえば完了です。

 作成したパッケージをArtifactsのフィードで配信しよう

 前のステップでビルドした成果物(nupkgファイル)があるディレクトリでPowerShellを開きましょう。Visual Studioのデフォルトだと[Project Dir]/bin/Release/に出力されるはずです。

 Azure CLIでログインしていない場合は、ログインします。


az login

 Artifactsのページに戻り、Connect to Feedをクリックしてください。ここにフィードへの接続方法がいろいろ書いてあります。今回はdotnetコマンドでアップロードするので、dotnetを開きましょう。

 Publish packagesのコマンドをPowerShellにコピペして、<package-path>をビルドした成果物に書き換え、実行します。もし認証がうまくいかないようであれば、--interactiveオプションを付けると上手くいくかもしれません。

 成功したら、ArtifactsのフィードでPackage一覧を確認してみましょう。

 無事、PulshukaにArtifactsが追加されていますね。

配信したパッケージを使ってみよう

 まずはパッケージを取得するフィードを設定します。再びConnect to Feedを開いて、Project setupの内容をコピーし、使用するプロジェクトの.csprojか.slnファイルと同じ、またはそれより上の階層にnuget.configという名前で配置します。ソース管理に含めちゃうと楽でいいと思います。

 Visual Studioを使うのであれば、IDE側で設定してもよいです。

 あとは一般的なNuGetパッケージと一緒です。インストールして使うことができます。


using Artifacts;

namespace Bondrewd
{
    class Program
    {
        static void Main(string[] args)
        {
            var light = new Artifact();
        }
    }
}

 無事にスパラグモスを受け取ることができました。実に素晴らしいです。

おわりに

 もちろんCI/CDパイプラインの中に組み込んで、マージしたらAzure Pipelinesが自動でビルドしてテストしてフィードにPushみたいなことも簡単にできます。自動化についてはまた後日余裕ができたら書きたいですね。

 とにかく簡単で便利なAzure Artifactsは、2GBまで無料なのでぜひ使ってみてください。

 和田 一真/FIXER

 FIXER新卒1年目の自称Backend Engineer。Fintech Divisionに所属してASP.NETを弄っている。興味あるのは.NET Coreとかサーバーレスとかソフトウェアアーキテクチャ。ところでどこぞのディビジョン所属って名乗るとヒプノシスなんちゃらを持ってラップバトルしてる気分になるので好きです。

[転載元]
 プライベートなNuGetパッケージはAzure Artifactsで配信しよう。

カテゴリートップへ