Skip to content

Commit 426fcb5

Browse files
committed
Create release on GitHub Actions
1 parent 897e504 commit 426fcb5

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

.github/workflows/release.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Create releases
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
jobs:
9+
publish:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- uses: ruby/setup-ruby@v1
16+
with:
17+
ruby-version: ruby
18+
bundler-cache: true
19+
20+
- name: Generate changelog
21+
run: |
22+
bundle exec rake changelog[,${TAG_NAME}] > /tmp/changelog.md
23+
env:
24+
TAG_NAME: ${{ github.ref_name }}
25+
26+
- name: Release
27+
uses: softprops/action-gh-release@v2
28+
with:
29+
body_path: /tmp/changelog.md

_tools/changelog_generator/changelog_generator.rb

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
require "json"
55

66
# @return [String]
7-
def latest_tag
8-
`git tag`.each_line.map(&:strip).max_by { |tag| Gem::Version.create(tag.delete_prefix("v")) }
7+
def search_git_tags
8+
`git tag`.each_line.map(&:strip).sort_by { |tag| Gem::Version.create(tag.delete_prefix("v")) }.reverse
99
end
1010

1111
# @param before [String]
@@ -29,9 +29,27 @@ def search_pr_numbers(before:, after:)
2929

3030
opt.parse!(ARGV)
3131

32-
before ||= latest_tag
3332
after ||= "HEAD"
3433

34+
unless before
35+
git_tags = search_git_tags
36+
37+
if after == "HEAD"
38+
# Use latest tag
39+
before = git_tags[0]
40+
else
41+
index = git_tags.index(after)
42+
before =
43+
if index
44+
# Use 1 previous tag of index
45+
git_tags[index + 1]
46+
else
47+
# Use latest tag
48+
git_tags[0]
49+
end
50+
end
51+
end
52+
3553
pr_numbers = search_pr_numbers(before:, after:)
3654
all_prs = pr_numbers.map do |pr_number|
3755
pr = JSON.parse(`gh pr view --json number,title,author,labels,url #{pr_number}`)

0 commit comments

Comments
 (0)