変数とパラメーターを安全に使用するようにパイプラインを構成する
このラボでは、変数とパラメーターを安全に使用するようにパイプラインを構成する方法について学習します。
これらの演習の所要時間は約 20 分です。
開始する前に
ラボの演習を行うには、Azure サブスクリプション、Azure DevOps 組織、eShopOnWeb アプリケーションが必要です。
- 手順に従ってラボ環境を検証します。
手順
演習 1:パラメーターと変数の型を確認する
タスク 1: CI パイプラインをインポートして実行する
まず、eshoponweb-ci.yml という CI パイプラインをインポートします。
-
Azure DevOps ポータル (
https://dev.azure.com
) に移動し、自分の組織を開きます。 -
eShopOnWeb プロジェクトを開きます。
-
[パイプライン] > [パイプライン] に移動します。
-
[Create Pipeline] を選択します。
-
[Azure Repos Git (Yaml)] を選びます。
-
eShopOnWeb リポジトリを選びます。
-
[既存の Azure Pipelines YAML ファイル] を選びます。
-
/.ado/eshoponweb-ci.yml ファイルを選び、[続行] を選びます。
-
[実行] ボタンを選んでパイプラインを実行します。
[!NOTE] パイプラインには、プロジェクト名に基づく名前が付けられます。 名前を変更してパイプラインを識別しやすくします。
-
[パイプライン] > [パイプライン] に移動し、先ほど作成したパイプラインを選択します。 省略記号と [名前の変更または移動] オプションを選択します。
-
eshoponweb-ci-parameters という 名前を付け、[保存] を選択します。
タスク 2:YAML パイプラインのパラメーターの型を確認する
このタスクでは、パイプラインのパラメーターとパラメーターの型を設定します。
-
[パイプライン] > [パイプライン] に移動し、eshoponweb-ci-parameters パイプラインを選択します。
-
編集を選択します。
-
YAML ファイルの先頭に以下のパラメーターとリソースのセクションを追加します。
parameters: - name: dotNetProjects type: string default: '**/*.sln' - name: testProjects type: string default: 'tests/UnitTests/*.csproj' resources: repositories: - repository: self trigger: none
-
Restore
、Build
、Test
タスクのハードコーディングされたパスを、先ほど作成したパラメーターに置き換えます。- プロジェクトの置き換え:
**/*.sln
プロジェクト:Restore
およびBuild
タスク内の$
。 - プロジェクトの置き換え:
tests/UnitTests/*.csproj
プロジェクト:Test
タスク内の$
YAML ファイルの steps セクションの
Restore
、Build
、Test
タスクは次のようになります。steps: - task: DotNetCoreCLI@2 displayName: Restore inputs: command: 'restore' projects: ${{ parameters.dotNetProjects }} feedsToUse: 'select' - task: DotNetCoreCLI@2 displayName: Build inputs: command: 'build' projects: ${{ parameters.dotNetProjects }} - task: DotNetCoreCLI@2 displayName: Test inputs: command: 'test' projects: ${{ parameters.testProjects }}
- プロジェクトの置き換え:
-
パイプラインを保存して実行します。 パイプラインの実行が正常に完了することを確認します。
タスク 3:変数とパラメーターを保護する
このタスクでは、パイプラインから変数グループを使用して、変数とパラメーターを保護します。
-
[パイプライン] > [ライブラリ] に移動します。
-
[+ 変数グループ] ボタンを選択して、BuildConfigurations という名前の新しい変数グループを作成します。
-
buildConfiguration という名前の変数を追加し、その値を
Release
に設定します。 -
変数グループを保存します。
-
[パイプラインのアクセス許可] ボタンを選択し、新しいパイプラインを追加する [+] ボタンを選択します。
-
eshoponweb-ci-parameters パイプラインを選択して、パイプラインで変数グループを使用できるようにします。
[!NOTE] [セキュリティ] ボタンをクリックして、特定のユーザーまたはグループが変数グループを編集できるように設定することもできます。
-
[パイプライン] > [パイプライン] に移動します。
-
eshoponweb-ci-parameters パイプラインを開き、[編集] を選択します。
-
yml ファイルの先頭にあるパラメーターのすぐ下で、以下を追加して変数グループを参照します。
variables: - group: BuildConfigurations
-
‘Build’ タスクで、command: ‘build’ を以下の行に置き換えて、変数グループからビルド構成を利用します。
command: 'build' projects: ${{ parameters.dotNetProjects }} configuration: $(buildConfiguration)
-
パイプラインを保存して実行します。 ビルド構成が
Release
に設定された状態で、正常に実行されます。 これを確認するには、’Build’ タスクのログを確認します。
[!NOTE] この方法に従うと、変数グループを使用して変数とパラメーターを保護することができ、YAML ファイルにハードコーディングする必要はありません。
タスク 4:必須の変数とパラメーターを検証する
このタスクでは、パイプラインを実行する前に必須の変数を検証します。
-
[パイプライン] > [パイプライン] に移動します。
-
eshoponweb-ci-parameters パイプラインを開き、[編集] を選択します。
-
stages セクションの先頭 (
stage:
行の後) に、パイプラインの実行前に必須の変数を検証する Validate という名前の新しいステージを追加します。- stage: Validate displayName: Validate mandatory variables jobs: - job: ValidateVariables pool: vmImage: ubuntu-latest steps: - script: | if [ -z "$(buildConfiguration)" ]; then echo "Error: buildConfiguration variable is not set" exit 1 fi displayName: 'Validate Variables'
[!NOTE] このステージでは、buildConfiguration 変数を検証するスクリプトを実行します。 変数が設定されていない場合、スクリプトは失敗し、パイプラインは停止します。
-
Build ステージの先頭に
dependsOn: Validate
を追加して、Build ステージを Validate ステージに依存させます。- stage: Build displayName: Build .Net Core Solution dependsOn: Validate
-
パイプラインを保存して実行します。 buildConfiguration 変数が変数グループに設定されているため、正常に実行されます。
-
検証をテストするには、変数グループから buildConfiguration 変数を削除するか、変数グループを削除して、パイプラインをもう一度実行します。 次のエラーにより失敗します。
Error: buildConfiguration variable is not set
-
変数グループを追加し、buildConfiguration 変数を変数グループに追加し直し、パイプラインをもう一度実行します。 これは正常に実行される必要があります。
確認
このラボでは、変数とパラメーターを安全に使用するようにパイプラインを構成する方法と、必須の変数とパラメーターを検証する方法について学習しました。