演習 - パッケージのパイプラインを作成する

完了

ここでは、 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 番目のインスタンスを開きます。

  1. Visual Studio Code の 2 番目のインスタンスを開きます。

  2. Visual Studio Code から、統合ターミナルを開きます。

  3. 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 アカウントにフォークするには:

  1. Web ブラウザーから GitHub に移動し、サインインします。
  2. mslearn-tailspin-spacegame-web-models プロジェクトに移動します
  3. [フォーク] を選択します
  4. リポジトリをアカウントにフォークするには、手順に従います。

フォークをローカルにクローンする

mslearn-tailspin-spacegame-web-models プロジェクトをコンピューターに複製するには:

  1. GitHub で、 mslearn-tailspin-spacegame-web-models プロジェクトのフォークに移動します。

  2. [コード] を選択します。 次に、[ HTTPS ] タブから URL の横にあるボタンを選択して、URL をクリップボードにコピーします。

    GitHub リポジトリの URL とコピー ボタンを示すスクリーンショット。

  3. Visual Studio Code からターミナル ウィンドウに移動し、この git clone コマンドを実行します。 URL をクリップボードの内容に置き換えます。

    git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
    
  4. mslearn-tailspin-spacegame-web-models ディレクトリに移動します。 この場所は、リポジトリのルート ディレクトリです。

    cd mslearn-tailspin-spacegame-web-models
    

プロジェクトを開き、構成を確認する

Visual Studio Code では、ターミナル ウィンドウは mslearn-tailspin-spacegame-web-models プロジェクトの ルート ディレクトリを指します。 ファイル エクスプローラーからプロジェクトを開き、その構造を表示してファイルを操作できるようにします。

  1. プロジェクトを開く最も簡単な方法は、現在のディレクトリで Visual Studio Code を再度開くことです。 これを行うには、統合ターミナルから次のコマンドを実行します。

    code -r .
    

    エクスプローラーでディレクトリとファイル ツリーを確認します。

  2. 統合ターミナルをもう一度開きます。 ターミナルでは、ご使用の Web プロジェクトのルートに表示されます。

  3. 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 サービスに適切なアクセス許可を付与する必要があります。

  1. Azure DevOps のプロジェクトに移動します。
  2. 左側のメニューから [成果物 ] を選択します。
  3. 画面の右上にある [設定] アイコンを選択し、[ アクセス許可 ] タブを選択します。
  4. [ ユーザー/グループの追加] ボタンを選択します。
  5. [ ユーザー/グループ ] フィールドに「 Space Game - web - Dependencies Build Service」と入力し、 共同作成者 ロールを選択して 、[保存] を選択します。

Azure Pipelines でパイプラインを作成する

前のモジュールで Azure Pipelines を設定する方法について学習しました。 リフレッシャーが必要な場合は、 Azure Pipelines を使用してビルド パイプラインを作成します。

2 つ目のパイプラインを設定してパッケージをビルドし、そのパッケージを Azure Artifacts にアップロードする方法を次に示します。

  1. Azure DevOps から、 Space Game - Web - Dependencies プロジェクトに移動します。

  2. 左側のメニューから[パイプライン]を選択 します

  3. [新しいパイプライン] を選択します。

  4. [ 接続 ] タブで、 GitHub を選択します。

  5. [選択] タブで、mslearn-tailspin-spacegame-web-models を選択します。

    メッセージが表示されたら、GitHub の資格情報を入力します。 表示されたページから一番下までスクロールし、[ 承認してインストール] を選択します。

  6. [ 校閲 ] タブには、新しいパイプラインの azure-pipelines.yml ファイルが表示されます。

  7. [ 実行] を選択します。

  8. パイプラインの実行を監視します。

  9. [成果物] タブ 移動します。

  10. 上部のドロップダウンから Tailspin.SpaceGame.Web.Models を選択します。

    ドロップダウンからのパッケージの場所を示すスクリーンショット。

    結果のパッケージ Tailspin.SpaceGame.Web.Models が Azure Artifacts に表示されます。

    Azure Artifacts のパッケージのスクリーンショット。パッケージのバージョン 1.0 が示されています。

  11. パッケージを選択して詳細ページに移動します。 次に、後でアクセスできる場所にバージョン番号をコピーします。

    パッケージの詳細を示す Azure Artifacts のスクリーンショット。強調表示されているのは、パッケージのバージョン番号です。

    次のユニットでは、このバージョン番号を使用します。