Skip to content

Azure DevOpsでパイプライン作成時に「'xamarinandroid'テンプレートが見つかりません」エラーの解決方法

Azure DevOpsでパイプラインを作成しようとした際に、「No template with an identifier of 'xamarinandroid' could be found」というエラーが発生する問題について解説します。

問題の概要

このエラーは、Azure DevOpsのUI上のバグによって引き起こされます。Xamarinとは全く関係ないリポジトリでも発生し、パイプライン作成の設定ステップで以下の状況が発生します:

  • テンプレート選択画面が表示されない
  • 自動検出された「xamarinandroid」テンプレートが存在しないためエラーとなる
  • パイプライン作成プロセスを完了できない

WARNING

この問題はMicrosoft側のUIバグによるもので、2025年2月頃から報告されています。根本的な修正が行われるまでの暫定対応が必要です。

解決方法

以下に、この問題を回避するための複数の方法を紹介します。

方法1: クラシックエディターを使用する

Azure DevOpsのクラシックパイプラインエディターを使用すると、このエラーを回避できます。

  1. Azure DevOpsプロジェクトにアクセス
  2. 「パイプライン」 → 「パイプラインの作成」を選択
  3. 「クラシックエディターを使用する」をクリック
  4. 通常通りパイプライン設定を進める

クラシックエディターを使用するオプション

方法2: 既存のazure-pipelines.ymlファイルを用意する

リポジトリのルートに有効なazure-pipelines.ymlファイルを事前に配置しておくことで、UIが正常に動作します。

yaml
# azure-pipelines.ymlの最小例
trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: echo "Hello, World!"
  displayName: 'Run a one-line script'
bash
# リポジトリにYAMLファイルを追加してコミット
git add azure-pipelines.yml
git commit -m "Add pipeline configuration"
git push

方法3: Azure CLIを使用する

Azure DevOps CLI拡張機能を使用してコマンドラインからパイプラインを作成します。

bash
# Azure CLIのインストールと設定
az extension add --name azure-devops
az devops login

# パイプラインの作成
az pipelines create --name 'NewBuild' \
                   --description 'PipelineForYourProject' \
                   --repository SampleRepoName \
                   --branch main \
                   --repository-type tfsgit

方法4: REST APIを使用する

プログラム的にパイプラインを作成する方法です。以下の手順で実行できます。

ステップ1: 個人用アクセストークンの作成

  1. Azure DevOpsで「ユーザー設定」→「個人用アクセストークン」を開く
  2. 新しいトークンを作成し、適切な権限を付与する
  3. 生成されたトークンを安全な場所に保存する

ステップ2: リポジトリ情報の取得

パイプライン作成に必要な情報を取得します:

  • 組織名とプロジェクト名
  • リポジトリID(プロジェクト設定→リポジトリ→該当リポジトリのURLに含まれるGUID)

ステップ3: APIリクエストの実行

以下はcURLを使用した例です:

bash
# 環境変数の設定
export ORGANIZATION="your-organization"
export PROJECT="your-project"
export TOKEN="your-access-token"

# APIリクエストの実行
curl -X POST "https://dev.azure.com/$ORGANIZATION/$PROJECT/_apis/pipelines?api-version=7.1" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "folder": null,
    "name": "pipeline-name",
    "configuration": {
      "type": "yaml",
      "path": "azure-pipelines.yml",
      "repository": {
        "id": "your-repository-id",
        "name": "your-repo-name",
        "type": "azureReposGit"
      }
    }
  }'

ステップ4: VS CodeのREST Client拡張機能を使用する場合

.httpファイルを作成してリクエストを実行することもできます:

http
@token=your-actual-personal-access-token
@organization=your-organization
@project=your-project
@repositoryName=your-repository-name
@repositoryId=the-id-of-the-repository

### Create Pipeline
POST https://dev.azure.com/{{organization}}/{{project}}/_apis/pipelines/?api-version=7.1
content-type: application/json
Authorization: Bearer {{token}}

{
    "folder": null,
    "name": "pipeline-name",
    "configuration": {
      "type": "yaml",
      "path": "azure-pipelines.yml",
      "repository": {
        "id": "{{repositoryId}}",
        "name": "{{repositoryName}}",
        "type": "azureReposGit"
      }
    }
}

一時的なワークアラウンド

場合によっては以下の一時的な対策も有効です:

  1. ソリューションファイルの一時削除: .slnファイルを一時的に削除してパイプライン作成後、元に戻す
  2. 他のリポジトリからYAMLファイル借用: 既存のazure-pipelines.ymlを一時的に借用する

TIP

これらのワークアラウンドは一時的なもので、Microsoftによる根本的な修正が行われ次第、標準的な方法に戻すことをお勧めします。

まとめ

「xamarinandroidテンプレートが見つかりません」エラーはAzure DevOpsのUIバグによるもので、以下のいずれかの方法で回避できます:

  1. クラシックエディターの使用
  2. 事前にYAMLファイルを準備する
  3. Azure CLIを利用する
  4. REST APIを使用する

どの方法を選択するかは、ご利用の環境や好みに応じて決定してください。Microsoftによる公式の修正が行われるまでは、これらの回避策をご利用ください。