-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JIT rolling build can build and upload non-JIT changes #64392
Comments
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsAs described here: The jitrollingbuild pipeline is set to build every time the JIT changes, and not batch changes:
However, it appears that AzDO doesn't kick off the build immediately; I noticed a delay of about 10 minutes for this particular change. In a few previous cases for JIT changes, there were also delays before the AzDO job kicked off, and in those cases, another change was merged before the kickoff, and AzDO built that change, not the JIT change that kicked off the job. Because of this, when we upload the JIT to Azure Storage, we use a git hash of a non-JIT change, and when superpmi.py looks for a baseline JIT, it doesn't find the hash of the JIT that should have been built. Summary: there is an assumption that the pipeline builds every JIT change at the git hash of the JIT change. That doesn't appear to be the case with AzDO. I'm not sure if there's a config to force that to happen. E.g., what if 2 JIT changes were merged at almost exactly the same time? AzDO should build both of them, but does it? Possibly we could change the jitrollingbuild.py upload script to walk back the
|
When uploading a JIT rolling build, use the git hash of the most recent JIT change, not the git hash that was actually built. This handles the case where a JIT change kicked off an AzDO pipeline, but the pipeline didn't start until after one or more additional changes were merged. The AzDO pipelines appear to fetch with `-depth=20`, which should provide enough history for almost any case. Fixes dotnet#64392
When uploading a JIT rolling build, use the git hash of the most recent JIT change, not the git hash that was actually built. This handles the case where a JIT change kicked off an AzDO pipeline, but the pipeline didn't start until after one or more additional changes were merged. The AzDO pipelines appear to fetch with `-depth=20`, which should provide enough history for almost any case. Fixes #64392
Apologies, I started parsing that sentence and got lost. In most cases though I believe it's just a webhook or equivalent from GH to AzDO, which sometimes can fail to be delivered, get multi-delivered, or be delayed. Can you give examples on the build that got triggered that you're curious about? |
One example was: https://dev.azure.com/dnceng/internal/_build/results?buildId=1577232&view=results The triggering merge was https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/commit/d55a1dfa4e39a26a8ea8d161f733c72805f31f7f at 4:18pm. There was a closely following merge https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/commit/9eb90511ff6d079fa02832936c693d36289fc02b at 4:25pm. The pipeline didn't start running until 4:36pm, and picked up the change at 4:25pm. We had code that depended on the git hash being built by the pipeline being the same as the triggering merge, but this wasn't true. I added some compensating code in #64480 that will look backwards in the git history on the build to find the triggering change (specifically, to find the most recent change to the JIT source directory; this needs to match the YML file "trigger" path to be fully correct). |
This surely does seem like a bug in the way non-batched pipeline triggers are working, so I started an email thread with the pipelines PM and I'll update back here if anything interesting falls out of that conversation. |
As described here:
The jitrollingbuild pipeline is set to build every time the JIT changes, and not batch changes:
However, it appears that AzDO doesn't kick off the build immediately; I noticed a delay of about 10 minutes for this particular change. In a few previous cases for JIT changes, there were also delays before the AzDO job kicked off, and in those cases, another change was merged before the kickoff, and AzDO built that change, not the JIT change that kicked off the job. Because of this, when we upload the JIT to Azure Storage, we use a git hash of a non-JIT change, and when superpmi.py looks for a baseline JIT, it doesn't find the hash of the JIT that should have been built.
Summary: there is an assumption that the pipeline builds every JIT change at the git hash of the JIT change. That doesn't appear to be the case with AzDO. I'm not sure if there's a config to force that to happen. E.g., what if 2 JIT changes were merged at almost exactly the same time? AzDO should build both of them, but does it?
Possibly we could change the jitrollingbuild.py upload script to walk back the
git log
for the built change and use the first hash that actually has JIT changes in it, to work around this problem.The text was updated successfully, but these errors were encountered: