my_api_client 2.0.0 → 2.1.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/.github/dependabot.yml +48 -0
- data/.github/workflows/ci.yml +29 -15
- data/.github/workflows/dependabot-auto-merge.yml +62 -10
- data/.github/workflows/release.yml +4 -2
- data/.github/workflows/rubocop_challenge.yml +4 -2
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/AGENTS.md +26 -5
- data/CHANGELOG.md +27 -0
- data/Dockerfile +1 -1
- data/Gemfile +3 -1
- data/Gemfile.lock +5 -11
- data/README.md +1 -1
- data/docs/runbooks/dependabot_pr_auto_merge.md +9 -0
- data/lib/my_api_client/version.rb +1 -1
- data/my_api/Gemfile.lock +124 -131
- data/my_api_client.gemspec +2 -2
- data/rails_app/rails_7.2/Dockerfile +1 -1
- data/rails_app/rails_7.2/Gemfile +1 -1
- data/rails_app/rails_7.2/Gemfile.lock +88 -85
- data/rails_app/rails_8.0/.ruby-version +1 -1
- data/rails_app/rails_8.0/Dockerfile +1 -1
- data/rails_app/rails_8.0/Gemfile +1 -1
- data/rails_app/rails_8.0/Gemfile.lock +80 -79
- data/rails_app/rails_8.1/.ruby-version +1 -1
- data/rails_app/rails_8.1/Dockerfile +1 -1
- data/rails_app/rails_8.1/Gemfile.lock +80 -79
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8c810e4644f4b3276f9be5b136b196040081204ffd2c1a4590d35f75f7267f37
|
|
4
|
+
data.tar.gz: a20a2ad006d18a8211ab056d760d9454f6883dcd6e4f88fcdcda38f6f9bb524b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3c6a1873fb33961931afccaee071ad8c2f734c1bcf3d29937274eae92cac18727a881edb00cd02890a6e7d566d1e8168b12a5cf8c5b124ef61aff27a960e9a50
|
|
7
|
+
data.tar.gz: c78a1a59b9f50c89b4489a23fd6fb501727f4e412b184acf5ae9f8be6fe7d1a93a621f1620bc67a25b20193c7a9f766b9d0fdc9642b0e488d45c3a1eeca6b81a
|
data/.github/dependabot.yml
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
version: 2
|
|
2
|
+
# cooldown: defer version bumps until a release has aged, reducing the risk of
|
|
3
|
+
# adopting a compromised or broken version right after publication. Longer for
|
|
4
|
+
# higher-impact bumps (major > minor > patch).
|
|
2
5
|
updates:
|
|
3
6
|
- package-ecosystem: bundler
|
|
4
7
|
directory: "/"
|
|
@@ -6,6 +9,11 @@ updates:
|
|
|
6
9
|
interval: weekly
|
|
7
10
|
time: "08:00"
|
|
8
11
|
timezone: Asia/Tokyo
|
|
12
|
+
cooldown:
|
|
13
|
+
default-days: 7
|
|
14
|
+
semver-major-days: 14
|
|
15
|
+
semver-minor-days: 7
|
|
16
|
+
semver-patch-days: 3
|
|
9
17
|
open-pull-requests-limit: 10
|
|
10
18
|
assignees:
|
|
11
19
|
- ryz310
|
|
@@ -21,6 +29,11 @@ updates:
|
|
|
21
29
|
interval: weekly
|
|
22
30
|
time: "08:00"
|
|
23
31
|
timezone: Asia/Tokyo
|
|
32
|
+
cooldown:
|
|
33
|
+
default-days: 7
|
|
34
|
+
semver-major-days: 14
|
|
35
|
+
semver-minor-days: 7
|
|
36
|
+
semver-patch-days: 3
|
|
24
37
|
open-pull-requests-limit: 10
|
|
25
38
|
assignees:
|
|
26
39
|
- ryz310
|
|
@@ -32,6 +45,11 @@ updates:
|
|
|
32
45
|
interval: weekly
|
|
33
46
|
time: "08:00"
|
|
34
47
|
timezone: Asia/Tokyo
|
|
48
|
+
cooldown:
|
|
49
|
+
default-days: 7
|
|
50
|
+
semver-major-days: 14
|
|
51
|
+
semver-minor-days: 7
|
|
52
|
+
semver-patch-days: 3
|
|
35
53
|
open-pull-requests-limit: 10
|
|
36
54
|
assignees:
|
|
37
55
|
- ryz310
|
|
@@ -43,6 +61,11 @@ updates:
|
|
|
43
61
|
interval: weekly
|
|
44
62
|
time: "08:00"
|
|
45
63
|
timezone: Asia/Tokyo
|
|
64
|
+
cooldown:
|
|
65
|
+
default-days: 7
|
|
66
|
+
semver-major-days: 14
|
|
67
|
+
semver-minor-days: 7
|
|
68
|
+
semver-patch-days: 3
|
|
46
69
|
open-pull-requests-limit: 10
|
|
47
70
|
assignees:
|
|
48
71
|
- ryz310
|
|
@@ -54,6 +77,11 @@ updates:
|
|
|
54
77
|
interval: weekly
|
|
55
78
|
time: "08:00"
|
|
56
79
|
timezone: Asia/Tokyo
|
|
80
|
+
cooldown:
|
|
81
|
+
default-days: 7
|
|
82
|
+
semver-major-days: 14
|
|
83
|
+
semver-minor-days: 7
|
|
84
|
+
semver-patch-days: 3
|
|
57
85
|
open-pull-requests-limit: 10
|
|
58
86
|
assignees:
|
|
59
87
|
- ryz310
|
|
@@ -65,6 +93,11 @@ updates:
|
|
|
65
93
|
interval: weekly
|
|
66
94
|
time: "08:00"
|
|
67
95
|
timezone: Asia/Tokyo
|
|
96
|
+
cooldown:
|
|
97
|
+
default-days: 7
|
|
98
|
+
semver-major-days: 14
|
|
99
|
+
semver-minor-days: 7
|
|
100
|
+
semver-patch-days: 3
|
|
68
101
|
open-pull-requests-limit: 10
|
|
69
102
|
assignees:
|
|
70
103
|
- ryz310
|
|
@@ -76,6 +109,11 @@ updates:
|
|
|
76
109
|
interval: weekly
|
|
77
110
|
time: "08:00"
|
|
78
111
|
timezone: Asia/Tokyo
|
|
112
|
+
cooldown:
|
|
113
|
+
default-days: 7
|
|
114
|
+
semver-major-days: 14
|
|
115
|
+
semver-minor-days: 7
|
|
116
|
+
semver-patch-days: 3
|
|
79
117
|
open-pull-requests-limit: 10
|
|
80
118
|
assignees:
|
|
81
119
|
- ryz310
|
|
@@ -88,6 +126,11 @@ updates:
|
|
|
88
126
|
day: monday
|
|
89
127
|
time: "08:00"
|
|
90
128
|
timezone: Asia/Tokyo
|
|
129
|
+
cooldown:
|
|
130
|
+
default-days: 7
|
|
131
|
+
semver-major-days: 14
|
|
132
|
+
semver-minor-days: 7
|
|
133
|
+
semver-patch-days: 3
|
|
91
134
|
open-pull-requests-limit: 10
|
|
92
135
|
assignees:
|
|
93
136
|
- ryz310
|
|
@@ -100,6 +143,11 @@ updates:
|
|
|
100
143
|
day: monday
|
|
101
144
|
time: "08:00"
|
|
102
145
|
timezone: Asia/Tokyo
|
|
146
|
+
cooldown:
|
|
147
|
+
default-days: 7
|
|
148
|
+
semver-major-days: 14
|
|
149
|
+
semver-minor-days: 7
|
|
150
|
+
semver-patch-days: 3
|
|
103
151
|
open-pull-requests-limit: 10
|
|
104
152
|
assignees:
|
|
105
153
|
- ryz310
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
strategy:
|
|
19
19
|
fail-fast: false
|
|
20
20
|
matrix:
|
|
21
|
-
ruby_version: ['3.
|
|
21
|
+
ruby_version: ['3.3', '3.4', '4.0']
|
|
22
22
|
rails_version: ['7.2', '8.0', '8.1']
|
|
23
23
|
bundler_option:
|
|
24
24
|
- name: with_integrations
|
|
@@ -28,10 +28,12 @@ jobs:
|
|
|
28
28
|
with: ""
|
|
29
29
|
without: integrations
|
|
30
30
|
steps:
|
|
31
|
-
- uses: actions/checkout@
|
|
31
|
+
- uses: actions/checkout@v7
|
|
32
|
+
with:
|
|
33
|
+
persist-credentials: false
|
|
32
34
|
|
|
33
35
|
- name: Set up Ruby ${{ matrix.ruby_version }}
|
|
34
|
-
uses: ruby/setup-ruby@v1
|
|
36
|
+
uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
35
37
|
with:
|
|
36
38
|
ruby-version: ${{ matrix.ruby_version }}
|
|
37
39
|
bundler-cache: false
|
|
@@ -92,16 +94,18 @@ jobs:
|
|
|
92
94
|
strategy:
|
|
93
95
|
fail-fast: false
|
|
94
96
|
matrix:
|
|
95
|
-
ruby_version: ['3.
|
|
97
|
+
ruby_version: ['3.3', '3.4', '4.0']
|
|
96
98
|
rails_version: ['7.2', '8.0', '8.1']
|
|
97
99
|
defaults:
|
|
98
100
|
run:
|
|
99
101
|
working-directory: rails_app/rails_${{ matrix.rails_version }}
|
|
100
102
|
steps:
|
|
101
|
-
- uses: actions/checkout@
|
|
103
|
+
- uses: actions/checkout@v7
|
|
104
|
+
with:
|
|
105
|
+
persist-credentials: false
|
|
102
106
|
|
|
103
107
|
- name: Set up Ruby ${{ matrix.ruby_version }}
|
|
104
|
-
uses: ruby/setup-ruby@v1
|
|
108
|
+
uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
105
109
|
with:
|
|
106
110
|
ruby-version: ${{ matrix.ruby_version }}
|
|
107
111
|
bundler-cache: false
|
|
@@ -141,7 +145,9 @@ jobs:
|
|
|
141
145
|
name: integration_api_via_docker_compose
|
|
142
146
|
runs-on: ubuntu-latest
|
|
143
147
|
steps:
|
|
144
|
-
- uses: actions/checkout@
|
|
148
|
+
- uses: actions/checkout@v7
|
|
149
|
+
with:
|
|
150
|
+
persist-credentials: false
|
|
145
151
|
|
|
146
152
|
- name: Build and start my_api
|
|
147
153
|
run: docker compose up -d --build my_api
|
|
@@ -184,7 +190,9 @@ jobs:
|
|
|
184
190
|
name: my_api_request_specs_via_docker_compose
|
|
185
191
|
runs-on: ubuntu-latest
|
|
186
192
|
steps:
|
|
187
|
-
- uses: actions/checkout@
|
|
193
|
+
- uses: actions/checkout@v7
|
|
194
|
+
with:
|
|
195
|
+
persist-credentials: false
|
|
188
196
|
|
|
189
197
|
- name: Build and start my_api
|
|
190
198
|
run: docker compose up -d --build my_api
|
|
@@ -220,10 +228,12 @@ jobs:
|
|
|
220
228
|
rubocop:
|
|
221
229
|
runs-on: ubuntu-latest
|
|
222
230
|
steps:
|
|
223
|
-
- uses: actions/checkout@
|
|
231
|
+
- uses: actions/checkout@v7
|
|
232
|
+
with:
|
|
233
|
+
persist-credentials: false
|
|
224
234
|
|
|
225
235
|
- name: Set up Ruby
|
|
226
|
-
uses: ruby/setup-ruby@v1
|
|
236
|
+
uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
227
237
|
with:
|
|
228
238
|
ruby-version: '4.0'
|
|
229
239
|
bundler-cache: false
|
|
@@ -240,10 +250,12 @@ jobs:
|
|
|
240
250
|
yardoc:
|
|
241
251
|
runs-on: ubuntu-latest
|
|
242
252
|
steps:
|
|
243
|
-
- uses: actions/checkout@
|
|
253
|
+
- uses: actions/checkout@v7
|
|
254
|
+
with:
|
|
255
|
+
persist-credentials: false
|
|
244
256
|
|
|
245
257
|
- name: Set up Ruby
|
|
246
|
-
uses: ruby/setup-ruby@v1
|
|
258
|
+
uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
247
259
|
with:
|
|
248
260
|
ruby-version: '4.0'
|
|
249
261
|
bundler-cache: false
|
|
@@ -279,10 +291,12 @@ jobs:
|
|
|
279
291
|
env:
|
|
280
292
|
QLTY_COVERAGE_TOKEN: ${{ secrets.QLTY_COVERAGE_TOKEN }}
|
|
281
293
|
steps:
|
|
282
|
-
- uses: actions/checkout@
|
|
294
|
+
- uses: actions/checkout@v7
|
|
295
|
+
with:
|
|
296
|
+
persist-credentials: false
|
|
283
297
|
|
|
284
298
|
- name: Set up Ruby
|
|
285
|
-
uses: ruby/setup-ruby@v1
|
|
299
|
+
uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
286
300
|
with:
|
|
287
301
|
ruby-version: '4.0'
|
|
288
302
|
bundler-cache: false
|
|
@@ -323,7 +337,7 @@ jobs:
|
|
|
323
337
|
|
|
324
338
|
- name: Upload coverage to Qlty
|
|
325
339
|
if: ${{ env.QLTY_COVERAGE_TOKEN != '' && hashFiles('coverage/coverage.json') != '' }}
|
|
326
|
-
uses: qltysh/qlty-action/coverage@v2
|
|
340
|
+
uses: qltysh/qlty-action/coverage@08a0a862c159eae9b9003081da6663d96efef637 # v2.3.0
|
|
327
341
|
with:
|
|
328
342
|
token: ${{ env.QLTY_COVERAGE_TOKEN }}
|
|
329
343
|
files: coverage/coverage.json
|
|
@@ -1,43 +1,95 @@
|
|
|
1
1
|
name: Dependabot Auto Merge
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
|
|
4
|
+
pull_request:
|
|
5
5
|
types:
|
|
6
6
|
- opened
|
|
7
7
|
- reopened
|
|
8
8
|
- synchronize
|
|
9
9
|
|
|
10
|
-
permissions:
|
|
11
|
-
contents: write
|
|
12
|
-
pull-requests: write
|
|
10
|
+
permissions: {}
|
|
13
11
|
|
|
14
12
|
jobs:
|
|
15
13
|
enable-automerge-bundler:
|
|
16
|
-
if: ${{ github.
|
|
14
|
+
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
|
|
17
15
|
runs-on: ubuntu-latest
|
|
16
|
+
permissions:
|
|
17
|
+
contents: write
|
|
18
|
+
pull-requests: write
|
|
18
19
|
|
|
19
20
|
steps:
|
|
20
21
|
- name: Fetch Dependabot metadata
|
|
21
22
|
id: metadata
|
|
22
|
-
uses: dependabot/fetch-metadata@
|
|
23
|
+
uses: dependabot/fetch-metadata@v3
|
|
23
24
|
with:
|
|
24
25
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
26
|
|
|
26
|
-
- name:
|
|
27
|
-
|
|
27
|
+
- name: Validate bundler update safety
|
|
28
|
+
id: guard
|
|
29
|
+
if: ${{ steps.metadata.outputs.package-ecosystem == 'bundler' }}
|
|
30
|
+
env:
|
|
31
|
+
HEAD_REF: ${{ github.event.pull_request.head.ref }}
|
|
32
|
+
UPDATE_TYPE: ${{ steps.metadata.outputs.update-type }}
|
|
33
|
+
DEPENDENCY_TYPE: ${{ steps.metadata.outputs.dependency-type }}
|
|
34
|
+
DEPENDENCY_NAME: ${{ steps.metadata.outputs.dependency-name }}
|
|
35
|
+
DEPENDENCY_NAMES: ${{ steps.metadata.outputs.dependency-names }}
|
|
36
|
+
run: |
|
|
37
|
+
set -euo pipefail
|
|
38
|
+
|
|
39
|
+
safe=false
|
|
40
|
+
|
|
41
|
+
deps="$DEPENDENCY_NAMES"
|
|
42
|
+
if [[ -z "$deps" ]]; then
|
|
43
|
+
deps="$DEPENDENCY_NAME"
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
rails_involved=false
|
|
47
|
+
while IFS= read -r dep; do
|
|
48
|
+
dep="$(echo "$dep" | xargs)"
|
|
49
|
+
[[ -z "$dep" ]] && continue
|
|
50
|
+
if [[ "$dep" == "rails" ]]; then
|
|
51
|
+
rails_involved=true
|
|
52
|
+
fi
|
|
53
|
+
done < <(echo "$deps" | tr ',' '\n')
|
|
54
|
+
|
|
55
|
+
if [[ "$HEAD_REF" == *"/rails_app/"* ]]; then
|
|
56
|
+
# Verification Rails apps: always auto-merge, except a major bump of the rails gem itself.
|
|
57
|
+
if [[ "$UPDATE_TYPE" == "version-update:semver-major" && "$rails_involved" == "true" ]]; then
|
|
58
|
+
echo "Skip auto-merge: major update of the rails gem in a rails_app verification app."
|
|
59
|
+
safe=false
|
|
60
|
+
else
|
|
61
|
+
safe=true
|
|
62
|
+
fi
|
|
63
|
+
elif [[ "$HEAD_REF" == *"/my_api/"* ]]; then
|
|
64
|
+
# Verification API app: always auto-merge regardless of update type.
|
|
65
|
+
safe=true
|
|
66
|
+
elif [[ ("$UPDATE_TYPE" == "version-update:semver-patch" || "$UPDATE_TYPE" == "version-update:semver-minor") && "$DEPENDENCY_TYPE" == "direct:development" ]]; then
|
|
67
|
+
# The gem itself (root Gemfile): only direct development patch/minor updates.
|
|
68
|
+
safe=true
|
|
69
|
+
else
|
|
70
|
+
echo "Skip auto-merge: gem update does not match auto-merge policy ($UPDATE_TYPE, $DEPENDENCY_TYPE)."
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
echo "safe=$safe" >> "$GITHUB_OUTPUT"
|
|
74
|
+
|
|
75
|
+
- name: Enable auto-merge for safe bundler updates
|
|
76
|
+
if: ${{ steps.metadata.outputs.package-ecosystem == 'bundler' && steps.guard.outputs.safe == 'true' }}
|
|
28
77
|
env:
|
|
29
78
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
30
79
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
31
80
|
run: gh pr merge --repo "$GITHUB_REPOSITORY" --auto --merge "$PR_NUMBER"
|
|
32
81
|
|
|
33
82
|
enable-automerge-github-actions:
|
|
34
|
-
if: ${{ github.
|
|
83
|
+
if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
|
|
35
84
|
runs-on: ubuntu-latest
|
|
85
|
+
permissions:
|
|
86
|
+
contents: write
|
|
87
|
+
pull-requests: write
|
|
36
88
|
|
|
37
89
|
steps:
|
|
38
90
|
- name: Fetch Dependabot metadata
|
|
39
91
|
id: metadata
|
|
40
|
-
uses: dependabot/fetch-metadata@
|
|
92
|
+
uses: dependabot/fetch-metadata@v3
|
|
41
93
|
with:
|
|
42
94
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
43
95
|
|
|
@@ -18,13 +18,15 @@ jobs:
|
|
|
18
18
|
release:
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
20
|
steps:
|
|
21
|
-
-
|
|
21
|
+
# rubygems/release-gem runs `rake release`, which pushes the git tag,
|
|
22
|
+
# so the checkout credentials must persist for this release job.
|
|
23
|
+
- uses: actions/checkout@v7 # zizmor: ignore[artipacked]
|
|
22
24
|
with:
|
|
23
25
|
fetch-depth: 0
|
|
24
26
|
ref: ${{ github.ref_name }}
|
|
25
27
|
|
|
26
28
|
- name: Set up Ruby
|
|
27
|
-
uses: ruby/setup-ruby@v1
|
|
29
|
+
uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
28
30
|
with:
|
|
29
31
|
ruby-version: '4.0'
|
|
30
32
|
bundler-cache: true
|
|
@@ -18,10 +18,12 @@ jobs:
|
|
|
18
18
|
if: ${{ github.event_name == 'workflow_dispatch' || github.ref == 'refs/heads/master' }}
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
20
|
steps:
|
|
21
|
-
|
|
21
|
+
# rubocop_challenger pushes a branch and opens a pull request,
|
|
22
|
+
# so the checkout credentials must persist for the git push.
|
|
23
|
+
- uses: actions/checkout@v7 # zizmor: ignore[artipacked]
|
|
22
24
|
|
|
23
25
|
- name: Set up Ruby
|
|
24
|
-
uses: ruby/setup-ruby@v1
|
|
26
|
+
uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
25
27
|
with:
|
|
26
28
|
ruby-version: '4.0'
|
|
27
29
|
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.3.12
|
data/AGENTS.md
CHANGED
|
@@ -5,18 +5,21 @@
|
|
|
5
5
|
- Always create a new branch from `master`.
|
|
6
6
|
- Before creating a branch, update local `master` with the latest commits from `origin`.
|
|
7
7
|
- After updating local `master`, reload and re-read `AGENTS.md` before starting any new task.
|
|
8
|
-
-
|
|
8
|
+
- Use a branch prefix that matches the agent tool in use:
|
|
9
|
+
- Codex: `codex/<new-branch-name>`
|
|
10
|
+
- Claude Code: `claude/<new-branch-name>`
|
|
11
|
+
- Example flow (replace `<prefix>` with the prefix for your tool):
|
|
9
12
|
1. `git checkout master`
|
|
10
13
|
2. `git fetch origin`
|
|
11
14
|
3. `git pull --ff-only origin master`
|
|
12
15
|
4. Re-open `AGENTS.md` and confirm instructions
|
|
13
|
-
5. `git checkout -b
|
|
16
|
+
5. `git checkout -b <prefix>/<new-branch-name>`
|
|
14
17
|
|
|
15
18
|
## Development Version Policy
|
|
16
19
|
|
|
17
20
|
- In development environments, always use the oldest versions among currently supported Ruby and Rails.
|
|
18
|
-
- Current baseline: Ruby 3.
|
|
19
|
-
- Patch versions may be updated to the latest available releases within the selected baseline (e.g., Ruby 3.
|
|
21
|
+
- Current baseline: Ruby 3.3 and Rails 7.2.
|
|
22
|
+
- Patch versions may be updated to the latest available releases within the selected baseline (e.g., Ruby 3.3.x and Rails 7.2.x).
|
|
20
23
|
- When updating support policy, also update `.ruby-version`, `Dockerfile` (`ARG RUBY_VERSION` and `BUNDLE_GEMFILE`), and development Dockerfiles under `rails_app/`.
|
|
21
24
|
|
|
22
25
|
## Support Matrix Update Procedure
|
|
@@ -32,15 +35,25 @@
|
|
|
32
35
|
- Check other workflows under `.github/workflows/` for fixed Ruby versions and align them when support policy changes.
|
|
33
36
|
- Update supported versions in:
|
|
34
37
|
- `README.md`
|
|
38
|
+
- `AGENTS.md` (`Development Version Policy` baseline line)
|
|
35
39
|
- Keep development baseline files aligned:
|
|
36
40
|
- `.ruby-version`
|
|
37
41
|
- `Dockerfile` (`ARG RUBY_VERSION`)
|
|
38
42
|
- `rails_app/*/Dockerfile` (`ARG RUBY_VERSION`) for supported Rails verification apps
|
|
43
|
+
- `rails_app/*/.ruby-version` for supported Rails verification apps (Dependabot
|
|
44
|
+
reads the per-directory `.ruby-version` to resolve the path gem; a stale value
|
|
45
|
+
breaks `@dependabot rebase` with "can't resolve your Ruby dependency files")
|
|
46
|
+
- Before commit, list every `.ruby-version` in the repo and confirm each matches
|
|
47
|
+
the intended baseline:
|
|
48
|
+
`find . -name .ruby-version | xargs -I{} sh -c 'echo "{}: $(cat {})"'`
|
|
39
49
|
- Keep verification assets aligned with supported Rails:
|
|
40
50
|
- remove unsupported `gemfiles/rails_*.gemfile`
|
|
41
51
|
- remove unsupported `rails_app/rails_*` directories
|
|
42
52
|
- keep only supported Rails verification app directories
|
|
43
|
-
- Validate before commit
|
|
53
|
+
- Validate before commit. A support matrix change affects config files
|
|
54
|
+
(e.g. `.rubocop.yml` `TargetRubyVersion`, gemspec constraints) that break
|
|
55
|
+
lint/specs even without any `.rb` change, so always run all three below
|
|
56
|
+
regardless of the general Validation Rule:
|
|
44
57
|
- `docker run --rm -v "$PWD":/app -w /app my_api_client-dev bundle exec rspec`
|
|
45
58
|
- `docker run --rm -v "$PWD":/app -w /app my_api_client-dev bundle exec rubocop`
|
|
46
59
|
- `docker run --rm -v "$PWD":/app -w /app my_api_client-dev bundle exec rake build`
|
|
@@ -101,6 +114,7 @@
|
|
|
101
114
|
## Pull Request Description Rule
|
|
102
115
|
|
|
103
116
|
- In PR descriptions, include a `Purpose of this change` section that explains why the change is needed, not only what changed.
|
|
117
|
+
- Write PR titles and descriptions in English to keep them consistent across the repository.
|
|
104
118
|
|
|
105
119
|
## GitHub CLI Body Safety
|
|
106
120
|
|
|
@@ -109,12 +123,19 @@
|
|
|
109
123
|
- Use plain text without backticks in inline `--body`.
|
|
110
124
|
- Write the body to a temporary file and pass it via file-based options (or equivalent safe method) to prevent shell command substitution.
|
|
111
125
|
|
|
126
|
+
## GitHub Actions Pinning Policy
|
|
127
|
+
|
|
128
|
+
- Pin third-party actions to a full commit SHA with a version comment (e.g. `uses: ruby/setup-ruby@<sha> # v1.321.0`) to satisfy zizmor `unpinned-uses`.
|
|
129
|
+
- GitHub-owned actions (`actions/*`, `github/*`, `rubygems/*`, `dependabot/*`) may stay ref-pinned; Dependabot (`github-actions`) keeps the pins and version comments updated.
|
|
130
|
+
|
|
112
131
|
## Runbook
|
|
113
132
|
|
|
114
133
|
- Dependabot PR review and auto-merge operation steps are documented in `docs/runbooks/dependabot_pr_auto_merge.md`.
|
|
115
134
|
|
|
116
135
|
## CHANGELOG Organization Rule
|
|
117
136
|
|
|
137
|
+
- Do NOT add `CHANGELOG.md` entries in individual feature/fix PRs.
|
|
138
|
+
Entries are compiled and added at gem release time, not per-PR.
|
|
118
139
|
- Follow the format of past versions in `CHANGELOG.md`.
|
|
119
140
|
- Use `-` for bullet list items (not `*`).
|
|
120
141
|
- Categorize entries under these headings, keeping only the headings that have entries (omit empty ones):
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Change log
|
|
2
2
|
|
|
3
|
+
## v2.1.0 (Aug 11, 2026)
|
|
4
|
+
|
|
5
|
+
### Security
|
|
6
|
+
|
|
7
|
+
- [#1335](https://github.com/ryz310/my_api_client/pull/1335) Pin third-party actions to commit SHA ([@ryz310](https://github.com/ryz310))
|
|
8
|
+
- [#1337](https://github.com/ryz310/my_api_client/pull/1337) Scope Dependabot auto-merge permissions per job ([@ryz310](https://github.com/ryz310))
|
|
9
|
+
- [#1338](https://github.com/ryz310/my_api_client/pull/1338) Use non-spoofable actor check for Dependabot auto-merge ([@ryz310](https://github.com/ryz310))
|
|
10
|
+
- [#1339](https://github.com/ryz310/my_api_client/pull/1339) Use pull_request trigger for Dependabot auto-merge ([@ryz310](https://github.com/ryz310))
|
|
11
|
+
- [#1340](https://github.com/ryz310/my_api_client/pull/1340) Disable credential persistence on checkout (zizmor artipacked) ([@ryz310](https://github.com/ryz310))
|
|
12
|
+
|
|
13
|
+
### Dependabot
|
|
14
|
+
|
|
15
|
+
- [#1237](https://github.com/ryz310/my_api_client/pull/1237) Bump dependabot/fetch-metadata from 2 to 3 ([@ryz310](https://github.com/ryz310))
|
|
16
|
+
- [#1291](https://github.com/ryz310/my_api_client/pull/1291) Bump actions/checkout from 6 to 7 ([@ryz310](https://github.com/ryz310))
|
|
17
|
+
- [#1317](https://github.com/ryz310/my_api_client/pull/1317) Bump simplecov from 0.22.0 to 1.0.3 ([@ryz310](https://github.com/ryz310))
|
|
18
|
+
- [#1323](https://github.com/ryz310/my_api_client/pull/1323) Bump activesupport from 8.1.3 to 8.1.3.1 ([@ryz310](https://github.com/ryz310))
|
|
19
|
+
- [#1329](https://github.com/ryz310/my_api_client/pull/1329) Bump json from 2.21.1 to 2.21.2 ([@ryz310](https://github.com/ryz310))
|
|
20
|
+
|
|
21
|
+
### Misc
|
|
22
|
+
|
|
23
|
+
- [#1330](https://github.com/ryz310/my_api_client/pull/1330) Add dependency cooldown to Gemfile and Dependabot ([@ryz310](https://github.com/ryz310))
|
|
24
|
+
- [#1331](https://github.com/ryz310/my_api_client/pull/1331) Always auto-merge verification app Dependabot PRs (except rails major) ([@ryz310](https://github.com/ryz310))
|
|
25
|
+
- [#1332](https://github.com/ryz310/my_api_client/pull/1332) Drop Ruby 3.2 support (EOL) ([@ryz310](https://github.com/ryz310))
|
|
26
|
+
- [#1334](https://github.com/ryz310/my_api_client/pull/1334) Require English for PR titles and descriptions ([@ryz310](https://github.com/ryz310))
|
|
27
|
+
- [#1336](https://github.com/ryz310/my_api_client/pull/1336) Use tool-specific branch prefix in branch creation rule ([@ryz310](https://github.com/ryz310))
|
|
28
|
+
- [#1341](https://github.com/ryz310/my_api_client/pull/1341) Align rails_app .ruby-version with Ruby 3.3 baseline ([@ryz310](https://github.com/ryz310))
|
|
29
|
+
|
|
3
30
|
## v2.0.0 (Jul 21, 2026)
|
|
4
31
|
|
|
5
32
|
This major release marks the shift to an AI-assisted (agent-driven) development workflow.
|
data/Dockerfile
CHANGED
data/Gemfile
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# cooldown: skip gem versions published within the last 7 days to reduce the
|
|
4
|
+
# risk of pulling in a compromised or broken release right after publication.
|
|
5
|
+
source 'https://rubygems.org', cooldown: 7
|
|
4
6
|
|
|
5
7
|
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
|
6
8
|
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
my_api_client (2.
|
|
4
|
+
my_api_client (2.1.0)
|
|
5
5
|
activesupport (>= 7.2.0)
|
|
6
6
|
faraday (>= 0.17.1)
|
|
7
7
|
jsonpath
|
|
@@ -10,7 +10,7 @@ PATH
|
|
|
10
10
|
GEM
|
|
11
11
|
remote: https://rubygems.org/
|
|
12
12
|
specs:
|
|
13
|
-
activesupport (8.1.3)
|
|
13
|
+
activesupport (8.1.3.1)
|
|
14
14
|
base64
|
|
15
15
|
bigdecimal
|
|
16
16
|
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
@@ -39,7 +39,6 @@ GEM
|
|
|
39
39
|
bigdecimal
|
|
40
40
|
rexml
|
|
41
41
|
diff-lcs (1.6.2)
|
|
42
|
-
docile (1.4.1)
|
|
43
42
|
drb (2.2.3)
|
|
44
43
|
faraday (2.14.3)
|
|
45
44
|
faraday-net_http (>= 2.0, < 3.5)
|
|
@@ -51,7 +50,7 @@ GEM
|
|
|
51
50
|
i18n (1.15.2)
|
|
52
51
|
concurrent-ruby (~> 1.0)
|
|
53
52
|
io-console (0.8.2)
|
|
54
|
-
json (2.21.
|
|
53
|
+
json (2.21.2)
|
|
55
54
|
jsonpath (1.1.5)
|
|
56
55
|
multi_json
|
|
57
56
|
language_server-protocol (3.17.0.6)
|
|
@@ -133,12 +132,7 @@ GEM
|
|
|
133
132
|
addressable (>= 2.3.5)
|
|
134
133
|
faraday (>= 0.17.3, < 3)
|
|
135
134
|
securerandom (0.4.1)
|
|
136
|
-
simplecov (0.
|
|
137
|
-
docile (~> 1.1)
|
|
138
|
-
simplecov-html (~> 0.11)
|
|
139
|
-
simplecov_json_formatter (~> 0.1)
|
|
140
|
-
simplecov-html (0.13.2)
|
|
141
|
-
simplecov_json_formatter (0.1.4)
|
|
135
|
+
simplecov (1.0.3)
|
|
142
136
|
tzinfo (2.0.6)
|
|
143
137
|
concurrent-ruby (~> 1.0)
|
|
144
138
|
unicode-display_width (3.2.0)
|
|
@@ -167,7 +161,7 @@ DEPENDENCIES
|
|
|
167
161
|
rubocop-rake
|
|
168
162
|
rubocop-rspec
|
|
169
163
|
rubocop-rspec_rails
|
|
170
|
-
simplecov (= 0.
|
|
164
|
+
simplecov (= 1.0.3)
|
|
171
165
|
webmock
|
|
172
166
|
yard
|
|
173
167
|
|
data/README.md
CHANGED
|
@@ -24,6 +24,15 @@ sed -n '1,260p' AGENTS.md
|
|
|
24
24
|
## Auto-merge workflow policy
|
|
25
25
|
- Keep `package-ecosystem` decisions separated in `.github/workflows/dependabot-auto-merge.yml`.
|
|
26
26
|
- Apply independent conditions for each ecosystem to avoid cross-ecosystem condition mixing.
|
|
27
|
+
- For `bundler` ecosystem auto-merge:
|
|
28
|
+
- Verification apps (`rails_app/*` and `my_api`) are always auto-merged regardless of update type
|
|
29
|
+
(including major), because bundle update failures there do not affect the published gem and are
|
|
30
|
+
gated by CI/branch protection.
|
|
31
|
+
- Exception: a major update of the `rails` gem itself under `rails_app/*` is NOT auto-merged,
|
|
32
|
+
because a Rails major bump is treated as an explicit support-matrix decision that requires manual
|
|
33
|
+
review. Other gems' major updates under `rails_app/*` are still auto-merged.
|
|
34
|
+
- The gem itself (root `Gemfile`) is auto-merged only for `direct:development` dependencies on
|
|
35
|
+
non-major updates (patch/minor).
|
|
27
36
|
- For `github-actions` ecosystem auto-merge, require all of the following:
|
|
28
37
|
- GitHub official actions only (`actions/*` or `github/*`)
|
|
29
38
|
- non-major updates only (patch/minor)
|