Azure DevOps Artifacts で NuGet パッケージを配信してみる
2019-09-18
azblob://2022/11/11/eyecatch/2019-09-18-try-distributing-nuget-pkg-with-azure-devops-artifacts-000.jpg

10歳からプログラミングを始めたので時代の流れに乗り切れていない松枝です。
Visual のつかない BASIC 言語から手を付け始めたので、オブジェクト指向がまともに使えるようになったのは社会人になってからです。技術者として生き残るためには新しい技術を身につけなければなりません。率直にヤバい。

ということで、新人さんヘルプの名目で、比較的最近登場した Azure DevOps の Artifacts を使用してみたノウハウを書いておこうと思います。

Azure DevOps Artifacts とは?

Azure DevOps という、DevOps・・・アジャイル開発とか CI/CD と言ったほうがピンとくるかもしれません、そういった手法をサポートしてくれるサービス群に含まれるものです。

https://azure.microsoft.com/ja-jp/services/devops/

Artifacts は内部向けにパッケージを配布するものです。
ここにパッケージを置いておけば、例えば .NET 系であれば NuGet の参照先に指定してパッケージをダウンロードできます。
同じ Azure DevOps のサービスである Pipelines と組み合わせれば、ビルドからパッケージの配布準備までできちゃうので、マイクロサービスの開発も効率的にできそうですね!

以降で、Visual Studio のプロジェクトをローカル PC から NuGet パッケージとして配信する方法を紹介してみます。

パッケージ配信の流れ

Feed の作成

まずはパッケージの配信に使用する Feed というものを作成します。
この Feed を経由して、パッケージを登録したり配信したりできます。

  1. Azure DevOps を開き、「Artifacts」を開く
  2. 画面上部の「+ New feed」をクリックする
  3. 「Create new feed」の画面が出るので、必要事項を入力して「Create」をクリックする
    【Name】
     Feed 名
    【Visibility】
     Feed が使用可能な範囲。
    【Packages from public sources】
     この Feed を通して公開パッケージも使用するかどうか。

作成完了すると画面上は作成した Feed が開かれた状態になります。
以降はこの Feed の画面がとても頼りになります!

NuGet.exe CLI の導入(初回のみ)

パッケージの作成や登録のために NuGet.exe CLI が必要です。
この記事をここまで読んでいたただいた方は恐らく PC に Visual Studio をインストールされていて、「NuGetって入ってなかったっけ?」と思われているでしょうか。残念ながら NuGet.exe CLI は Visual Studio をインストールしただけでは入っていないようです。
よって、初めて NuGet.exe CLI を使用するときはダウンロードして使用可能にします。

  1. Feed の画面で「Connect to feed」をクリックし、左側で「NuGet」が選択されていることを確認する
  2. 「Push packages using NuGet.exe」の項目内の「Download NuGet」のリンクをクリックする
  3. 「Windows x86 Commandline」の中から「recommended latest」と書かれた nuget.exe をクリックしてダウンロードする
  4. ダウンロードしたファイルを任意のフォルダに移動し、パスを通しておく

Feed をローカル PC に登録

ローカル PC から Feed に対して nuget.exe CLI 経由で作業するため、Feed を登録します。

  1. Feed の画面で「Connect to feed」をクリックし、左側で「NuGet」が選択されていることを確認する
  2. 「Add this feed」に記載のコマンドをコピーアイコンでコピーする
  3. Windows PowerShell を起動する
  4. コピーしておいたコマンドを貼り付けて実行する
  5. nuget.exe sources を実行し、Feed が登録されたことを確認する

NuGet パッケージの作成

Feed とのやり取りの準備ができたので、配布したいコードをパッケージ化しましょう。

  1. Windows PowerShell を起動する
  2. パッケージの作成を実施する Visual Studio プロジェクトのルートフォルダに移動する
  3. nuget.exe spec を実行し、nuspec ファイルを作成する
  4. 作成された nuspec ファイルを開き、仮設定された値の修正等を実施する
  5. nuget.exe pack <csprojファイル名> を実行し、NuGet パッケージ (nupkg ファイル)を作成する

Feed に NuGet パッケージを登録

最後の手順です!

  1. Feed の画面で「Connect to feed」をクリックし、左側で「NuGet」が選択されていることを確認する
  2. 「Push a package」に記載のコマンドをコピーアイコンでコピーする
  3. Windows PowerShell を起動する
  4. パッケージの作成を実施する Visual Studio プロジェクトのルートフォルダに移動する
  5. コピーしておいたコマンドを貼り付け、nupkg ファイル名を作成した nupkg ファイルの名前に変更して実行する
  6. 「アカウントにサインイン」のウィンドウが出るので、Azure への接続に使用するメールアドレスとパスワードを入力して先に進む
  7. Feed の画面を更新し、作成したパッケージが登録されたことを確認する

まとめ

ちなみに配信されたパッケージを使うときは、同じく Feed 画面の Overview に書かれている「Get this package」のコマンドをパッケージマネージャーコンソールで実行したらインストールできました。
今回 Artifacts を使ってみて、Feed 画面の優しさを感じました。
Azure DevOps の機能を活用して多くの作業を自動化していきたいですね。