Skip to content

Commit 18a8beb

Browse files
committed
New release flow
Ensures release is reproducable as version is part of commit.
1 parent ccb095b commit 18a8beb

2 files changed

Lines changed: 22 additions & 33 deletions

File tree

.github/workflows/release.yml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
name: Release gem
22

33
on:
4-
push:
5-
tags:
6-
- '*'
4+
workflow_dispatch:
75

86
permissions:
97
contents: read
@@ -31,35 +29,37 @@ jobs:
3129
bundler-cache: true
3230
ruby-version: ruby
3331

34-
# Release
35-
- name: Release
32+
# Read version from version.rb
33+
- name: Get version
34+
id: version
3635
run: |
37-
# Writing version.rb changes the Gemfile.lock which
38-
# halts subsequent rake tasks when in frozen mode
39-
bundle config set frozen false
40-
bin/rake gem:write_version[${{ github.ref_name }}]
36+
version=$(ruby -r ./lib/bonchi/version -e 'puts Bonchi::VERSION')
37+
echo "version=$version" >> "$GITHUB_OUTPUT"
38+
39+
# Release
4140
- uses: rubygems/release-gem@1c162a739e8b4cb21a676e97b087e8268d8fc40b # v1.1.2
42-
- name: Create GitHub release
41+
42+
- name: Create tag and GitHub release
4343
run: |
44-
version="${{ github.ref_name }}"
44+
version="${{ steps.version.outputs.version }}"
4545
dot_count=$(echo "$version" | tr -cd '.' | wc -c)
46-
anchor="${version//./}"
46+
47+
git tag "$version"
48+
git push origin "$version"
4749
4850
read -r -d '' notes <<EOF || true
4951
## ✨ Bonchi ${version} 🌳
5052
A git worktree manager.
5153
5254
**Rubygems**: https://rubygems.org/gems/bonchi/versions/${version}
53-
**Changelog**: https://github.com/eval/bonchi/blob/main/CHANGELOG.md#${anchor}
55+
**Changelog**: https://github.com/eval/bonchi/blob/main/CHANGELOG.md#${version//./}
5456
EOF
5557
56-
prerelease_flag=""
5758
if [[ "$dot_count" -gt 2 ]]; then
58-
gh release create "$version" --prerelease --verify-tag --generate-notes
59+
gh release create "$version" --prerelease --generate-notes
5960
else
60-
gh release create "$version" --verify-tag --generate-notes --notes "$notes"
61+
gh release create "$version" --generate-notes --notes "$notes"
6162
fi
6263
6364
env:
64-
# classic token (https://github.com/settings/tokens) with repo-scope
6565
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}

README.md

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -160,22 +160,11 @@ Using [mise](https://mise.jdx.dev/) for env-vars is recommended.
160160

161161
### Releasing
162162

163-
Create a signed git tag and push:
164-
165-
```bash
166-
# Regular release
167-
git tag -s 1.2.3 -m "Release 1.2.3"
168-
169-
# Prerelease
170-
git tag -s 1.2.3.rc1 -m "Release 1.2.3.rc1"
171-
172-
git push origin --tags
173-
174-
# then change version.rb for the next dev-cycle
175-
VERSION = "1.2.4.dev"
176-
```
177-
178-
CI will build, sign (Sigstore attestation), push to RubyGems, and create a GitHub release.
163+
1. Set the version in `lib/bonchi/version.rb` and commit
164+
2. Run the release workflow manually from GitHub Actions
165+
- Publishes to RubyGems (with Sigstore attestation)
166+
- Creates git tag and GitHub release after successful publish
167+
3. Update `version.rb` to the next dev version (e.g. `"1.2.4.dev"`)
179168

180169
## License
181170

0 commit comments

Comments
 (0)