Use dotnet fallout instead of ./build.cmd in AppVeyor and Azure Pipelines steps#517
Conversation
AppVeyor and Azure Pipelines generated a `./build.cmd` invocation that only runs on Windows agents — AppVeyor even emitted `- sh: ./build.cmd` (a Unix shell running a .cmd), and Azure's CmdLine@2 ran `./build.cmd` regardless of agent OS. Both break on Ubuntu/macOS agents. Fix them the same way GitHub Actions was fixed (Fallout-build#203/Fallout-build#204): invoke the cross-platform `fallout` local tool via `dotnet tool restore` + `dotnet fallout <targets>`, dropping OS-specific build-script selection. GitHub Actions already uses this shape on the 2026 line, so Fallout-build#516's original GHA repro no longer applies there; this closes the same class of bug in the remaining providers. TeamCity and SpaceAutomation already select `.sh` on non-Windows and are left unchanged. Snapshots regenerated. BuildCmdPath is retained on the config types (public API) but no longer consumed by these two writers. Closes Fallout-build#516 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Ahmm.. The reasons why this should work are:
I think the reason why this doesn't work here: there is no build.cmd file anymore :) Ou.. and: the (script path should be quoted: Edit: I just tested this against a local project of mine (unix/docker executor).. works fine for me... |
typical claude PR description ... the whole point of this PR was to go and unify the build entry to use dotnet. Claude just tripped over it because we got windows AND linux runners at work and it tried to spin up a linux runner but found the windows one hardcoded, hence made the assumption its because of the CMD (which in return triggered me to say "hey holdup, I changed this already, havent I?") So all good, just ignore the blurb at the beginning :-) |
|
Ok... got it :) But this will change the behavior for consumers, right? IMHO we should not change the "build agent agnostic" behavior, because it has a real use-case by installing and setting up all which is needed for the pipeline to run. |
|
hence the draft status. Github already does that, my reasoning here is if GH works that way why have the other platforms work differently? |
Fixes #516 for the providers where the bug still lives on
main.Problem
AppVeyor and Azure Pipelines emit a
./build.cmdinvocation that only runs on Windows agents:- sh: ./build.cmd …— a Unix shell running a.cmd.script: './build.cmd …'inCmdLine@2regardless of agent OS.Both break on Ubuntu/macOS agents. (GitHub Actions — #516's original repro — was already fixed on the 2026 line via
dotnet falloutin #203/#204, so it needs no change here.)Fix
Same shape as the GitHub Actions fix: invoke the cross-platform
falloutlocal tool.dotnet tool restore+dotnet fallout <targets>(emitted under both- cmd:and- sh:so each image runs the matching pair; command is identical).script: 'dotnet tool restore && dotnet fallout <targets>'(&&works in cmd and bash;CmdLine@2uses the agent's default shell).No OS branching, no build-script selection.
Out of scope
.shon non-Windows — not broken, left unchanged.BuildCmdPathstays on the config types (public API) but is no longer consumed by these two writers.Verification
Regenerated Verify snapshots;
ConfigurationGenerationSpecs18/18 green.