internal/task: make workflow explicitly pick up non-PUBLIC changes

Updates golang/go#76157

Change-Id: I96270199318897810dcd1a6f174a0a2e09c53be4
Reviewed-on: https://go-review.googlesource.com/c/build/+/771721
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
diff --git a/internal/task/security_release_coalesce.go b/internal/task/security_release_coalesce.go
index f5fe034..8281a2b 100644
--- a/internal/task/security_release_coalesce.go
+++ b/internal/task/security_release_coalesce.go
@@ -64,7 +64,7 @@
 				return nil
 			},
 		})
-		clNums = wf.Task1(wd, "Get CL numbers from metadata", x.GetCLsFromMetadata, milestoneNum)
+		clNums = wf.Task1(wd, "Get CL numbers from metadata", x.GetPrivateChangelists, milestoneNum)
 	} else {
 		clNums = wf.Param(wd, wf.ParamDef[[]string]{
 			Name:      "Security Patch CL Numbers",
@@ -149,6 +149,8 @@
 // ReleaseMilestone contains all
 // patches and their respective
 // metadata for a given release.
+//
+// TODO(nealpatel): Replace with relmeta package
 type ReleaseMilestone struct {
 	BuganizerID int              `yaml:"buganizer_id"`
 	Patches     []*SecurityPatch `yaml:"security_patches"`
@@ -157,12 +159,15 @@
 // SecurityPatch is a subset of the
 // required metadata to release all
 // patches contained by a milestone.
+//
+// TODO(nealpatel): Replace with relmeta package
 type SecurityPatch struct {
 	Changelists      []string `yaml:"changelists"`
 	TargetedReleases []string `yaml:"target_releases"`
+	Track            string   `yaml:"track"`
 }
 
-func (x *SecurityReleaseCoalesceTask) GetCLsFromMetadata(ctx *wf.TaskContext, milestoneNum string) ([]string, error) {
+func (x *SecurityReleaseCoalesceTask) GetPrivateChangelists(ctx *wf.TaskContext, milestoneNum string) ([]string, error) {
 	const project = "security-metadata"
 
 	head, err := x.PrivateGerrit.ReadBranchHead(ctx, project, "main")
@@ -182,6 +187,9 @@
 
 	var clNums []string
 	for _, patch := range rm.Patches {
+		if patch.Track == "PUBLIC" {
+			continue
+		}
 		for _, url := range patch.Changelists {
 			_, num, _ := strings.Cut(url, "/+/")
 			clNums = append(clNums, num)
diff --git a/internal/task/security_release_coalesce_test.go b/internal/task/security_release_coalesce_test.go
index 68cb66a..b24ba83 100644
--- a/internal/task/security_release_coalesce_test.go
+++ b/internal/task/security_release_coalesce_test.go
@@ -139,6 +139,15 @@
 security_patches:
     - is_toolchain: false
       package: runtime
+      track: PUBLIC
+      changelists:
+        - https://go.dev/cl/123456
+      target_releases:
+        - go1.3.1
+        - go1.4.1
+    - is_toolchain: false
+      package: runtime
+      track: PRIVATE
       changelists:
         - https://go-internal-review.git.corp.google.com/c/security-metadata/+/1234
         - https://go-internal-review.git.corp.google.com/c/security-metadata/+/5678