ARTIFACTORY: Fixing "Failed to collect build-info. No layer(s) was found for image" Warning

Products
Frog_Artifactory
Content Type
Use_Case
AuthorFullName__c
Harish Gowda
articleNumber
000007085
FirstPublishedDate
2026-07-23T13:05:35Z
lastModifiedDate
2026-07-23

ARTIFACTORY: Fixing "Failed to collect build-info. No layer(s) was found for image" Warning

Summary
When pushing a Docker image to JFrog Artifactory using the JFrog CLI (jf docker push) with build-info collection enabled, the command fails to collect metadata and outputs the following warning:
[Warn] Failed to collect build-info. No layer(s) was found for image:'<registry>/<repository>/<image>:<tag>'.
Hint, try to delete the image from the local cache and rerun the command
Enabling debug logging (JFROG_CLI_LOG_LEVEL=DEBUG) reveals the underlying lookup failure:
[Debug] Could not find docker image in Artifactory, expecting image tag:
<registry>/<repository>/<image>:<tag>


Environment & Affected Versions
  • Docker Engine: 23.0+ / Docker Desktop 4.x+ (With BuildKit enabled by default)
  • JFrog CLI: 2.x
  • JFrog Artifactory: All supported versions


Root Cause
Modern versions of Docker enable BuildKit as the default build engine. By default, BuildKit automatically generates provenance attestations and Software Bill of Materials (SBOM) metadata during the build process.
Instead of outputting a simple single-image manifest, BuildKit generates an OCI Manifest List (index) containing both the image layers and the attestation manifest envelopes. When jf docker push executes, the CLI attempts to parse and correlate local image layers against the pushed artifacts in Artifactory. The presence of these attestation manifest lists creates a structural mismatch, preventing JFrog CLI from properly mapping the image layers to the build-info context.


Resolution Steps
To resolve this issue, clear the local/remote caches and rebuild the image with BuildKit attestations explicitly disabled.
  1. Remove the existing image from local cache and also from Artifactory
    docker rmi myregistry.jfrog.io/docker-local/test-image:v1.0
  2. Clear dangling images and build cache:
    docker image prune -f
    docker builder prune -f
  3. Rebuild the image with attestations disabled:
    docker build --provenance=false --sbom=false -t
    myregistry.jfrog.io/docker-local/test-image:v1.0
    When setting --provenance=false and --sbom=false, the exporting attestation manifest and the exporting manifest list are no longer created.
  4. Push the image using JFrog CLI:
    jf docker push myregistry.jfrog.io/docker-local/test-image:v1.0
    --build-name=test-build --build-number=1
  5. Verify successful build-info collection:
    The push should now complete without warnings and display the uploaded artifacts:
    [:large_blue_circle:Info] Setting properties...
    [:large_blue_circle:Info] [Thread 0] Setting properties on:
    docker-local/test-image/v1.0/manifest.json
    [:large_blue_circle:Info] [Thread 1] Setting properties on:
    docker-local/test-image/v1.0/sha256__...
    [:large_blue_circle:Info] Done setting properties.
    These files were uploaded:
    :package: docker-local
    └── :file_folder: test-image
        └── :file_folder: v1.0
            ├── :page_facing_up: manifest.json
            ├── :page_facing_up: sha256__<layer1>
            ├── :page_facing_up: sha256__<layer2>
            └── :page_facing_up: sha256__<config>
    {
      "status": "success",
      "totals": {
        "success": 4,
        "failure": 0
      }
    }
  6. Publish build info:
    jf rt bp test-build 1
    Expected Output:
    [:large_blue_circle:Info] Publishing build info for <test-build>/<1>...
    [:large_blue_circle:Info] Build info successfully deployed.
    {
      "buildInfoUiUrl":
    "https://myregistry.jfrog.io/ui/builds/test-build/1/.../published?buildRepo=artifactory-build-info"
    }
Conclusion
The "Failed to collect build-info. No layer(s) was found for image" warning occurs due to Docker BuildKit's default behavior of generating provenance attestations and SBOM metadata. These additional manifest layers interfere with JFrog CLI's ability to correlate local image layers with artifacts in Artifactory.
The recommended solution is to build Docker images with attestations disabled:
docker build -e -t <image-tag> .
This ensures compatibility between modern Docker versions and JFrog CLI's build-info collection mechanism. For CI/CD pipelines, consider adding these flags to your build scripts or configuring BuildKit defaults in your Docker daemon configuration.


Related Documentation:
Docker BuildKit Attestations
Docker Provenance Attestations