Question about the purpose of --waitfordeployment for octo.exe


So we have a bunch of automation around build and deploy and we use Octo.exe for a bunch of this automation because of its ease of use. We sometimes like to wait on the deployment to complete but we run this in jenkins and don’t really care about the output of the logs because it’s really just extra work / space for no real reason. We were using the --progress switch because we wanted this to run synchronously and block. I noticed however that you now have the --waitfordeployment switch which I assumed did the same thing as --progress just without showing any logs. I was wrong with this assumption because it seems that --progress and --waitfordeployment do the exact same thing. Is this meant to be this way because it seems the --waitfordeployment would be better suited to just show no output in this situation.

Documentation for this is listed Here

Thank you

Hi Brent,
I understand its a little bit confusing. Its functionality has grown as users demanded different functionality and to avoid breaking changes we have kept previous arguments named and behaviourally unchanged.
--progress internally sets progress=true, waitForDeployment=true and noRawLogs=true,
--waitForDeployment just sets waitForDeployment=true
--noRawLogs just sets noRawLogs=true

So waitForDeployment is required to become a blocking call (hence required when the progress argument is used).
if you want to waitForDeployment but also don’t need any logs then I would advise also setting the --noRawLogs argument.

We have release much of our code as open source on GitHub so feel free to take a look at the deployment command to see exactly how these arguments are getting used.
As always we are more than happy to take suggestions or pull requests on these projects.

I hope that clears things up a little, and Ill be sure to update our documentation to make this a little clearer for others.


Thanks for the information it seems that the --noRawLogs is misleading from the actual option and its use. It only stops displaying errors but not the actual logs. I ran this with the noRawLogs and it does not work in the way you described, and the documentation says its suppose to be only for errors which is not really in our use case. I have thus just hid the output by directing it at /dev/null.


Looking through the code it --noRawLogs does appear to prevent displaying of the raw logs only.
see from line #214

                        if (!noRawLog)
                                var raw = Repository.Tasks.GetRawOutputLog(updated);
                                if (!string.IsNullOrEmpty(rawLogFile))
                                    File.WriteAllText(rawLogFile, raw);
                            catch (Exception ex)
                                Log.Error("Could not retrieve the raw task log for the failed task.", ex);

It will indeed still show some output information but these are not actually the raw logging information. The documentation indicates that it wont .. print the raw log of failed tasks. Which is what its doing. If the task fails then octo.exe wants to write the full raw logs to the output stream. --norawlogs still leaves basic log information on the stdout (as it is probably needed to help diagnose what happened) but it just bypasses printing the full, raw task log itself. Apologies if i wasn’t clear in my previous email. If you want absolutely nothing outputted then your redirection is probably the best way to go.