ethos-gemkit 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -94
- data/README.md +35 -5
- data/UPGRADE.md +7 -0
- data/lib/ethos/gemkit/release.rb +1 -1
- data/lib/ethos/gemkit/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b4df86371c7d4ec7fff974c09607c9c9913619c43a346fbeb942b15e1f2cd459
|
|
4
|
+
data.tar.gz: 6714316c9084400d143c62eac48fc8396f8bc12341cf456a3b13926782d4dfae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ba5baf95b85294435d3cc4b833ca5a9279411a4678a39596b26208c397db544ff76e674fd90e9d2999908d602f90d41e919574818d101cd45b56830aa9658c0e
|
|
7
|
+
data.tar.gz: 035744fbe210f66bc5b02d4f1eceb10b0470afd8d18b1fdda6505fdefdd176242f00155ae36fd5b1c042bfb4c912e5fc1d1f82df179e59e622065fcd117a2a7c
|
data/CHANGELOG.md
CHANGED
|
@@ -5,145 +5,68 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [0.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
### Added
|
|
12
|
-
|
|
13
|
-
- support native private publishing and project setup
|
|
8
|
+
## [0.3.0] - 2026-11-05
|
|
14
9
|
|
|
10
|
+
### Changed
|
|
15
11
|
|
|
12
|
+
- remove unused package and changelog entries
|
|
13
|
+
- provision consumer dependencies before checks
|
|
16
14
|
|
|
15
|
+
## [0.2.1] - 2026-11-05
|
|
17
16
|
|
|
18
17
|
### Documentation
|
|
19
18
|
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
- clarify current setup
|
|
20
|
+
- document checksums for frozen installs
|
|
21
|
+
- distinguish source fixes from workflow retries
|
|
26
22
|
|
|
27
23
|
### Fixed
|
|
28
24
|
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
## [0.1.0] - 2026-11-04
|
|
25
|
+
- preserve checksums during preparation
|
|
34
26
|
|
|
27
|
+
## [0.2.0] - 2026-11-04
|
|
35
28
|
|
|
36
29
|
### Added
|
|
37
30
|
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
- enforce the shared commit message policy
|
|
41
|
-
|
|
42
|
-
- centralize verified gem release orchestration
|
|
43
|
-
|
|
44
|
-
- prepare release PRs and publish after merging
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
### Changed
|
|
50
|
-
|
|
51
|
-
- exercise standalone core operations
|
|
52
|
-
|
|
53
|
-
- expose shared commit message validation
|
|
54
|
-
|
|
55
|
-
- replace release orchestration with native workflows
|
|
56
|
-
|
|
57
|
-
- remove the redundant bootstrap fixture
|
|
58
|
-
|
|
31
|
+
- support native private publishing and project setup
|
|
59
32
|
|
|
33
|
+
### Documentation
|
|
60
34
|
|
|
35
|
+
- document the published Gemkit release
|
|
36
|
+
- clarify per-gem publishers and safe retries
|
|
61
37
|
|
|
62
38
|
### Fixed
|
|
63
39
|
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
- disable inherited publishing tasks
|
|
67
|
-
|
|
68
|
-
- complete checksums for frozen hosted installs
|
|
69
|
-
|
|
70
|
-
- declare and isolate framework fixture dependencies
|
|
71
|
-
|
|
72
|
-
- bind package files to the verified tag tree
|
|
73
|
-
|
|
74
|
-
- expose scoped bundle executables to subprocesses
|
|
75
|
-
|
|
76
|
-
- retain confirmed publication evidence for recovery
|
|
77
|
-
|
|
78
|
-
- scope source fetch authentication to GitHub
|
|
79
|
-
|
|
80
|
-
- select the current artifact run explicitly
|
|
81
|
-
|
|
82
|
-
- prevent implicit pushes of unrelated tags
|
|
83
|
-
|
|
84
|
-
- bootstrap Bundler for plain rake commands
|
|
85
|
-
|
|
86
|
-
- keep Bundler's CI cache out of release source
|
|
87
|
-
|
|
88
|
-
- recycle fully merged local release branches
|
|
89
|
-
|
|
90
|
-
|
|
40
|
+
- show preparation progress and live command output
|
|
91
41
|
|
|
92
42
|
## [0.1.0] - 2026-11-04
|
|
93
43
|
|
|
94
|
-
|
|
95
44
|
### Added
|
|
96
45
|
|
|
97
46
|
- bootstrap shared gem development contracts
|
|
98
|
-
|
|
99
47
|
- enforce the shared commit message policy
|
|
100
|
-
|
|
101
48
|
- centralize verified gem release orchestration
|
|
102
|
-
|
|
103
49
|
- prepare release PRs and publish after merging
|
|
104
50
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
51
|
### Changed
|
|
109
52
|
|
|
110
53
|
- exercise standalone core operations
|
|
111
|
-
|
|
112
54
|
- expose shared commit message validation
|
|
113
|
-
|
|
114
55
|
- replace release orchestration with native workflows
|
|
115
|
-
|
|
116
56
|
- remove the redundant bootstrap fixture
|
|
117
57
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
58
|
### Fixed
|
|
122
59
|
|
|
123
60
|
- lock toolkit development to patched Active Support
|
|
124
|
-
|
|
125
61
|
- disable inherited publishing tasks
|
|
126
|
-
|
|
127
62
|
- complete checksums for frozen hosted installs
|
|
128
|
-
|
|
129
63
|
- declare and isolate framework fixture dependencies
|
|
130
|
-
|
|
131
64
|
- bind package files to the verified tag tree
|
|
132
|
-
|
|
133
65
|
- expose scoped bundle executables to subprocesses
|
|
134
|
-
|
|
135
66
|
- retain confirmed publication evidence for recovery
|
|
136
|
-
|
|
137
67
|
- scope source fetch authentication to GitHub
|
|
138
|
-
|
|
139
68
|
- select the current artifact run explicitly
|
|
140
|
-
|
|
141
69
|
- prevent implicit pushes of unrelated tags
|
|
142
|
-
|
|
143
70
|
- bootstrap Bundler for plain rake commands
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
# Changelog
|
|
148
|
-
|
|
149
|
-
Changes are generated from Conventional Commits when preparing a release.
|
|
71
|
+
- keep Bundler's CI cache out of release source
|
|
72
|
+
- recycle fully merged local release branches
|
data/README.md
CHANGED
|
@@ -7,14 +7,14 @@ belongs in the development/test Gemfile, never a consumer's runtime gemspec.
|
|
|
7
7
|
Install the published gem in the development/test Gemfile:
|
|
8
8
|
|
|
9
9
|
```ruby
|
|
10
|
-
gem "ethos-gemkit", "0.2.
|
|
10
|
+
gem "ethos-gemkit", "0.2.1", group: [:development, :test], require: false
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
Pin workflow callers to the full commit behind the installed Gemkit release tag.
|
|
14
14
|
Resolve that commit with:
|
|
15
15
|
|
|
16
16
|
```sh
|
|
17
|
-
git ls-remote https://github.com/ethos-link/ethos-gemkit.git 'refs/tags/v0.2.
|
|
17
|
+
git ls-remote https://github.com/ethos-link/ethos-gemkit.git 'refs/tags/v0.2.1^{}'
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
Upgrade the gem version and workflow pins together. Consumer READMEs should cover
|
|
@@ -53,6 +53,26 @@ release tasks while a repository is adopting the toolkit.
|
|
|
53
53
|
`bundle exec rake verify` runs lint, registered checks, a disposable native gem
|
|
54
54
|
build, and git-cliff validation.
|
|
55
55
|
|
|
56
|
+
Ordinary pull requests call `.github/workflows/consumer.yml`. Its optional
|
|
57
|
+
`build-setup` input provisions system dependencies before verification, such as
|
|
58
|
+
browser packages or a disposable database. Keep the caller's permissions at
|
|
59
|
+
`contents: read`; this workflow does not need publishing credentials.
|
|
60
|
+
|
|
61
|
+
## Private gem access
|
|
62
|
+
|
|
63
|
+
To install private gems locally, use a GitHub personal access token (classic)
|
|
64
|
+
with `read:packages` and access to the package. Configure Bundler once, replacing
|
|
65
|
+
`USERNAME` and `TOKEN` with your credentials:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
bundle config set --global https://rubygems.pkg.github.com/ethos-link USERNAME:TOKEN
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Keep credentials out of Gemfiles. Each gem documents its scoped source block.
|
|
72
|
+
Actions publishing uses `GITHUB_TOKEN`; installing another private repository's
|
|
73
|
+
package requires that repository to grant the workflow access or an explicit
|
|
74
|
+
token. See [GitHub's registry guide](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-rubygems-registry).
|
|
75
|
+
|
|
56
76
|
## Releasing a gem
|
|
57
77
|
|
|
58
78
|
**Run `release:prepare` from clean, up-to-date `main`.** It creates the conventional
|
|
@@ -62,6 +82,9 @@ Ordinary feature/fix PRs run verification; only a release PR starts publication.
|
|
|
62
82
|
|
|
63
83
|
### One-time prerequisites
|
|
64
84
|
|
|
85
|
+
- Commit `Gemfile.lock`. Before its first commit, run
|
|
86
|
+
`bundle lock --add-checksums`; frozen CI installs reject empty registry
|
|
87
|
+
checksum entries, even when the gems are already installed locally.
|
|
65
88
|
- Ignore `/.bundle/`, `/vendor/bundle/` and `/pkg/` in `.gitignore`. The shared
|
|
66
89
|
workflows use Ruby setup's native `vendor/bundle` cache; generated files must
|
|
67
90
|
leave the release checkout clean.
|
|
@@ -146,8 +169,8 @@ setup.
|
|
|
146
169
|
The task prints each step and streams command output as it runs. It checks the
|
|
147
170
|
working tree, canonical origin, current main, installed hooks and target tag.
|
|
148
171
|
It creates `chore/release-vX.Y.Z`, updates the version and
|
|
149
|
-
changelog, runs `bundle lock --
|
|
150
|
-
three metadata files with hooks enabled, pushes the branch, and opens a
|
|
172
|
+
changelog, runs `bundle lock --add-checksums` and the full `rake verify`, then
|
|
173
|
+
commits the three metadata files with hooks enabled, pushes the branch, and opens a
|
|
151
174
|
`chore(release): prepare vX.Y.Z` PR. Main stays unchanged. You can also start on
|
|
152
175
|
that exact pre-created release branch if its HEAD still equals `origin/main`.
|
|
153
176
|
When starting from main, a leftover local release branch is recreated only if
|
|
@@ -200,7 +223,14 @@ workflow run. This reuses its verified artifact and existing tag; do not run
|
|
|
200
223
|
gh run rerun RUN_ID --repo OWNER/REPOSITORY --failed
|
|
201
224
|
```
|
|
202
225
|
|
|
203
|
-
|
|
226
|
+
If a failed build needs a source fix and no tag or upload exists, keep the
|
|
227
|
+
prepared version and notes. Update its `chore/release-vX.Y.Z` branch from main,
|
|
228
|
+
commit the fix, run verification and open a replacement release PR. Merge that
|
|
229
|
+
PR to run the corrected source. The original run stays pinned to its original
|
|
230
|
+
commit; rerunning it cannot pick up a source fix. Do not replace an existing tag
|
|
231
|
+
or reuse a version that was already published.
|
|
232
|
+
|
|
233
|
+
For transient CI failures, retry **failed jobs in the original run** within GitHub's 30-day
|
|
204
234
|
retry window. Artifacts are retained for 90 days. A failed tag step can reuse an
|
|
205
235
|
existing annotated tag only when it points to the same verified commit. A failed
|
|
206
236
|
notes job reuses the original artifact without uploading again. Ambiguous uploads,
|
data/UPGRADE.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Upgrading Gemkit
|
|
2
2
|
|
|
3
|
+
## 0.2.1
|
|
4
|
+
|
|
5
|
+
Release preparation now fetches registry checksums with Bundler instead of
|
|
6
|
+
using local-only resolution. Network access to configured gem sources is
|
|
7
|
+
required. Existing compatible dependency versions stay locked; complete
|
|
8
|
+
checksums prevent frozen CI installs from rejecting local cache metadata.
|
|
9
|
+
|
|
3
10
|
## 0.2.0
|
|
4
11
|
|
|
5
12
|
Update the gem version and pin each workflow caller to the commit behind the
|
data/lib/ethos/gemkit/release.rb
CHANGED
|
@@ -69,7 +69,7 @@ module Ethos
|
|
|
69
69
|
File.write(file, text.sub(literal, %(VERSION = "#{target}")))
|
|
70
70
|
run("git-cliff", "--config", "cliff.toml", "--unreleased", "--tag", "v#{target}", "--prepend", "CHANGELOG.md", live: true)
|
|
71
71
|
progress "Updating Gemfile.lock"
|
|
72
|
-
run("bundle", "lock", "--
|
|
72
|
+
run("bundle", "lock", "--add-checksums", live: true)
|
|
73
73
|
progress "Running verification (lint, tests, package, changelog)"
|
|
74
74
|
run("bundle", "exec", "rake", "verify", live: true)
|
|
75
75
|
files = [@config.data.fetch("version_file"), "CHANGELOG.md", "Gemfile.lock"]
|
data/lib/ethos/gemkit/version.rb
CHANGED