Open ahsonkhan opened 1 month ago
In practice there are a couple of "core" packages (core, identity) and the tests we want to run are with vcpkg released GA versions and what's in source. This would be 4N complexity (excluding packages like those in storage that depend on storage-common).
If using the 4N approach, this could take the form of jobs which build a sample project with core and identity from current state of the repo and from vcpkg.
Spoke with @weshaggard. We agree that this pattern follows our min/max testing approach.
This can be accomplished by setting environment variables in the matrix. Either create a few (up to 4) new matrix entries or set these on existing matrix entries.
Probably something like:
CORE_VERSION | IDENTITY_VERSION |
---|---|
source | source |
vcpkg | vcpkg |
source | vcpkg |
vcpkg | source |
You'd probably want safe defaults for these variables so that a customer install scenario does the right thing.
The real test will be if this build catches the behavior that raised this issue initially.
The problem:
An example of the problem we experienced:
We made changes to azure-core and used it in upstream packages (including eventhubs as an example). Our daily CI and vcpkg package testing, based on main, all pass. When we went to ship a GA of azure-core (and only azure-core, since we didn't intend to ship some of the upstream packages like eventhubs, keyvault, etc.), the existing published package in the vcpkg GA registry failed to build, blocking the release of core. Note, the individual changes were all reasonable, so the onus is on systems in place to detect what could break, to help the team as the last line of defense.
To fix this, we had to patch azure-core-cpp and all upstream packages that depended on it which we didn't intend to ship in that release cycle (when we discovered the issue, on release day). The problem is less so that we hit this issue (which can happen again and easily fixed, whenever changes are made to core that upstream packages depend on), but rather, when we hit it in the release cycle:
Where we are today:
Where we'd like to be:
P.S. This issue is related to the beta registry package testing, but different since it focuses on testing and shipping of individual packages as GA to the main vcpkg registry (and not about mixing packages of different dev stages).
cc @RickWinter, @ronniegeraghty, @danieljurek