Skip to content

commands/.../build.go: set exec command output to stdout, stderr #692

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

Merged
merged 1 commit into from
Nov 5, 2018

Conversation

joelanford
Copy link
Member

Description of the change:
Changing build output so that exec'ed build subprocesses use the main process stdout and stderr.

Motivation for the change:
Currently operator-sdk build prints subprocess output only after the subprocess has finished. This can be a poor user experience for long running subprocesses that output progress along the way (e.g. docker build).

@openshift-ci-robot openshift-ci-robot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Nov 2, 2018
Copy link
Member

@shawn-hurley shawn-hurley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 I was just dealing with this! LGTM except for maybe adding a log statement.


if enableTests {
testBinary := filepath.Join(wd, scaffold.BuildBinDir, filepath.Base(wd)+"-test")
buildTestCmd := exec.Command("go", "test", "-c", "-o", testBinary, testLocationBuild+"/...")
buildTestCmd.Env = goBuildEnv
o, err := buildTestCmd.CombinedOutput()
buildTestCmd.Stdout = os.Stdout
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we are going to print building the intermediate image, I don't see us log to the user that is what is happening. I think it might be nice to do that so when they see two docker builds happening they are not confused. Thoughts?

Copy link
Member Author

@joelanford joelanford Nov 2, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't log anything right now unless there's a failure. If we add a log for one of the steps, do you think it makes sense to go ahead and log all of the steps?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

^^ Thoughts?

We're currently printing the intermediate image build output without a log saying what's happening, so this PR doesn't change that.

I agree that adding some logging for context would be helpful though. Would logging before every subprocess be unnecessarily verbose?

Without --enable-tests, the only output is the docker build output for the final image, so users should understand that with no additional context. With --enable-tests, the output is the docker build output for both the intermediate and final image. So maybe we only log both docker builds, but only when tests are enabled?

Copy link
Member

@estroz estroz Nov 5, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that there should be a log.Print per step. We can add that in a separate PR; I'm actually working on rewriting our log usage so I can add statements for each step.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me. In that case, I'll merge this as is.

Copy link
Member

@estroz estroz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@joelanford joelanford merged commit ed28ca8 into operator-framework:master Nov 5, 2018
@joelanford joelanford deleted the build-output branch November 5, 2018 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
size/M Denotes a PR that changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants