This change updates the iotedge CLI and the packages release pipeline to query/update product-versions.json instead of latest-aziot-edge.json and latest-aziot-identity-service.json. The previous json files were specific to a particular release channel + version (1.4 LTS), whereas product-versions.json represents the current state of supported products and components across all stable and LTS releases. This is allow the CLI and our releases to operate smoothly during the coming phase where both 1.5 LTS and 1.6 LTS are supported side by side.
CLI details:
Added a dependency on the semver crate to the iotedge CLI
Updated the iotedge CLI to parse product-versions.json and extract the latest version of aziot-edge and aziot-identity-service. It uses the MAJOR.MINOR version of the currently installed CLI to determine which product versions (e.g., 1.4.x vs. 1.5.x) to get.
Tested the CLI manually with/without the --expected-aziot-edged-version option against various versions of product-versions.json
Release pipeline details:
Renamed update_latest_version_json() function in udpateLatestVersion.sh to update_product_versions_json()
Added product-versions.jq alongside updateLatestVersion.sh to hold all the custom filters we use to query and update versions in the package release pipeline
Currently, updateLatestVersion.sh determines the new product version by (1) grabbing the MAJOR.MINOR product version from the branch name, and (2) querying GitHub for the latest matching version. Since 1.5 will be serviced out of the main branch, I changed the logic to get the new product version from the release tag in the Azure/iotedge repo, and the current product version from the release tag in Azure/azure-iotedge.
Removed some functions in updateLatestVersion.sh that were no longer needed since we don't query GitHub for release versions
Added logic in updateLatestVersion.sh to use the filters in product-versions.jq to get and update information in product-versions.json. This logic also supports creating a new product in product-versions.json, which will allow for releasing 1.5 LTS side-by-side with 1.4 LTS.
Tested product-versions.jq directly and via updateLatestVersion.sh, all from my desktop. *.jq files support some sort of unit testing, which I'd like to look into at a future date.
Azure IoT Edge PR checklist:
This checklist is used to make sure that common guidelines for a pull request are followed.
This change updates the iotedge CLI and the packages release pipeline to query/update product-versions.json instead of latest-aziot-edge.json and latest-aziot-identity-service.json. The previous json files were specific to a particular release channel + version (1.4 LTS), whereas product-versions.json represents the current state of supported products and components across all stable and LTS releases. This is allow the CLI and our releases to operate smoothly during the coming phase where both 1.5 LTS and 1.6 LTS are supported side by side.
CLI details:
--expected-aziot-edged-version
option against various versions of product-versions.jsonRelease pipeline details:
Azure IoT Edge PR checklist:
This checklist is used to make sure that common guidelines for a pull request are followed.
General Guidelines and Best Practices
Testing Guidelines