Skip to content

Commit ce159c8

Browse files
committed
fix: stop dev workflow after first failed step
1 parent 2f4fabd commit ce159c8

1 file changed

Lines changed: 50 additions & 10 deletions

File tree

tools/dev-cli/endpoints/workflow-command.cs

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,46 +89,64 @@ private async Task RunPrWorkflowAsync()
8989
Terminal.WriteLine("Pipeline: clean -> build -> verify-samples -> test -> check-version");
9090
Terminal.WriteLine("");
9191

92+
Environment.ExitCode = 0;
93+
9294
Terminal.WriteLine("===============================================================================");
9395
Terminal.WriteLine(" Step 1/5: Clean");
9496
Terminal.WriteLine("===============================================================================");
9597
CleanCommand.Handler cleanHandler = new();
9698
await cleanHandler.Handle(new CleanCommand(), CancellationToken.None);
9799

100+
if (StopOnFailure("Clean"))
101+
{
102+
return;
103+
}
104+
98105
Terminal.WriteLine("");
99106
Terminal.WriteLine("===============================================================================");
100107
Terminal.WriteLine(" Step 2/5: Build");
101108
Terminal.WriteLine("===============================================================================");
102109
BuildCommand.Handler buildHandler = new();
103110
await buildHandler.Handle(new BuildCommand(), CancellationToken.None);
104111

112+
if (StopOnFailure("Build"))
113+
{
114+
return;
115+
}
116+
105117
Terminal.WriteLine("");
106118
Terminal.WriteLine("===============================================================================");
107119
Terminal.WriteLine(" Step 3/5: Verify Samples");
108120
Terminal.WriteLine("===============================================================================");
109121
VerifySamplesCommand.Handler verifySamplesHandler = new(Terminal);
110122
await verifySamplesHandler.Handle(new VerifySamplesCommand(), CancellationToken.None);
111123

124+
if (StopOnFailure("Verify Samples"))
125+
{
126+
return;
127+
}
128+
112129
Terminal.WriteLine("");
113130
Terminal.WriteLine("===============================================================================");
114131
Terminal.WriteLine(" Step 4/5: Test");
115132
Terminal.WriteLine("===============================================================================");
116133
TestCommand.Handler testHandler = new();
117134
await testHandler.Handle(new TestCommand(), CancellationToken.None);
118135

136+
if (StopOnFailure("Test"))
137+
{
138+
return;
139+
}
140+
119141
Terminal.WriteLine("");
120142
Terminal.WriteLine("===============================================================================");
121143
Terminal.WriteLine(" Step 5/5: Check Version");
122144
Terminal.WriteLine("===============================================================================");
123145
CheckVersionCommand.Handler checkVersionHandler = new(Terminal);
124146
await checkVersionHandler.Handle(new CheckVersionCommand(), CancellationToken.None);
125147

126-
if (Environment.ExitCode != 0)
148+
if (StopOnFailure("Check Version"))
127149
{
128-
Terminal.WriteErrorLine("");
129-
Terminal.WriteErrorLine("===============================================================================");
130-
Terminal.WriteErrorLine(" Pipeline FAILED - Version check failed");
131-
Terminal.WriteErrorLine("===============================================================================");
132150
return;
133151
}
134152

@@ -143,6 +161,8 @@ private async Task RunReleaseWorkflowAsync(string? apiKey)
143161
Terminal.WriteLine("Pipeline: clean -> build -> push");
144162
Terminal.WriteLine("");
145163

164+
Environment.ExitCode = 0;
165+
146166
string? repoRoot = Git.FindRoot();
147167
if (repoRoot == null)
148168
{
@@ -157,25 +177,31 @@ private async Task RunReleaseWorkflowAsync(string? apiKey)
157177
CleanCommand.Handler cleanHandler = new();
158178
await cleanHandler.Handle(new CleanCommand(), CancellationToken.None);
159179

180+
if (StopOnFailure("Clean"))
181+
{
182+
return;
183+
}
184+
160185
Terminal.WriteLine("");
161186
Terminal.WriteLine("===============================================================================");
162187
Terminal.WriteLine(" Step 2/3: Build");
163188
Terminal.WriteLine("===============================================================================");
164189
BuildCommand.Handler buildHandler = new();
165190
await buildHandler.Handle(new BuildCommand(), CancellationToken.None);
166191

192+
if (StopOnFailure("Build"))
193+
{
194+
return;
195+
}
196+
167197
Terminal.WriteLine("");
168198
Terminal.WriteLine("===============================================================================");
169199
Terminal.WriteLine(" Step 3/3: Push to NuGet");
170200
Terminal.WriteLine("===============================================================================");
171201
await PushPackageAsync(repoRoot, apiKey);
172202

173-
if (Environment.ExitCode != 0)
203+
if (StopOnFailure("Push to NuGet"))
174204
{
175-
Terminal.WriteErrorLine("");
176-
Terminal.WriteErrorLine("===============================================================================");
177-
Terminal.WriteErrorLine(" Pipeline FAILED - Package push failed");
178-
Terminal.WriteErrorLine("===============================================================================");
179205
return;
180206
}
181207

@@ -229,6 +255,20 @@ private async Task PushPackageAsync(string repoRoot, string? apiKey)
229255

230256
Terminal.WriteLine("\n✅ Package pushed successfully!");
231257
}
258+
259+
private bool StopOnFailure(string stepName)
260+
{
261+
if (Environment.ExitCode == 0)
262+
{
263+
return false;
264+
}
265+
266+
Terminal.WriteErrorLine("");
267+
Terminal.WriteErrorLine("===============================================================================");
268+
Terminal.WriteErrorLine($" Pipeline FAILED - {stepName} failed");
269+
Terminal.WriteErrorLine("===============================================================================");
270+
return true;
271+
}
232272
}
233273
}
234274

0 commit comments

Comments
 (0)