Azure Artifactsを使ってみよう(1)
ここからは実際にAzure Artifactsを使用してパッケージの管理を体験してみましょう。今回はNuGetパッケージを例にして、フィードの作成からパッケージの公開・利用までの流れを説明します。
フィードの作成
まず、Azure DevOpsプロジェクトにログインし、左側のメニューから「Artifacts」を選択します。初回アクセス時は「Create Feed」ボタンが表示されるので、これを選択してフィードを作成します。
フィード作成画面では以下の項目を設定します。
- Name:フィードの名前
-
Visibility:フィードの公開範囲
- Members of <組織名>:組織メンバーのみアクセス可能
- Specific people:指定したユーザーのみアクセス可能
-
Upstream sources:外部パッケージソースの利用
- Include packages from common public sources:パブリックソースからのパッケージも利用
-
Scope:フィードの管理範囲を設定
- Project:特定のプロジェクトに限定したフィード(そのプロジェクト内でのみ利用可能)
- Organization:組織全体で共有するフィード(複数のプロジェクトから利用可能)
Scopeの選択は重要です。Organizationスコープでは組織内の全プロジェクトからアクセス可能になり、プロジェクト間でのライブラリ共有が容易になります。
一方、Projectスコープでは特定のプロジェクト専用のパッケージ管理ができ、セキュリティと管理の観点でより厳密な制御が可能です。
設定が完了したら「Create」ボタンでフィードを作成します。
パッケージの公開
次に、開発したライブラリをNuGetパッケージとして公開してみましょう。Visual Studio Codeを使用してプロジェクトを作成し、Azure Artifactsに公開する手順を説明します。
(1)Visual Studio Codeでのプロジェクト作成
まず、任意の場所に新しいフォルダを作成します。フォルダ名は「WingsMathLibrary」とします。
Visual Studio Codeを開き、メニューから「ファイル」→「フォルダーを開く」を選択し、作成したフォルダを開きます。次に、VS Codeの拡張機能「C# Dev Kit」がインストールされていることを確認してください。インストールされていない場合は、拡張機能ビューから検索してインストールします。
フォルダを開いたら、コマンドパレット(Ctrl+Shift+P または Cmd+Shift+P)を開き、「.NET: 新しいプロジェクト」と入力して選択するとプロジェクトテンプレートの選択画面が表示されるので、「クラス ライブラリ」を選択します。次にプロジェクト名の入力が求められるので、「Wings.MathLibrary」と入力します。
これで、クラスライブラリプロジェクトが作成されます。エクスプローラーパネルにプロジェクトファイルが表示されることを確認してください。
(2)ライブラリのコード実装
作成されたClass1.csファイルを削除し、MathLibrary.csファイルを新規作成し簡単な数学ライブラリの機能を実装します。
using System;
namespace Wings.MathLibrary
{
/// <summary>
/// 基本的な数学計算を提供するクラス
/// </summary>
public class Calculator
{
/// <summary>
/// 二つの整数を加算します
/// </summary>
public int Add(int a, int b)
{
return a + b;
}
/// <summary>
/// 二つの整数を乗算します
/// </summary>
public int Multiply(int a, int b)
{
return a * b;
}
/// <summary>
/// 二つの整数を除算します
/// </summary>
public double Divide(int a, int b)
{
if (b == 0)
throw new DivideByZeroException("ゼロで割ることはできません");
return (double)a / b;
}
}
}
(3)プロジェクトファイルの編集
Wings.MathLibrary.csprojファイルを開き、パッケージ情報を追加します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- .NETのターゲットフレームワークを指定 -->
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- NuGetパッケージ情報 -->
<PackageId>Wings.MathLibrary</PackageId> <!-- パッケージの一意な識別子 -->
<Version>1.0.0</Version> <!-- パッケージのバージョン -->
<Authors>Wings Development Team</Authors> <!-- パッケージの作成者 -->
<Company>Wings</Company> <!-- 会社名 -->
<Description>社内用数学計算ライブラリ</Description> <!-- パッケージの説明 -->
<PackageTags>math;calculation;utility</PackageTags> <!-- 検索用タグ -->
</PropertyGroup>
</Project>
Wings.MathLibrary.csprojファイルには、クラスライブラリをNuGetパッケージとして公開するために必要な情報を追記します。
(4)パッケージのビルドと公開
ターミナルでコマンドを実行してパッケージをビルドし、Azure Artifactsに公開します。
まずは公開するにあたって必要となるPersonal Access Tokenを取得します。Personal Access Tokenの取得は、Azure DevOpsの右上の設定アイコンから「Personal access tokens」を選択し、「New Token」で作成できます。
任意の名称を入力し、「Scopes」で「Custom defined」を選択して「Packaging」内の「Read, write, & manage」というスコープにチェックを入れて「Create」ボタンでトークンを作成します。作成するとトークンが画面上に表示されるので必ずこのタイミングでコピーをしておきます。
Personal Access Tokenが作成できたら、以下のコマンドを実行していきます。
# パッケージのビルド
dotnet pack --configuration Release
# NuGetのパッケージソースとしてAzure Artifactsのフィードを追加する(初回のみ)
dotnet nuget add source "https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feedname}/nuget/v3/index.json" --name "WingsFeed" --username "任意のユーザー名" --password "{Personal Access Token}" --store-password-in-clear-text
# パッケージの公開
cd Wings.MathLibrary
dotnet nuget push "./bin/Release/Wings.MathLibrary.1.0.0.nupkg" --source "WingsFeed" --api-key "any-string"
上記の3つのコマンドを順番に実行することで、ローカルで開発したライブラリをAzure Artifactsに公開し、他のプロジェクトから利用できるようになります。
「dotnet pack」コマンドは、.NETプロジェクトからNuGetパッケージ(.nupkgファイル)を作成します。
「dotnet nuget add source」コマンドは、NuGetパッケージソースとしてAzure Artifactsのフィードを追加します。その際、ソースURLとしてAzure ArtifactsのURL「https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feedname}/nuget/v3/index.json」を指定します。{organization}、{project}、{feedname}には使用しているDevOpsの組織名、プロジェクト名、Azure Artifactsのフィード名を入力して下さい。
最後に「dotnet nuget push」コマンドで、作成したNuGetパッケージを指定したフィードに公開します。
パッケージの公開に成功すると、Azure Artifactsの画面上でパッケージを参照できるようになります。
これで、パッケージを利用できるようになりました。
