Skip to content

Commit 83aa015

Browse files
committed
Fix release notes for next RC
1 parent a2af322 commit 83aa015

2 files changed

Lines changed: 44 additions & 64 deletions

File tree

.github/workflows/release_notes.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ jobs:
1111
release-notes:
1212
name: Create changelog
1313
runs-on: ubuntu-latest
14+
permissions:
15+
contents: write
16+
issues: read
17+
pull-requests: read
1418

1519
steps:
1620
- uses: actions/checkout@v5
@@ -28,7 +32,7 @@ jobs:
2832
env:
2933
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3034
run: |
31-
gem install github_api
35+
gem install octokit
3236
pip install requests
3337
ruby ./developer/ruby/GitHubIssueStats.rb > changelog.txt
3438

developer/ruby/GitHubIssueStats.rb

Lines changed: 39 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,23 @@
1-
require 'github_api'
1+
require 'octokit'
22
require 'date'
33
require 'yaml'
44

55
# Get the begin date, by finding the last major/minor (X.Y.0) release
66
# that is at least a week old
77
def get_begin_date_and_previous_tag()
88
a_week_ago = Time.now - (60*60*24*7)
9-
10-
@github.repos.releases.list(owner: @repo_owner,
11-
repo: @repo).each_page do |page|
12-
page.each do |release|
13-
next if release.tag_name !~ /^v\d\.\d\.0$/
14-
release_date = Time.parse(release.created_at)
15-
next if release_date > a_week_ago
16-
# This is perhaps unecessary since we match to a tag in vX.Y.0 format
17-
# already but it doesn't hurt
18-
next if release.prerelease
19-
next if release.draft
20-
STDERR.puts "Found previous major/minor release: #{release.tag_name}, #{release_date}"
21-
return release_date, " (#{release.tag_name})"
22-
end
9+
repo = "#{@repo_owner}/#{@repo}"
10+
11+
@github.releases(repo, per_page: 100).each do |release|
12+
next if release.tag_name !~ /^v\d+\.\d+\.0$/
13+
release_date = release.created_at.to_time
14+
next if release_date > a_week_ago
15+
# This is perhaps unecessary since we match to a tag in vX.Y.0 format
16+
# already but it doesn't hurt
17+
next if release.prerelease
18+
next if release.draft
19+
STDERR.puts "Found previous major/minor release: #{release.tag_name}, #{release_date}"
20+
return release_date, " (#{release.tag_name})"
2321
end
2422
STDERR.puts "Cannot find previous release, setting time to 2005"
2523
return Time.new(2005, 01, 01), ""
@@ -60,16 +58,18 @@ def print_issue(issue)
6058

6159
if !ENV['GITHUB_TOKEN'].nil?
6260
token = ENV['GITHUB_TOKEN']
63-
@github = Github.new oauth_token: token
61+
@github = Octokit::Client.new(access_token: token)
6462
elsif File.exist?(Dir.home + '/github_config.yml')
6563
github_options = YAML.load_file(Dir.home + '/github_config.yml')
6664
token = github_options['oauth_token']
67-
@github = Github.new oauth_token: token
65+
@github = Octokit::Client.new(access_token: token)
6866
else
6967
STDERR.puts "Github Token not found"
70-
@github = Github.new
68+
@github = Octokit::Client.new
7169
end
7270

71+
@github.auto_paginate = true
72+
7373
@begin_date, @prev_tag = get_begin_date_and_previous_tag()
7474

7575
totalOpenIssues = Array.new
@@ -78,59 +78,35 @@ def print_issue(issue)
7878
closedIssues = Array.new
7979
acceptedPullRequests = Array.new
8080

81+
repo = "#{@repo_owner}/#{@repo}"
82+
8183
# Process Open Issues
82-
results = -1
83-
page = 1
84-
while (results != 0)
85-
resp = @github.issues.list user: @repo_owner, repo: @repo,
86-
:sort => 'created',
87-
:direction => 'asc',
88-
:state => 'open',
89-
:per_page => 100,
90-
:page => page
91-
results = resp.length
92-
resp.env[:body].each do |issue, index|
93-
created = Time.parse(issue.created_at)
94-
if !issue.has_key?(:pull_request)
95-
totalOpenIssues << issue
96-
if created >= @begin_date && created <= @end_date
97-
newIssues << issue
98-
end
99-
else
100-
totalOpenPullRequests << issue
84+
@github.issues(repo, sort: 'created', direction: 'asc', state: 'open', per_page: 100).each do |issue|
85+
created = issue.created_at.to_time
86+
if issue.pull_request.nil?
87+
totalOpenIssues << issue
88+
if created >= @begin_date && created <= @end_date
89+
newIssues << issue
10190
end
91+
else
92+
totalOpenPullRequests << issue
10293
end
103-
104-
page = page + 1
10594
end
10695

10796
# Process Closed Issues
108-
results = -1
109-
page = 1
110-
while (results != 0)
111-
resp = @github.issues.list user: @repo_owner, repo: @repo,
112-
:sort => 'created',
113-
:direction => 'asc',
114-
:state => 'closed',
115-
:per_page => 100,
116-
:page => page
117-
results = resp.length
118-
resp.env[:body].each do |issue, index|
119-
created = Time.parse(issue.created_at)
120-
closed = Time.parse(issue.closed_at)
121-
if !issue.has_key?(:pull_request)
122-
if created >= @begin_date && created <= @end_date
123-
newIssues << issue
124-
end
125-
if closed >= @begin_date && closed <= @end_date
126-
closedIssues << issue
127-
end
128-
elsif closed >= @begin_date && closed <= @end_date
129-
acceptedPullRequests << issue
97+
@github.issues(repo, sort: 'created', direction: 'asc', state: 'closed', per_page: 100).each do |issue|
98+
created = issue.created_at.to_time
99+
closed = issue.closed_at.to_time
100+
if issue.pull_request.nil?
101+
if created >= @begin_date && created <= @end_date
102+
newIssues << issue
130103
end
104+
if closed >= @begin_date && closed <= @end_date
105+
closedIssues << issue
106+
end
107+
elsif closed >= @begin_date && closed <= @end_date
108+
acceptedPullRequests << issue
131109
end
132-
133-
page = page + 1
134110
end
135111

136112
closedIssues.sort! {|x,y| get_num(x) <=> get_num(y)}

0 commit comments

Comments
 (0)