Skip to content

Commit d30860c

Browse files
jnunemakerclaude
andcommitted
Add automated gem release workflow via GitHub Actions
Uses RubyGems trusted publishing (OIDC) to publish all 12 gems on tag push. Creates a draft GitHub Release with auto-generated release notes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 8c4ee2f commit d30860c

2 files changed

Lines changed: 57 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
release:
10+
runs-on: ubuntu-latest
11+
environment: Rubygems
12+
permissions:
13+
id-token: write # RubyGems trusted publishing (OIDC)
14+
contents: write # Create GitHub Releases
15+
steps:
16+
- uses: actions/checkout@v6
17+
18+
- uses: ruby/setup-ruby@v1
19+
with:
20+
ruby-version: '3.3'
21+
22+
- name: Build all gems
23+
run: |
24+
for gemspec in *.gemspec; do
25+
gem build "$gemspec"
26+
done
27+
mkdir -p pkg
28+
mv *.gem pkg/
29+
echo "Built gems:"
30+
ls -la pkg/
31+
32+
- name: Configure RubyGems credentials
33+
uses: rubygems/configure-rubygems-credentials@main
34+
with:
35+
audience: 'https://rubygems.org'
36+
37+
- name: Publish core flipper gem
38+
run: gem push pkg/flipper-[0-9]*.gem
39+
40+
- name: Publish all other gems
41+
run: |
42+
for gem_file in pkg/flipper-*.gem; do
43+
basename="$(basename "$gem_file")"
44+
if [[ "$basename" =~ ^flipper-[0-9] ]]; then
45+
continue
46+
fi
47+
echo "Pushing $basename..."
48+
gem push "$gem_file"
49+
done
50+
51+
- name: Create draft GitHub Release
52+
uses: softprops/action-gh-release@v2
53+
with:
54+
draft: true
55+
generate_release_notes: true
56+
files: pkg/*.gem

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@ bin
2424
.tool-versions
2525
tags
2626
node_modules
27+
.claude

0 commit comments

Comments
 (0)