Skip to content

Conversation

@rilnicki
Copy link
Contributor

@rilnicki rilnicki commented Feb 7, 2026

IoT Edge 1.5.35 only updates container images. The daemon components (aziot-edged and iotedge) remain at version 1.5.21 per upstream product-versions.json and release notes.

https://github.com/Azure/azure-iotedge/blob/1.5.35/product-versions.json

"components": [
  {
    "name": "aziot-edge",
    "version": "1.5.21"
  },
  {
    "name": "aziot-identity-service",
    "version": "1.5.6"
  },
  {
    "name": "azureiotedge-agent",
    "type": "dockerImage",
    "branch": "main",
    "repo": "Azure/iotedge",
    "version": "1.5.35"
  },
  {
    "name": "azureiotedge-hub",
    "branch": "main",
    "repo": "Azure/iotedge",
    "type": "dockerImage",
    "version": "1.5.35"
  },
  {
    "name": "azureiotedge-simulated-temperature-sensor",
    "branch": "main",
    "repo": "Azure/iotedge",
    "type": "dockerImage",
    "version": "1.5.35"
  },
  {
    "name": "azureiotedge-diagnostics",
    "branch": "main",
    "repo": "Azure/iotedge",
    "type": "dockerImage",
    "version": "1.5.21"
  }
]

The 1.5.35 daemon recipes cause runtime failures due to attempts to pull non-existent images such as: mcr.microsoft.com/azureiotedge-diagnostics:1.5.35

× configuration has correct URIs for daemon mgmt endpoint - Error
     Unable to find image 'mcr.microsoft.com/azureiotedge-diagnostics:1.5.35' locally
     docker: Error response from daemon: manifest for mcr.microsoft.com/azureiotedge-diagnostics:1.5.35 not found: manifest unknown: manifest tagged by "1.5.35" is not found.

This change reverts the daemon recipe versions back to 1.5.21 and aligns meta-iotedge with the official Azure IoT Edge 1.5.35 version matrix.

IoT Edge 1.5.35 only updates container images. The daemon components
(aziot-edged and iotedge) remain at version 1.5.21 per upstream
product-versions.json and release notes.

The 1.5.35 daemon recipes cause runtime failures due to attempts to pull
non-existent images such as:
  mcr.microsoft.com/azureiotedge-diagnostics:1.5.35

This change reverts the daemon recipe versions back to 1.5.21 and aligns
meta-iotedge with the official Azure IoT Edge 1.5.35 version matrix.

Signed-off-by: Rafał Ilnicki <r.ilnicki@welotec.com>
@rilnicki
Copy link
Contributor Author

rilnicki commented Feb 7, 2026

@microsoft-github-policy-service agree company="Welotec"

@jlian
Copy link
Member

jlian commented Feb 9, 2026

Thanks for catching this! We will also need to update our automation accordingly. Looks like a small change. Have you tested this recipe on your side as well?

@rilnicki
Copy link
Contributor Author

rilnicki commented Feb 9, 2026

Yes, I build an image with these changes and connected to IoT Hub using a primary connection string.

jlian added a commit that referenced this pull request Feb 9, 2026
The release tag (e.g. 1.5.35) may only update Docker images while the
daemon binaries (aziot-edged, iotedge) stay at an earlier version
(e.g. 1.5.21 per product-versions.json). Using the release tag as the
recipe version caused runtime failures:

  Unable to find image 'mcr.microsoft.com/azureiotedge-diagnostics:1.5.35'

Changes:

update-recipes.sh:
  - Extracts 'aziot-edge' component version (daemon version) from
    product-versions.json and uses it for recipe filenames, VERSION
    export, and SRCREV resolution
  - Stores the release tag as IOTEDGE_RELEASE in the version .inc
    file for traceability

check-upstream.sh:
  - Reads IOTEDGE_RELEASE from the .inc file to determine if the
    current release is already tracked, preventing false 'docker-only'
    notifications when the release is already handled
  - Outputs current_release and update_type for workflow use

ci-build.yml:
  - check-recipes job reads IOTEDGE_RELEASE from .inc to determine
    which release tag to pass to update-recipes.sh for idempotency

watch-upstream.yml:
  - notify-docker-only condition uses update_type instead of comparing
    recipe filename version against release version
  - Adds current_release and update_type outputs

Fixes #197
@jlian
Copy link
Member

jlian commented Feb 9, 2026

Thanks for catching this @rilnicki. The root cause is that update-recipes.sh was using the release tag (1.5.35) for recipe versioning instead of the daemon binary version (1.5.21) from product-versions.json. Release 1.5.35 only updates Docker images while the daemon stays at 1.5.21, so the built binaries end up referencing container image tags that do not exist.

This manual fix is correct and unblocks the release. I have also added the automation fix to #196 so that update-recipes.sh and the watch/CI workflows handle this correctly going forward.

Approving -- let us merge this to unblock the release and land the automation fix via #196 separately.

Copy link
Member

@jlian jlian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Correct fix for the daemon version mismatch.

@jlian jlian enabled auto-merge (squash) February 9, 2026 17:52
@jlian jlian merged commit bda64bb into Azure:main Feb 9, 2026
8 of 13 checks passed
jlian added a commit that referenced this pull request Feb 9, 2026
The release tag (e.g. 1.5.35) may only update Docker images while the
daemon binaries (aziot-edged, iotedge) stay at an earlier version
(e.g. 1.5.21 per product-versions.json). Using the release tag as the
recipe version caused runtime failures:

  Unable to find image 'mcr.microsoft.com/azureiotedge-diagnostics:1.5.35'

Changes:

update-recipes.sh:
  - Extracts 'aziot-edge' component version (daemon version) from
    product-versions.json and uses it for recipe filenames, VERSION
    export, and SRCREV resolution
  - Stores the release tag as IOTEDGE_RELEASE in the version .inc
    file for traceability

check-upstream.sh:
  - Reads IOTEDGE_RELEASE from the .inc file to determine if the
    current release is already tracked, preventing false 'docker-only'
    notifications when the release is already handled
  - Outputs current_release and update_type for workflow use

ci-build.yml:
  - check-recipes job reads IOTEDGE_RELEASE from .inc to determine
    which release tag to pass to update-recipes.sh for idempotency

watch-upstream.yml:
  - notify-docker-only condition uses update_type instead of comparing
    recipe filename version against release version
  - Adds current_release and update_type outputs

Fixes #197
@jlian
Copy link
Member

jlian commented Feb 9, 2026

Re-tagged and re-released 1.5.35 at the new main HEAD (with this fix included). The old tag pointed to recipes with VERSION = "1.5.35" which caused the diagnostics image pull failure.

The tag stays 1.5.35 (not 1.5.21) because it matches the upstream Azure IoT Edge release version. The recipe filenames and VERSION correctly use 1.5.21 (the daemon binary version), while the tag represents which upstream release these recipes correspond to. Updated the release notes with a version table and a note about the retag.

@rilnicki rilnicki deleted the revert-aziot-edged-and-iotedge-to-1.5.21 branch February 10, 2026 00:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants