From 95e8803a5e63da6e1701fc3cde9d423f783ef8cf Mon Sep 17 00:00:00 2001 From: denverwilliams Date: Tue, 12 Jan 2021 17:04:20 -0500 Subject: [PATCH] Update release manager to fetch notes from latest snapshot cncf/cnf-conformance#527 --- spec/utils/release_manager_spec.cr | 11 +++++++++++ src/tasks/utils/release_manager.cr | 14 +++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/spec/utils/release_manager_spec.cr b/spec/utils/release_manager_spec.cr index 3a72bc24d..02a6d14cc 100644 --- a/spec/utils/release_manager_spec.cr +++ b/spec/utils/release_manager_spec.cr @@ -87,6 +87,17 @@ describe "ReleaseManager" do end end + it "'#ReleaseManager.latest_snapshot' should return the latest snapshot", tags: "release" do + if ENV["GITHUB_USER"]?.nil? + puts "Warning: Set GITHUB_USER and GITHUB_TOKEN to activate release manager tests!".colorize(:red) + else + issues = ReleaseManager.latest_snapshot + # https://github.com/semver/semver/blob/master/semver.md#is-v123-a-semantic-version + (issues.match(/(?i)(master)/)).should_not be_nil + end + end + + it "'#ReleaseManager.issue_title' should return issue title", tags: "release" do if ENV["GITHUB_USER"]?.nil? puts "Warning: Set GITHUB_USER and GITHUB_TOKEN to activate release manager tests!".colorize(:red) diff --git a/src/tasks/utils/release_manager.cr b/src/tasks/utils/release_manager.cr index 13b5728b1..a400c59bf 100644 --- a/src/tasks/utils/release_manager.cr +++ b/src/tasks/utils/release_manager.cr @@ -69,7 +69,11 @@ module ReleaseManager found_release = release_resp.find {|x| x["tag_name"] == upsert_version} LOGGING.info "find found_release?: #{found_release}" - issues = ReleaseManager.commit_message_issues(ReleaseManager.latest_release, "HEAD") + if upsert_version =~ /(?i)(master)/ + issues = ReleaseManager.commit_message_issues(ReleaseManager.latest_snapshot, "HEAD") + else + issues = ReleaseManager.commit_message_issues(ReleaseManager.latest_release, "HEAD") + end titles = issues.reduce("") do |acc, x| acc + "- #{x} - #{ReleaseManager.issue_title(x)}\n" end @@ -260,6 +264,14 @@ TEMPLATE parsed_resp["tag_name"]?.not_nil!.to_s end + def self.latest_snapshot + resp = `curl -u #{ENV["GITHUB_USER"]}:#{ENV["GITHUB_TOKEN"]} --silent "https://api.github.com/repos/cncf/cnf-conformance/releases"` + LOGGING.info "latest_release: #{resp}" + parsed_resp = JSON.parse(resp) + latest_snapshot = parsed_resp.as_a.select{ | x | x["prerelease"]==true }.sort { |a, b| Time.parse(b["published_at"].as_s, "%Y-%m-%dT%H:%M:%SZ", Time::Location::UTC) <=> Time.parse(a["published_at"].as_s, "%Y-%m-%dT%H:%M:%SZ", Time::Location::UTC) } + latest_snapshot[0]["tag_name"]?.not_nil!.to_s + end + def self.issue_title(issue_number) pure_issue = issue_number.gsub("#", "") resp = `curl -u #{ENV["GITHUB_USER"]}:#{ENV["GITHUB_TOKEN"]} "https://api.github.com/repos/cncf/cnf-conformance/issues/#{pure_issue}"`