diff --git a/scripts/deploy-to-multiple-worktrees.py b/scripts/deploy-to-multiple-worktrees.py index 7d24ec9..2ef97f6 100755 --- a/scripts/deploy-to-multiple-worktrees.py +++ b/scripts/deploy-to-multiple-worktrees.py @@ -59,10 +59,25 @@ def getRevisionForRef(ref): return subprocess.check_output(["git", "rev-list", "-1", ref], cwd=REPO).decode().strip() def getLatestReleaseTag(): - return subprocess.check_output(["git", "for-each-ref", "refs/tags/Release*", "--count=1", "--sort=-creatordate", "--format=%(refname:short)"], cwd=REPO).decode().strip() + process = subprocess.Popen(["git", "for-each-ref", "refs/tags/Release*", "--sort=-creatordate", "--format=%(refname:short)"], stdout=subprocess.PIPE, cwd=REPO) + + for line in process.stdout: + tag = line.decode().rstrip() + + if isTagVerified(tag): + return tag + + print(f"[WARNING] Tag '{tag}' is not verified, skipping.") + + raise Exception("No verified 'Release*' tag found!") + +def isTagVerified(tag): + process = subprocess.run(["git", "tag", "--verify", tag], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=REPO) + + return process.returncode == 0 def updateRepoFromRemote(): - subprocess.call(["git", "fetch", "origin", "--prune"], cwd=REPO) + subprocess.call(["git", "fetch", "origin", "--prune", "--prune-tags"], cwd=REPO) def checkoutWorktree(worktreePath, ref): subprocess.call(["git", "checkout", "-f", ref], cwd=worktreePath)