This is an automated email from the ASF dual-hosted git repository. zwoop pushed a commit to branch 7.1.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit b989786ff37e0eb975be945e24703b923f49ef79 Author: Phil Sorber <[email protected]> AuthorDate: Thu May 4 15:30:47 2017 -0600 Update changelog.pl to use github instead of Jira (cherry picked from commit a68cb22faaed4afcbdd2bddd3cb846add7646b3c) --- Makefile.am | 3 +- tools/changelog.pl | 124 +++++++++++++++++++++++++++++------------------------ 2 files changed, 70 insertions(+), 57 deletions(-) diff --git a/Makefile.am b/Makefile.am index f1a8747..60bd7da 100644 --- a/Makefile.am +++ b/Makefile.am @@ -57,8 +57,7 @@ doxygen: @cd doc && $(MAKE) $(AM_MAKEFLAGS) $@ changelog: - ./tools/changelog.pl $(VERSION) > CHANGELOG-$(VERSION) - -git add CHANGELOG-$(VERSION) && git commit -m "Adding CHANGELOG-$(VERSION)" + ./tools/changelog.pl apache trafficserver $(VERSION) > CHANGELOG-$(VERSION) asf-dist: asf-distdir tardir=$(distdir) && $(am__tar) --mtime=./configure.ac | bzip2 -9 -c >$(distdir).tar.bz2 diff --git a/tools/changelog.pl b/tools/changelog.pl index 8ac7fc9..b151a69 100755 --- a/tools/changelog.pl +++ b/tools/changelog.pl @@ -22,36 +22,64 @@ use warnings; use WWW::Curl::Easy; use JSON; -my $fixversion = shift; -my $url = "https://issues.apache.org/jira"; -my $jql = "project = TS AND status in (Resolved, Closed) AND fixVersion = $fixversion ORDER BY key ASC"; +my $owner = shift; +my $repo = shift; +my $milestone = shift; +my $url = "https://api.github.com"; -sub jira_search +sub milestone_lookup { my $url = shift; - my $jql = shift; - my $index = shift; - my $endpoint = "/rest/api/2/search"; - - my $query = { - jql => $jql, - startAt => $index, - fields => [ - "summary", - "issuetype" - ] - }; - - my $req_body = to_json($query); + my $owner = shift; + my $repo = shift; + my $milestone_title = shift; + my $endpoint = "/repos/$owner/$repo/milestones"; + + my $params = "state=all"; + my $resp_body; my $curl = WWW::Curl::Easy->new; - $curl->setopt(CURLOPT_POST, 1); - $curl->setopt(CURLOPT_POSTFIELDS, $req_body); - $curl->setopt(CURLOPT_HTTPHEADER, ['Content-Type: application/json']); - open(my $fileb, ">", \$resp_body); - $curl->setopt(CURLOPT_WRITEDATA, $fileb); - $curl->setopt(CURLOPT_URL, $url . $endpoint); + #$curl->setopt(CURLOPT_VERBOSE, 1); + $curl->setopt(CURLOPT_HTTPHEADER, ['Accept: application/vnd.github.v3+json', 'User-Agent: Awesome-Octocat-App']); + $curl->setopt(CURLOPT_WRITEDATA, \$resp_body); + $curl->setopt(CURLOPT_URL, $url . $endpoint . '?' . $params); + + my $retcode = $curl->perform(); + if ($retcode == 0 && $curl->getinfo(CURLINFO_HTTP_CODE) == 200) + { + my $milestones = from_json($resp_body); + foreach my $milestone (@{ $milestones }) + { + if ($milestone->{title} eq $milestone_title) + { + return $milestone->{number}; + } + } + } + + return undef; +} + +sub issue_search +{ + my $url = shift; + my $owner = shift; + my $repo = shift; + my $milestone_id = shift; + my $page = shift; + my $endpoint = "/repos/$owner/$repo/issues"; + + my $params = "milestone=$milestone_id&state=closed&page=$page"; + + my $resp_body; + my $curl = WWW::Curl::Easy->new; + + #$curl->setopt(CURLOPT_VERBOSE, 1); + $curl->setopt(CURLOPT_HTTPHEADER, ['Accept: application/vnd.github.v3+json', 'User-Agent: Awesome-Octocat-App']); + $curl->setopt(CURLOPT_WRITEDATA, \$resp_body); + $curl->setopt(CURLOPT_URL, $url . $endpoint . '?' . $params); + my $retcode = $curl->perform(); if ($retcode == 0 && $curl->getinfo(CURLINFO_HTTP_CODE) == 200) { return from_json($resp_body); @@ -60,49 +88,35 @@ sub jira_search undef; } -my $count = 0; -my $changelog; -my $issues; +my $milestone_id = milestone_lookup($url, $owner, $repo, $milestone); -do +if (!defined($milestone_id)) { - $issues = jira_search($url, $jql, $count); + exit 1; +} - if (!defined($issues)) - { - exit 1; - } +my $issues; +my $changelog; +my $page = 1; - foreach my $issue (@{ $issues->{issues} }) +do { + $issues = issue_search($url, $owner, $repo, $milestone_id, $page); + foreach my $issue (@{ $issues }) { if (defined($issue)) { - push @{ $changelog->{$issue->{fields}{issuetype}{name}} }, {key => $issue->{key}, summary => $issue->{fields}{summary}}; - $count++; + push @{ $changelog }, {number => $issue->{number}, title => $issue->{title}}; } } -} -while ($count < $issues->{total}); + $page++; +} while (scalar @{ $issues }); -if (!defined($changelog)) +if (defined($changelog)) { - exit 1; -} - -print "Changes with Apache Traffic Server $fixversion\n"; + print "Changes with Apache Traffic Server $milestone\n"; -foreach my $key (sort keys %{ $changelog }) -{ - print "\n$key:\n"; - foreach my $issue (@{ $changelog->{$key} }) + foreach my $issue (sort {$a->{number} <=> $b->{number}} @{ $changelog }) { - chomp $issue->{summary}; - $issue->{summary} =~ s/\s+$//; # Trim trailing whitespace - print " *) [$issue->{key}] "; - if (length($issue->{summary}) <= (131 - 15)) { - print "$issue->{summary}\n"; - } else { - print substr($issue->{summary}, 0, (131 - 18)), "...\n"; - } + print " #$issue->{number} - $issue->{title}\n"; } } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
