guardian-ci 2026.10.28.182143

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5ad09001bf7bb6524936b56a6382523f90ea430d4022aab240bda6d01e147575
4
+ data.tar.gz: 4556cbc10f2e9e7916d3ba3fd4314c2752535c915fbd23d539e76e37f29a970a
5
+ SHA512:
6
+ metadata.gz: 99d71d4aabb2dfdec661a4192d751d4705ca2a7aa8b753114db73a3fe703ed1ccd74c1d94a7131fe09b9701ecf410b7dbc0c93b8b7cb556232a5827b7d9e513e
7
+ data.tar.gz: 46df525921a8075935822e0e3a317237260c6ef4d80c8864d3d4b20c3a269cb7838c4615c5eb5f3e219dbe29040904a7b8726b13fd09f229b93e926b70c4fc1a
data/.fluence-ci.yml ADDED
@@ -0,0 +1,5 @@
1
+ # Per-project options for the fluence-eu/ci-workflows@v7 reusables.
2
+ # Full key schema: https://github.com/fluence-eu/ci-workflows#per-project-configuration-fluence-ciyml
3
+ release:
4
+ gem_specs: guardian-ci
5
+ version: date
data/.yardopts ADDED
@@ -0,0 +1,11 @@
1
+ --markup markdown
2
+ --no-private
3
+ --hide-api private
4
+ --output-dir doc
5
+ --readme README.md
6
+ --template-path yard-templates
7
+ lib/**/*.rb
8
+ -
9
+ CHANGELOG.md
10
+ CONTRIBUTING.md
11
+ LICENSE.txt
data/.yardstick.yml ADDED
@@ -0,0 +1,34 @@
1
+ ---
2
+ # yardstick quality checks for the gem's public API.
3
+ # @api tags document the stability contract: public methods are part
4
+ # of SemVer, private ones may change without notice.
5
+ threshold: 95
6
+ require_exact_threshold: false
7
+ verbose: true
8
+ path:
9
+ - 'lib/**/*.rb'
10
+ rules:
11
+ ApiTag::Presence:
12
+ enabled: true
13
+ exclude: []
14
+ ApiTag::Inclusion:
15
+ enabled: true
16
+ exclude: []
17
+ ApiTag::ProtectedMethod:
18
+ enabled: false
19
+ ApiTag::PrivateMethod:
20
+ enabled: false
21
+ ExampleTag:
22
+ enabled: false
23
+ ReturnTag:
24
+ enabled: true
25
+ exclude: []
26
+ Summary::Presence:
27
+ enabled: true
28
+ exclude: []
29
+ Summary::Length:
30
+ enabled: false
31
+ Summary::Delimiter:
32
+ enabled: false
33
+ Summary::SingleLine:
34
+ enabled: false
data/Appraisals ADDED
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Generate per-Rails-version Gemfiles for CI. Regenerate with:
4
+ # bundle exec appraisal install
5
+ #
6
+ # The set of Rails versions tested here must stay in sync with the
7
+ # matrix in .github/workflows/main.yml. Older Rails minors stay in
8
+ # scope as long as Rails::Generators::Base remains source-stable.
9
+
10
+ appraise 'rails-7.0' do
11
+ gem 'rails', '~> 7.0.0'
12
+ end
13
+
14
+ appraise 'rails-7.1' do
15
+ gem 'rails', '~> 7.1.0'
16
+ end
17
+
18
+ appraise 'rails-7.2' do
19
+ gem 'rails', '~> 7.2.0'
20
+ end
21
+
22
+ appraise 'rails-8.0' do
23
+ gem 'rails', '~> 8.0.0'
24
+ end
25
+
26
+ appraise 'rails-8.1' do
27
+ gem 'rails', '~> 8.1.0'
28
+ end
data/CHANGELOG.md ADDED
@@ -0,0 +1,159 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ ## [2026.10.28.182143] - 2026-10-28
5
+
6
+ ### Build
7
+
8
+ - build(gemspec): drop allowed_push_host
9
+
10
+ ### CI
11
+
12
+ - ci: add the Claude PR review workflow
13
+ - ci: release dated versions
14
+ - ci: bump workflows to ci-workflows@v7
15
+ - ci: publish releases to rubygems.org
16
+
17
+ ### Other
18
+
19
+ - chore(gemspec): move the Thor comment above the thor dependency
20
+
21
+ ### Refactored
22
+
23
+ - refactor: drop Fluence branding from the tool's own wording
24
+ - refactor!: write report-mode artefacts under tmp/guardian-report
25
+ - refactor(cli)!: rename fluence-ci executable and generator to guardian-ci
26
+ - refactor!: rename gem to guardian-ci under Guardian::Ci
27
+
28
+ ## [0.6.1] - 2026-10-05
29
+
30
+ ### Build
31
+
32
+ - build: raise brakeman, reek, rubocop and rubocop-rspec floors
33
+ - build!: require Ruby >= 3.3
34
+
35
+ ### CI
36
+
37
+ - ci: bump actions/checkout to v7
38
+ - ci: deploy the YARD docs to GitHub Pages
39
+ - ci: forward the release bot key on codequality-pr
40
+ - ci: keep codequality-pr without the release bot key
41
+ - ci: forward the release bot key on codequality-pr
42
+ - ci: migrate to ci-workflows@v6 config file
43
+ - ci(workflows): bump ci-workflows pins from @v2 to @v5 + drop github.actor
44
+ - ci: bump ci-workflows to @v5 (multi-gem-capable reusables)
45
+
46
+ ### Documentation
47
+
48
+ - docs: align the YARD config with the gems family
49
+ - docs: refresh CONTRIBUTING.md after ci-workflows@v5 migration
50
+ - docs(readme): split SimpleCov snippet into rails/gem variants
51
+ - docs(readme): document .yardopts, .yardstick.yml and cliff.toml
52
+ - docs(readme): document SimpleCov spec_helper snippet
53
+
54
+ ### Other
55
+
56
+ - chore: migrate to ci-workflows v4 (FLUENCE_*_BOT_* naming)
57
+
58
+ ## [0.6.0] - 2026-04-29
59
+
60
+ ### Added
61
+
62
+ - feat(docs): add --build mode for HTML site generation
63
+
64
+ ### Refactored
65
+
66
+ - refactor(cli): extract dynamic command registration into class methods
67
+
68
+ ### Style
69
+
70
+ - style(cli): use if/else block instead of multi-line ternary
71
+
72
+ ## [0.5.1] - 2026-04-28
73
+
74
+ ### Added
75
+
76
+ - feat(cli): forward all Steps kwargs as Thor options, not just --report
77
+
78
+ ### Documentation
79
+
80
+ - docs(readme): document v0.5 CLI surface (--report, per-group commands)
81
+
82
+ ## [0.5.0] - 2026-04-28
83
+
84
+ ### Added
85
+
86
+ - feat(steps): align codequality + docs report mode with ci-workflows v3
87
+
88
+ ### CI
89
+
90
+ - ci(main): gate matrix steps with if:, not job-level
91
+
92
+ ### Refactored
93
+
94
+ - refactor(yardstick_runner): drop unused parity helpers
95
+
96
+ ### Tests
97
+
98
+ - test(yardstick_runner): cover happy path, threshold failure, missing yml
99
+
100
+ ## [0.4.0] - 2026-04-28
101
+
102
+ ### Added
103
+
104
+ - feat(steps,cli): expose per-group commands with --report flag
105
+ - feat(generator): bin/fluence-ci supports per-group sub-commands
106
+ - feat(generator): drop config/ci.rb inject in favor of bin/fluence-ci
107
+
108
+ ### CI
109
+
110
+ - ci: skip rubocop and main matrix on release PRs
111
+
112
+ ## [0.3.0] - 2026-04-28
113
+
114
+ ### Added
115
+
116
+ - feat: ship install generator, fluence-ci CLI, and Steps/Runner catalog (Phase 2)
117
+
118
+ ### CI
119
+
120
+ - ci: activate consumer-style quality gates and 100% YARD coverage
121
+
122
+ ### Tests
123
+
124
+ - test: add multi-Rails matrix and integration specs for CLI + generator
125
+ - test: configure SimpleCov + Undercover formatter in spec_helper
126
+
127
+ ## [0.2.0] - 2026-04-28
128
+
129
+ ### Build
130
+
131
+ - build: add benchmark runtime dep for undercover on Ruby 3.5+
132
+
133
+ ### CI
134
+
135
+ - ci: grant `packages: read` on @v2 wrappers (fix startup_failure)
136
+ - ci: add workflow_dispatch to publish.yml for manual republish
137
+ - ci: forward RELEASE_APP_PRIVATE_KEY to release.yml
138
+
139
+ ### Documentation
140
+
141
+ - docs: refresh README pins + add CONTRIBUTING.md
142
+
143
+ ## [0.1.1] - 2026-04-28
144
+
145
+ ### Other
146
+
147
+ - chore: add cliff.toml for changelog generation
148
+ - chore: pin remaining tool versions
149
+
150
+ ### Style
151
+
152
+ - style: convert string literals from double to single quotes
153
+
154
+ ## [0.1.0] - 2026-04-28
155
+
156
+ ### Other
157
+
158
+ - chore: initial commit
159
+
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,174 @@
1
+ # Contributing
2
+
3
+ Thanks for contributing! Here's how to get started:
4
+
5
+ 1. Open an issue to discuss the proposed change
6
+ 2. Create a branch from `main`
7
+ 3. Implement the change
8
+ 4. Make sure tests and linting pass
9
+ 5. Open a pull request targeting `main`
10
+
11
+ ---
12
+
13
+ ## Setup
14
+
15
+ ```bash
16
+ git clone git@github.com:fluence-eu/guardian-ci.git
17
+ cd guardian-ci
18
+ bin/setup
19
+ ```
20
+
21
+ Requires Ruby 3.3+.
22
+
23
+ ## Development
24
+
25
+ ```bash
26
+ bundle exec rspec # tests
27
+ bundle exec rubocop # linting
28
+ bundle exec rubocop -a # auto-fix linting
29
+ ```
30
+
31
+ This gem is mostly a gemspec — its job is to declare a curated set of dev-tool dependencies and ship them to consumers via a single Gemfile entry. There is no application code to write under `lib/` (yet — see Phase 2 in `README.md`). The bulk of contributions therefore land in `guardian-ci.gemspec`.
32
+
33
+ ### Bumping or adding a tool
34
+
35
+ 1. Edit `guardian-ci.gemspec` (`spec.add_dependency` lines).
36
+ 2. Run `bundle install` to verify the new constraint resolves.
37
+ 3. Run `gem build guardian-ci.gemspec` to confirm the gem still builds.
38
+ 4. Update the « What's included » table in `README.md` if pin or tool list changed.
39
+ 5. Open the PR.
40
+
41
+ After merge, cut a release via the standard flow (see below). Consumers pick up the new pin with `bundle update guardian-ci`.
42
+
43
+ ### Interactive console
44
+
45
+ ```bash
46
+ bin/console
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Commit Convention
52
+
53
+ This project follows [Conventional Commits](https://www.conventionalcommits.org/).
54
+
55
+ ### Format
56
+
57
+ ```
58
+ <type>(<scope>): <description>
59
+
60
+ [body]
61
+
62
+ [footer(s)]
63
+ ```
64
+
65
+ ### Types
66
+
67
+ | Type | Description |
68
+ |---|---|
69
+ | `feat` | New feature |
70
+ | `fix` | Bug fix |
71
+ | `docs` | Documentation only changes |
72
+ | `style` | Formatting changes (whitespace, commas, etc.) — no logic |
73
+ | `refactor` | Code change that neither fixes a bug nor adds a feature |
74
+ | `perf` | Performance improvement |
75
+ | `test` | Adding or updating tests |
76
+ | `build` | Changes to build system or dependencies |
77
+ | `ci` | CI/CD configuration changes |
78
+ | `chore` | Other changes that don't modify source or tests |
79
+ | `revert` | Revert a previous commit |
80
+
81
+ ### Scope
82
+
83
+ Optional — indicates the area affected:
84
+
85
+ - `chore(gemspec): pin reek to ~> 6.6`
86
+ - `docs(readme): add migration example for Rails apps`
87
+ - `ci: bump release.yml to ci-workflows@v5`
88
+
89
+ ### Description
90
+
91
+ - Imperative mood ("add", not "adds" or "added")
92
+ - No capital letter at the start
93
+ - No period at the end
94
+ - Maximum 72 characters
95
+
96
+ ### Body (optional)
97
+
98
+ - Explains *why* — the diff already shows *what*
99
+ - Wrapped at 72 columns
100
+ - Separated from the description by a blank line
101
+
102
+ ### Footers (optional)
103
+
104
+ - `Refs #123` to reference an issue
105
+ - `BREAKING CHANGE: <description>` if the change is incompatible
106
+ - And/or a `BREAKING CHANGE:` footer in the body
107
+
108
+ ---
109
+
110
+ ## Pull Request Convention
111
+
112
+ ### PR Title
113
+
114
+ - Same format as commits: `<type>(<scope>): <description>`
115
+ - Under 72 characters
116
+
117
+ ### Rules
118
+
119
+ - One topic per PR — don't mix unrelated changes
120
+ - Run `bundle exec rspec` and `bundle exec rubocop` locally before pushing
121
+ - Never commit secrets or credentials
122
+ - Don't commit `Gemfile.lock` or `*.gem` build artifacts (both gitignored)
123
+
124
+ ---
125
+
126
+ ## Architecture
127
+
128
+ ```
129
+ guardian-ci.gemspec # The whole point of this gem — 13 add_dependency lines
130
+ lib/guardian/ci.rb # Module stub
131
+ lib/guardian/ci/version.rb # Dated version (written by release workflow)
132
+ cliff.toml # git-cliff config for CHANGELOG generation
133
+ .github/workflows/ # See « CI » below
134
+ ```
135
+
136
+ There is intentionally no production code under `lib/`. Phase 2 will add a Thor + Railtie generator (CLI + scaffolds) — until then, this gem ships only its gemspec dependencies.
137
+
138
+ ## Code Conventions
139
+
140
+ - `frozen_string_literal: true` on every Ruby file
141
+ - Strings: single quotes (unless interpolation is needed)
142
+ - RuboCop: no rule disabling without justification
143
+ - Version in `lib/guardian/ci/version.rb` — do not modify unless for an explicit release
144
+
145
+ ## CI
146
+
147
+ GitHub Actions workflows under `.github/workflows/`, all wired through `fluence-eu/ci-workflows@v7` reusables:
148
+
149
+ - **rubocop-pr.yml** — runs RuboCop on every PR, posts a sticky comment with offense delta vs `main`
150
+ - **rubocop-measure.yml** — establishes the `main` baseline (artifact `rubocop-report`)
151
+ - **prepare-release.yml** — manual dispatch opens a release PR versioned with the UTC dispatch time (`YYYY.MM.DD.HHMMSS`)
152
+ - **release.yml** — on merge of a release PR, creates the tag + GitHub Release
153
+ - **publish.yml** — on Release published, pushes the gem to GitHub Packages (also dispatchable manually with a `tag` input for republishing past versions)
154
+ - **publish-rubygems.yml** — on Release published, pushes the same gem to rubygems.org through trusted publishing (same manual `tag` dispatch)
155
+
156
+ The release App secret `FLUENCE_RELEASE_BOT_PRIVATE_KEY` is forwarded to `release.yml` so the GitHub Release is created with an App-issued token — required for the `publish.yml` chain to fire (see fluence-eu/ci-workflows#12 for the rationale).
157
+
158
+ ---
159
+
160
+ ## AI-Assisted Contributions
161
+
162
+ When using AI tools (Claude, Copilot, etc.) to generate commits or PRs:
163
+
164
+ - **Classify first** — determine if the change is critical, major, minor, or trivial
165
+ - **Focus on the "why"** — the diff already shows the "what"
166
+ - **Skip boilerplate** — don't add empty sections or placeholder text
167
+
168
+ The person opening the PR takes full responsibility for the code. Before submitting:
169
+
170
+ - [ ] I have read and understood every line of code in this PR
171
+ - [ ] I can explain why each change was made
172
+ - [ ] I have tested the changes locally
173
+
174
+ Do **not** add AI co-author lines (`Co-Authored-By`), "Generated with" footers, or any AI attribution in commits or PR descriptions.
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2026 Jonathan PHILIPPE
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.