-
Notifications
You must be signed in to change notification settings - Fork 0
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
Fail a run due to step command failure #22
Comments
@samrose yes agreed. Currently, a full run using an FWIW what is possible today is:
ex_integrate/lib/ex_integrate/step_runner.ex Lines 9 to 12 in bb202a0
ex_integrate/lib/ex_integrate/pipeline_runner.ex Lines 63 to 73 in bb202a0
So I believe what is left is the OTP implementation to manage the full run, prevent a failed pipelines's dependent pipelines from running, and log the error or else respond to it at the highest level, e.g. for end user feedback. |
@garrettmichaelgeorge good assessment thank you where you wrote
I recommend we put that last piece only on the back burner, and return to it, because the rest of it is a complete basic system from the OTP step runner perspective I believe |
@samrose yes that makes sense – the end user part probably belongs in the interface. So I guess we have to define the boundary – what, exactly, should ExIntegrate do at the highest level if a run is unsuccessful? I can think of two things: signal, somehow, that the run was unsuccessful, and provide a way to obtain the results of the run, including the full logs of each command output. A hypothetical interface, e.g. As for signaling the completion of the run, I imagine something like throwing a nonzero exit status (communicating outside of the BEAM), or responding with an error tuple (within the BEAM). Or would other applications (e.g. As for sharing the run results, I suppose this connects to our discussion about persistence. I recall we have considered at different times both a graph DB (i.e. rocksdb) that could store the Elixir data structure, as well as object storage for the logs. Would we use both? Or one or the other? How would an interface application access the results? |
Related to #30. |
A feature that we still need to account for is to respond to the stdout, stderr status returned by Rambo, so that if one pipeline depends on another, but the first has failed with status 1, then the run of pipelines should stop
example
Right now in a test ei.json if the 2nd commend is put into the ei.json as a step in a pipeline, and the command fails with status 1, then ex_integrate still proceeds with the rest of the run.
We should just react to all the possible OS or Command errors or feedback from Rambo as one handling (the running of steps) or we could set a different error if ex_integrate errors itself. But any error for the Rambo-originated errors just stops the build.
The text was updated successfully, but these errors were encountered: