Skip to content

[BUG] Publisher v7.0.0 creates APIs from apiInformation.json but does not import specification.yaml — all APIs created with zero operations" #831

@hemantmishra726

Description

@hemantmishra726

Release version

Publisher v7.0.0

Describe the bug

##[error]Unhandled exception. System.Net.Http.HttpRequestException: HTTP request to URI https://management.azure.com/subscriptions/8f1b4de7-0c41-4f8e-b822-72e4f157037c/resourceGroups/AzResourceGpBot/providers/Microsoft.ApiManagement/service/azsiapimnp1cassist/apis/helloworldfromfuncapp/operations/get-httptrigger1/policies/policy?api-version=2024-05-01 failed with status code 400. Content is '{"error":{"code":"ValidationError","message":"Entity with specified identifier not found","details":null}}'.

I am facing this issue, even with the simplest or sample APIs while trying to complete a successful run

Expected behavior

Publisher runs successfully, APIs published along with all operation

Actual behavior

I am able to see APIs being created but no operations added

Reproduction Steps

  • task: PowerShell@2
    displayName: Run publisher for ${{ parameters.ENVIRONMENT}} environment
    inputs:
    targetType: "inline"
    script: |
    Set-StrictMode -Version Latest
    $ErrorActionPreference = "Stop"
    $VerbosePreference = "Continue"
    $InformationPreference = "Continue"

     $artifactRoot = "$(Build.ArtifactStagingDirectory)/apim-artifacts"
     Write-Host "[INFO] Looking for API folders in: $artifactRoot"
     if (-Not (Test-Path $artifactRoot)) {
       Write-Host "[ERROR] Artifact root path does not exist: $artifactRoot"
       exit 1
     }
     $foldersToDeploy = Get-ChildItem -Path $artifactRoot -Directory | Where-Object { $_.Name -ne 'Tools' }
     if ($foldersToDeploy.Count -eq 0) {
       Write-Host "[WARNING] No API folders found to deploy in $artifactRoot."
     } else {
       Write-Host "[INFO] API folders to deploy:"
       foreach ($folder in $foldersToDeploy) {
         Write-Host "  - $($folder.FullName)"
         # Log contents inside each main folder (one level deep)
         $subItems = Get-ChildItem -Path $folder.FullName
         if ($subItems) {
           Write-Host "    Contents of $($folder.Name):"
           foreach ($item in $subItems) {
             Write-Host "      - $($item.Name)"
           }
         } else {
           Write-Host "    (Empty)"
         }
       }
     }
     $deployedCount = 0
     foreach ($folder in $foldersToDeploy) {
       Write-Host "[INFO] Deploying folder: $($folder.FullName)"
       # Call publisher or deployment logic here, e.g.:
       # & "$(PUBLISHER_FILE_PATH)" -InputPath $folder.FullName
       # Simulate deployment for logging:
       Write-Host "[SUCCESS] Deployed: $($folder.FullName)"
       $deployedCount++
     }
     Write-Host "[INFO] Total folders deployed: $deployedCount"
     # Print publisher binary path and version/help
     Write-Host "[DEBUG] Publisher binary path: $(PUBLISHER_FILE_PATH)"
     try {
       & "$(PUBLISHER_FILE_PATH)" --version
     } catch {
       Write-Host "[DEBUG] Could not get publisher version with --version, trying --help."
       try {
         & "$(PUBLISHER_FILE_PATH)" --help
       } catch {
         Write-Host "[WARNING] Could not get publisher version or help output."
       }
     }
     Write-Host "[DEBUG] Environment variables:"
     Write-Host "  AZURE_RESOURCE_GROUP_NAME=$env:AZURE_RESOURCE_GROUP_NAME"
     Write-Host "  API_MANAGEMENT_SERVICE_NAME=$env:API_MANAGEMENT_SERVICE_NAME"
     Write-Host "  AZURE_SUBSCRIPTION_ID=$env:AZURE_SUBSCRIPTION_ID"
     Write-Host "  AZURE_TENANT_ID=$env:AZURE_TENANT_ID"
     Write-Host "  AZURE_CLIENT_ID=$env:AZURE_CLIENT_ID"
     Write-Host "  AZURE_CLIENT_SECRET=***"
     Write-Host "  ARTIFACT_ROOT=$artifactRoot"
     
     $publisherOutput = $null
     $publisherError = $null
     Write-Host "Running publisher with: $(PUBLISHER_FILE_PATH) -InputPath $artifactRoot -ResourceGroup $env:AZURE_RESOURCE_GROUP_NAME -ServiceName $env:API_MANAGEMENT_SERVICE_NAME -SubscriptionId $env:AZURE_SUBSCRIPTION_ID -TenantId $env:AZURE_TENANT_ID -ClientId $env:AZURE_CLIENT_ID -ClientSecret ***"
     try {
       $publisherOutput = & "$(PUBLISHER_FILE_PATH)" `
         -InputPath $artifactRoot `
         -ResourceGroup $env:AZURE_RESOURCE_GROUP_NAME `
         -ServiceName $env:API_MANAGEMENT_SERVICE_NAME `
         -SubscriptionId $env:AZURE_SUBSCRIPTION_ID `
         -TenantId $env:AZURE_TENANT_ID `
         -ClientId $env:AZURE_CLIENT_ID `
         -ClientSecret $env:AZURE_CLIENT_SECRET `
         --debug 2>&1
     } catch {
       $publisherError = $_
     }
     Write-Host "[DEBUG] Publisher output:"
     Write-Host $publisherOutput
     if ($publisherError) {
       Write-Host "[ERROR] Publisher error: $publisherError"
     }
     if ($LASTEXITCODE -ne 0) { throw "Running publisher failed with exit code $LASTEXITCODE."}
     Write-Information "Execution complete."
    

    failOnStderr: true
    pwsh: true
    env:
    AZURE_BEARER_TOKEN: $(AZURE_BEARER_TOKEN)
    AZURE_CLIENT_ID: $(AZURE_CLIENT_ID)
    AZURE_CLIENT_SECRET: $(AZURE_CLIENT_SECRET)
    AZURE_TENANT_ID: $(AZURE_TENANT_ID)
    AZURE_SUBSCRIPTION_ID: $(AZURE_SUBSCRIPTION_ID)
    AZURE_RESOURCE_GROUP_NAME: ${{ parameters.RESOURCE_GROUP_NAME }}
    API_MANAGEMENT_SERVICE_OUTPUT_FOLDER_PATH: $(Build.ArtifactStagingDirectory)/apim-artifacts
    ${{ if ne( parameters['API_MANAGEMENT_SERVICE_NAME'], '' ) }}:
    API_MANAGEMENT_SERVICE_NAME: ${{ parameters.API_MANAGEMENT_SERVICE_NAME }}
    ${{ if eq( parameters['COMMIT_ID'], 'publish-artifacts-in-last-commit' ) }}:
    COMMIT_ID: $(Build.SourceVersion)
    ${{ if ne( parameters['CONFIGURATION_YAML_PATH'], '' ) }}:
    CONFIGURATION_YAML_PATH: ${{ parameters.CONFIGURATION_YAML_PATH }}

  • script: |
    echo "APIM_NAME: $APIM_NAME"
    echo "AZURE_SUBSCRIPTION_ID: $AZURE_SUBSCRIPTION_ID"
    echo "RESOURCE_GROUP_NAME: $RESOURCE_GROUP_NAME"
    echo "SERVICE_CONNECTION_NAME: $SERVICE_CONNECTION_NAME"
    displayName: 'Print key variable values (publisher-with-env)'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions