Skip to content

Commit b17a317

Browse files
Merge pull request #35 from fortissimo1997/add-release-please
chore: set up release-please and RubyGems Trusted Publishing
2 parents 2aa5f96 + 14ca244 commit b17a317

File tree

7 files changed

+133
-0
lines changed

7 files changed

+133
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Release Please
2+
on:
3+
push:
4+
branches: [ "main" ]
5+
workflow_dispatch:
6+
7+
jobs:
8+
release-please:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: googleapis/release-please-action@v4
12+
with:
13+
manifest-file: .release-please-manifest.json
14+
config-file: .release-please-config.json

.github/workflows/release.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Publish gem on GitHub Release
2+
on:
3+
release:
4+
types: [published]
5+
6+
jobs:
7+
publish:
8+
runs-on: ubuntu-latest
9+
permissions:
10+
contents: write
11+
id-token: write
12+
13+
steps:
14+
- uses: actions/checkout@v4
15+
with:
16+
fetch-depth: 0
17+
18+
- uses: ruby/setup-ruby@v1
19+
with:
20+
ruby-version: '3.3'
21+
22+
- name: Build gem (sanity check)
23+
run: |
24+
gem build simplecov-lcov.gemspec
25+
ls -1 *.gem
26+
27+
- name: Push to RubyGems.org
28+
uses: rubygems/release-gem@v1

.release-please-config.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3+
"release-type": "ruby",
4+
"packages": {
5+
".": {
6+
"package-name": "simplecov-lcov",
7+
"version-file": "lib/simplecov/lcov/version.rb",
8+
"changelog-path": "CHANGELOG.md"
9+
}
10+
},
11+
"plugins": [
12+
"sentence-case"
13+
]
14+
}

.release-please-manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ ".": "0.8.0" }

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Changelog
2+
3+
> ℹ️ This file is managed by **release-please**.
4+
> It will be automatically updated in future release PRs. Manual editing is generally not needed.
5+
6+
## Unreleased
7+
8+
- Set up release-please and RubyGems Trusted Publishing.

diff.patch

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
2+
new file mode 100644
3+
index 0000000..1111111
4+
--- /dev/null
5+
+++ b/.github/workflows/release.yml
6+
@@ -0,0 +1,49 @@
7+
+name: Publish gem on GitHub Release
8+
+on:
9+
+ release:
10+
+ types: [published]
11+
+
12+
+jobs:
13+
+ publish:
14+
+ # RubyGems 側の Trusted Publisher で登録した Environment 名と一致させる
15+
+ environment: GitHubActions
16+
+ runs-on: ubuntu-latest
17+
+ permissions:
18+
+ contents: write
19+
+ id-token: write # ← Trusted Publishing(OIDC)に必須
20+
+
21+
+ steps:
22+
+ - uses: actions/checkout@v4
23+
+ with:
24+
+ # 念のため完全取得(CHANGELOG等で過去ログを参照するツールの保険)
25+
+ fetch-depth: 0
26+
+
27+
+ - uses: ruby/setup-ruby@v1
28+
+ with:
29+
+ ruby-version: '3.3'
30+
+
31+
+ # (任意)ビルドが壊れていないことだけ軽く確認
32+
+ - name: Build gem (sanity check)
33+
+ run: |
34+
+ gem build simplecov-lcov.gemspec
35+
+ ls -1 *.gem
36+
+
37+
+ # RubyGems 公式 Action(APIキー不要/Trusted Publishing)
38+
+ - name: Push to RubyGems.org
39+
+ uses: rubygems/release-gem@v1
40+
+ # この Action は直前に生成された *.gem を自動検出して push します

docs/RELEASING.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Releasing & Publishing
2+
3+
This repository uses:
4+
5+
- **Conventional Commits** (`feat:`, `fix:`, `chore:` ...)
6+
- **release-please** to open automated Release PRs
7+
- **RubyGems Trusted Publishing** via `rubygems/release-gem@v1`
8+
9+
## Normal flow
10+
11+
1. Merge changes to `main` using Conventional Commits.
12+
2. `release-please` creates a **Release PR** (bumps `lib/simplecov/lcov/version.rb` and updates `CHANGELOG.md`).
13+
3. Merge the Release PR → a GitHub Release and tag `vX.Y.Z` are created.
14+
4. The **Publish** workflow runs on `release: published` and pushes the gem to RubyGems.
15+
16+
## One-time setup on RubyGems.org
17+
18+
1. As the gem owner, add a **Trusted Publisher** on RubyGems.org:
19+
- Select this GitHub repository
20+
- Specify the workflow name: `Publish gem on GitHub Release`
21+
2. No `RUBYGEMS_API_KEY` is required (OIDC-based).
22+
23+
## Notes
24+
25+
- **Single source of truth (SSOT)** for version is `SimpleCov::Lcov::VERSION` in `lib/simplecov/lcov/version.rb`.
26+
- Do **not** manually edit `CHANGELOG.md`; it's auto-generated.
27+
- Protect `main` branch and require CI checks to pass before merge.
28+
- If you ever need a manual release, you can trigger `release-please` via `workflow_dispatch`.

0 commit comments

Comments
 (0)