演習 - パッケージのパイプラインを作成する
ここでは、 Tailspin.SpaceGame.Web プロジェクトとは別の Tailspin.SpaceGame.Web.Models プロジェクトのチームの新しいコード を 取得します。 Models プロジェクト用の Azure Pipelines プロジェクトを作成し、フィードにバージョン番号 1.0.0 の成果物を Azure Artifacts で表示します。
プロジェクトにどのような変更が加えられましたか?
Space Game Web サイトが ASP.NET Core アプリであることを思い出してください。 モデルView-Controller (MVC) パターンを使用して、ユーザー インターフェイスでのデータの表示方法からデータを分離します。 Andy と Mara は、複数のプロジェクトでこれらのクラスを使用できるように、モデル クラスを別のライブラリに移動したいと考えています。
これを行うために、モデル クラスのみを含む Tailspin.SpaceGame.Web.Models という名前の新しい C# プロジェクトを作成します。 同時に、既存のプロジェクト Tailspin.SpaceGame.Web からモデル クラスを削除します。 既存のプロジェクトのモデル クラスを Tailspin.SpaceGame.Web.Models プロジェクトへの参照に置き換えます。
これらのプロジェクトをビルドするために、Andy と Mara はプロジェクトごとに 1 つずつ、2 つのパイプラインを使用します。 最初のプロジェクトとそれに関連付けられている Azure Pipelines 構成が既にあります。 ここでは、GitHub で 2 番目のプロジェクトをフォークし、それをビルドするための Azure Pipelines 構成を作成します。 結果のパッケージを Azure Artifacts に発行します。
Visual Studio Code の準備
以前は、 Tailspin.SpaceGame.Web プロジェクトを操作するように Visual Studio Code を設定しました。 ここでは、 Tailspin.SpaceGame.Web.Models プロジェクトを操作できるように、Visual Studio Code の 2 番目のインスタンスを開きます。
Visual Studio Code の 2 番目のインスタンスを開きます。
Visual Studio Code から、統合ターミナルを開きます。
mslearn-tailspin-spacegame-web プロジェクトが配置されている親ディレクトリに移動します。 ホーム ディレクトリに移動する例を次に示します。
cd ~
ソース コードを入手する
GitHub から Tailspin.SpaceGame.Web.Models プロジェクトのソース コードを取得し、ファイルを操作できるように Visual Studio Code を設定します。
フォークを作成する
最初の手順では、ソース ファイルを操作して変更できるように 、mslearn-tailspin-spacegame-web-models リポジトリをフォークします。 Mara が Models ディレクトリを新しいプロジェクトに配置し、Web プロジェクトから削除したことを思い出してください。
mslearn-tailspin-spacegame-web-models プロジェクトを GitHub アカウントにフォークするには:
- Web ブラウザーから GitHub に移動し、サインインします。
- mslearn-tailspin-spacegame-web-models プロジェクトに移動します。
- [フォーク] を選択します。
- リポジトリをアカウントにフォークするには、手順に従います。
フォークをローカルにクローンする
mslearn-tailspin-spacegame-web-models プロジェクトをコンピューターに複製するには:
GitHub で、 mslearn-tailspin-spacegame-web-models プロジェクトのフォークに移動します。
[コード] を選択します。 次に、[ HTTPS ] タブから URL の横にあるボタンを選択して、URL をクリップボードにコピーします。
Visual Studio Code からターミナル ウィンドウに移動し、この
git clone
コマンドを実行します。 URL をクリップボードの内容に置き換えます。git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
mslearn-tailspin-spacegame-web-models ディレクトリに移動します。 この場所は、リポジトリのルート ディレクトリです。
cd mslearn-tailspin-spacegame-web-models
プロジェクトを開き、構成を確認する
Visual Studio Code では、ターミナル ウィンドウは mslearn-tailspin-spacegame-web-models プロジェクトの ルート ディレクトリを指します。 ファイル エクスプローラーからプロジェクトを開き、その構造を表示してファイルを操作できるようにします。
プロジェクトを開く最も簡単な方法は、現在のディレクトリで Visual Studio Code を再度開くことです。 これを行うには、統合ターミナルから次のコマンドを実行します。
code -r .
エクスプローラーでディレクトリとファイル ツリーを確認します。
統合ターミナルをもう一度開きます。 ターミナルでは、ご使用の Web プロジェクトのルートに表示されます。
azure-pipelines.yml ファイルを開きます。
パッケージがビルドされ、バージョンが設定され、パッケージが Azure Artifacts に追加される手順が表示されます。
この
DotNetCoreCLI@2
タスクは、プロジェクトをビルドします。- task: DotNetCoreCLI@2 displayName: 'Build the project - $(buildConfiguration)' inputs: command: 'build' arguments: '--no-restore --configuration $(buildConfiguration)' projects: '**/*.csproj'
この
DotNetCoreCLI@2
タスクは、バージョン 1.0.0 でプロジェクトをパッケージ化します。- task: DotNetCoreCLI@2 displayName: 'Pack the project - $(buildConfiguration)' inputs: command: 'pack' projects: '**/*.csproj' arguments: '--no-build --configuration $(buildConfiguration)' versioningScheme: byPrereleaseNumber majorVersion: '1' minorVersion: '0' patchVersion: '0'
パッケージを開発するときは、
byPrereleaseNumber
バージョン管理スキームを使用するのが一般的です。 この方法では、バージョン番号の末尾に-CI-20190621-042647
などの一意のプレリリース サフィックスが追加されます。 この例に従うと、完全なバージョン番号が1.0.0-CI-20190621-042647
されます。この
NuGetCommand@2
タスクは、 パッケージを Tailspin.SpaceGame.Web.Models Azure Artifacts フィードにプッシュします。- task: NuGetCommand@2 displayName: 'Publish NuGet package' inputs: command: push feedPublish: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models' allowPackageConflicts: true condition: succeeded()
feedPublish
は、発行するフィードの名前を指定します。 名前の形式は<projectName>/<feedName>
で、次のようになります。-
$(System.TeamProject)
は、プロジェクト名を参照する定義済みの変数です (例: "Space Game - web - Dependencies")。 -
Tailspin.SpaceGame.Web.Models
は、前の演習で指定したフィード名です。
-
アクセス許可を設定する
パイプラインを設定して実行する前に、Build サービスに適切なアクセス許可を付与する必要があります。
- Azure DevOps のプロジェクトに移動します。
- 左側のメニューから [成果物 ] を選択します。
- 画面の右上にある [設定] アイコンを選択し、[ アクセス許可 ] タブを選択します。
- [ ユーザー/グループの追加] ボタンを選択します。
- [ ユーザー/グループ ] フィールドに「 Space Game - web - Dependencies Build Service」と入力し、 共同作成者 ロールを選択して 、[保存] を選択します。
Azure Pipelines でパイプラインを作成する
前のモジュールで Azure Pipelines を設定する方法について学習しました。 リフレッシャーが必要な場合は、 Azure Pipelines を使用してビルド パイプラインを作成します。
2 つ目のパイプラインを設定してパッケージをビルドし、そのパッケージを Azure Artifacts にアップロードする方法を次に示します。
Azure DevOps から、 Space Game - Web - Dependencies プロジェクトに移動します。
左側のメニューから[パイプライン]を選択 します。
[新しいパイプライン] を選択します。
[ 接続 ] タブで、 GitHub を選択します。
[選択] タブで、mslearn-tailspin-spacegame-web-models を選択します。
メッセージが表示されたら、GitHub の資格情報を入力します。 表示されたページから一番下までスクロールし、[ 承認してインストール] を選択します。
[ 校閲 ] タブには、新しいパイプラインの azure-pipelines.yml ファイルが表示されます。
[ 実行] を選択します。
パイプラインの実行を監視します。
[成果物] タブ に 移動します。
上部のドロップダウンから Tailspin.SpaceGame.Web.Models を選択します。
結果のパッケージ Tailspin.SpaceGame.Web.Models が Azure Artifacts に表示されます。
パッケージを選択して詳細ページに移動します。 次に、後でアクセスできる場所にバージョン番号をコピーします。
次のユニットでは、このバージョン番号を使用します。