release notes vN (cherry-pick #11077) (#11079)

gcp-cherry-pick-bot[bot] and Conrad Irwin created

Cherry-picked release notes vN (#11077)

Make it more likely the draft release notes work...

Release Notes:

- N/A

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Change summary

script/draft-release-notes | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)

Detailed changes

script/draft-release-notes 🔗

@@ -27,13 +27,18 @@ async function main() {
     if (parts[2] == 0) {
       priorVersion = [parts[0], parts[1] - 1, 0].join(".");
     }
-  } else if (!tagExists("v${priorVersion}")) {
+  } else if (!ensureTag(`v${priorVersion}`)) {
     console.log("Copy the release notes from preview.");
     process.exit(0);
   }
 
   let [tag, priorTag] = [`v${version}${suffix}`, `v${priorVersion}${suffix}`];
 
+  if (!ensureTag(tag) || !ensureTag(priorTag)) {
+    console.log("Could not draft release notes, missing a tag:", tag, priorTag);
+    process.exit(0);
+  }
+
   const newCommits = getCommits(priorTag, tag);
 
   let releaseNotes = [];
@@ -99,11 +104,17 @@ function getCommits(oldTag, newTag) {
   return pullRequestNumbers;
 }
 
-function tagExists(tag) {
+function ensureTag(tag) {
   try {
     execFileSync("git", ["rev-parse", "--verify", tag]);
     return true;
   } catch (e) {
-    return false;
+    try {
+      execFileSync("git"[("fetch", "origin", "--shallow-exclude", tag)]);
+      execFileSync("git"[("fetch", "origin", "--deepen", "1")]);
+      return true;
+    } catch (e) {
+      return false;
+    }
   }
 }