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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions