DodoApp: Implement commit status page

Render used volume, postgresql and ingress resource details.

Change-Id: I87f34fd19d0d0d31ec495d2798c9f5ce99c0fd43
diff --git a/core/installer/app_manager.go b/core/installer/app_manager.go
index a7c23f0..c27b641 100644
--- a/core/installer/app_manager.go
+++ b/core/installer/app_manager.go
@@ -285,9 +285,10 @@
 }
 
 type Resource struct {
-	Name      string `json:"name"`
-	Namespace string `json:"namespace"`
-	Info      string `json:"info"`
+	Name        string            `json:"name"`
+	Namespace   string            `json:"namespace"`
+	Info        string            `json:"info"`
+	Annotations map[string]string `json:"annotations"`
 }
 
 type ReleaseResources struct {
@@ -326,7 +327,7 @@
 	if o.NoLock {
 		dopts = append(dopts, soft.WithNoLock())
 	}
-	return repo.Do(func(r soft.RepoFS) (string, error) {
+	_, err := repo.Do(func(r soft.RepoFS) (string, error) {
 		if err := r.RemoveDir(appDir); err != nil {
 			return "", err
 		}
@@ -386,6 +387,7 @@
 		}
 		return fmt.Sprintf("install: %s", name), nil
 	}, dopts...)
+	return err
 }
 
 // TODO(gio): commit instanceId -> appDir mapping as well
@@ -529,11 +531,13 @@
 		}
 		if h.Kind == "HelmRelease" {
 			res := Resource{
-				Name:      h.Metadata.Name,
-				Namespace: h.Metadata.Namespace,
-				Info:      fmt.Sprintf("%s/%s", h.Metadata.Namespace, h.Metadata.Name),
+				Name:        h.Metadata.Name,
+				Namespace:   h.Metadata.Namespace,
+				Info:        fmt.Sprintf("%s/%s", h.Metadata.Namespace, h.Metadata.Name),
+				Annotations: nil,
 			}
 			if h.Metadata.Annotations != nil {
+				res.Annotations = h.Metadata.Annotations
 				info, ok := h.Metadata.Annotations["dodo.cloud/installer-info"]
 				if ok && len(info) != 0 {
 					res.Info = info
@@ -599,7 +603,7 @@
 		return err
 	}
 	var portForward []PortForward
-	if err := m.repoIO.Do(func(r soft.RepoFS) (string, error) {
+	if _, err := m.repoIO.Do(func(r soft.RepoFS) (string, error) {
 		instanceDir := filepath.Join(m.appDirRoot, instanceId)
 		renderedCfg, err := readRendered(m.repoIO, filepath.Join(instanceDir, "rendered.json"))
 		if err != nil {