code: func (d *EmpireDeployer) Deploy(ctx context.Context, event events.Deployment, w io.Writer) error {
  	img, err := d.BuildImage(ctx, w, event)
  	if err != nil {
  		return err
  	}
  
  	// What we write to w should be plain text. `p` will get the jsonmessage
  	// stream.
  	p := dockerutil.DecodeJSONMessageStream(w)
  
  	message := event.Deployment.Description
  	if message == "" {
  		message = fmt.Sprintf("GitHub deployment #%d of %s", event.Deployment.ID, event.Repository.FullName)
  	}
  	_, err = d.empire.Deploy(ctx, empire.DeployOpts{
  		Image:   img,
  		Output:  empire.NewDeploymentStream(p),
  		User:    &empire.User{Name: event.Deployment.Creator.Login},
  		Stream:  true,
  		Message: message,
  	})
  	if err != nil {
  		return err
  	}
  
  	return p.Err()
  }
docs: // Deploy builds/determines the docker image to deploy, then deploys it with
  // Empire.