LoginSignup
2
1

More than 3 years have passed since last update.

Azure DevOps Serverでの独自パッケージ管理

Last updated at Posted at 2020-12-02

TL;DR

  • .NET Frameworkで作成した既存のクラスライブラリを、Azure DevOps Server(オンプレ)のAzure Artifactsを利用し独自パッケージ管理を行うフィードへの登録までの手順を記載します。
  • 検証したプロジェクトはVB.NETのクラスライブラリ(.NET Framework 4.0)です
  • 基本的な手順は、スペックファイルの作成、パッケージの作成、そしてプッシュの3ステップです。

環境

  • Azure DevOps Server 2019 Update 1(Update 1.1 Patch 2)
  • Nuget 5.7.0.6726
  • Visual Studio 2019

手順

事前準備

1. nuget.exeの準備

NuGetパッケージを作成するには、nuget.exeを使います。以下のページから、Windows用のツールをダウンロードします。

適当なフォルダに配置し、フォルダへのパスを通しておきます。

2. プッシュ用のフィードの作成

マイナビの「Azure DevOps」でチーム開発を行おう(5)Azure Artifactsを使ったパッケージ管理の「パッケージをAzure Artifactsに登録する」に従い、Azure Artifactsのフィードを作成します。

💡 プロキシ環境では「このフィードを経由してパブリックソースからパッケージを使用する」を選択すると、後述のNugetパッケージのプッシュでエラーが発生しました。対処として「このフィードに発行されているパッケージのみを使用する」を選択する必要がありました。

image.png

ビルド~プッシュ

1. 対象クラスライブラリプロジェクトのビルド

Visual Studio 2019で対象ソリューションを開き、対象クラスライブラリプロジェクトがReleaseビルドできることを確認します。

💡 検証したプロジェクトはVB.NETのクラスライブラリ(.NET Framework 4.0)のプロジェクト(.vbproj)です。

2. Releaseビルドファイルの入れ替え

必須の作業ではありません。

もし既にReleaseビルドを別の方法で管理している場合1は、bin\Releaseのファイルを先に入れ替えておきます。

💡 パッケージファイル(.nupkg)に含むファイルと既存で管理しているファイルと整合性を保つことが目的です。

3. スペックファイルの作成

コマンドプロンプトでプロジェクトファイル(.vbproj) のフォルダに移動し、以下を実行します。

nuget spec

公式ドキュメントを参考に作成された(.spec)ファイルを編集します。

特に以下の属性にご注意ください。

またプロジェクトの出力アセンブリ以外を含めたい場合には以下のような形とします。

対象が.NET Framework 4.0の場合のspecファイル例。
<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata></metadata>
  <files>
    <file src="bin\Release\*.dll" target="lib\net40" />
    <file src="bin\Release\*.xml" target="lib\net40" />
  </files>
</package>

4. パッケージの作成

以下を実行して、Release構成のNugetパッケージ(.nupkg)を作成します。

nuget pack -p Configuration=release

💡 属性のスペルミス(例:Configu l ation)があると、エラーは表示されずに既定値のDebug構成をパッケージしますのでご注意ください。
💡 Nugetパッケージ(.nupkg)はZIPファイルのため展開して確認できます。

5. プッシュ

フィードページにアクセスし「フィードに接続する」を選択して記載の内容に従います。

作成したフィードをNugetに追加(初回時のみ)

nuget.exe sources Add -Name "<フィード名>" -Source "http://<Azure DevOps ServerのコレクションURL>/_packaging/<フィード名>/nuget/v3/index.json"

作成したフィードをプッシュ

nuget.exe push -Source "<フィード名>" -ApiKey AzureDevOps <作成したパッケージ>.nupkg

💡 プロキシ環境では「このフィードを経由してパブリックソースからパッケージを使用する」を選択したフィードにプッシュするとエラーが発生しました。

エラー

http://<Azure DevOps ServerのURL>/_oi/_diagnostics/activityLogにアクセスして確認。
参考:https://azukipochette.hatenablog.com/entry/2019/12/25/083058

内容

インデックス  名前  値
-2  ExceptionMessage    アップストリーム パッケージ ソース 'https://api.nuget.org/v3/index.json' からデータを取得できませんでした: An error occurred while sending the request.

関連


  1. リポジトリにてバイナリを管理している、共有サーバーでファイル管理しているなど。 

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1