code: func (s *ReleaseServer) InstallRelease(c ctx.Context, req *services.InstallReleaseRequest) (*services.InstallReleaseResponse, error) {
  	s.Log("preparing install for %s", req.Name)
  	rel, err := s.prepareRelease(req)
  	if err != nil {
  		s.Log("failed install prepare step: %s", err)
  		res := &services.InstallReleaseResponse{Release: rel}
  
  		// On dry run, append the manifest contents to a failed release. This is
  		// a stop-gap until we can revisit an error backchannel post-2.0.
  		if req.DryRun && strings.HasPrefix(err.Error(), "YAML parse error") {
  			err = fmt.Errorf("%s\n%s", err, rel.Manifest)
  		}
  		return res, err
  	}
  
  	s.Log("performing install for %s", req.Name)
  	res, err := s.performRelease(rel, req)
  	if err != nil {
  		s.Log("failed install perform step: %s", err)
  	}
  	return res, err
  }
docs: // InstallRelease installs a release and stores the release record.