diff --git a/lib/modules/manager/github-actions/extract.spec.ts b/lib/modules/manager/github-actions/extract.spec.ts index a4a573a53c..7244bbc21c 100644 --- a/lib/modules/manager/github-actions/extract.spec.ts +++ b/lib/modules/manager/github-actions/extract.spec.ts @@ -2525,6 +2525,8 @@ describe('modules/manager/github-actions/extract', () => { ], }, { + // a short `ruby-version` is the latest release matching it, so it must + // keep its precision rather than gain a patch component step: { uses: 'ruby/setup-ruby@v1', with: { 'ruby-version': '3.4' }, @@ -2536,6 +2538,22 @@ describe('modules/manager/github-actions/extract', () => { depName: 'ruby', depType: 'uses-with', packageName: 'ruby', + versioning: 'semver-partial', + }, + ], + }, + { + step: { + uses: 'ruby/setup-ruby@v1', + with: { 'ruby-version': '3.4.7' }, + }, + expected: [ + { + currentValue: '3.4.7', + datasource: 'ruby-version', + depName: 'ruby', + depType: 'uses-with', + packageName: 'ruby', }, ], }, diff --git a/lib/modules/manager/github-actions/known-actions/ruby-version.ts b/lib/modules/manager/github-actions/known-actions/ruby-version.ts index c6226c33eb..d5f4e91a2d 100644 --- a/lib/modules/manager/github-actions/known-actions/ruby-version.ts +++ b/lib/modules/manager/github-actions/known-actions/ruby-version.ts @@ -1,11 +1,14 @@ import { RubyVersionDatasource } from '../../../datasource/ruby-version/index.ts'; import type { KnownActionConfig } from '../types.ts'; -import { valSchema } from './utils.ts'; +import { partialValSchema } from './utils.ts'; export const rubyVersionActions: Record = { + // https://github.com/ruby/setup-ruby 'ruby/setup-ruby': { datasource: RubyVersionDatasource.id, packageName: 'ruby', - withSchema: valSchema('ruby-version'), + // a short `ruby-version` such as `3.3` means the latest release matching + // it, rather than a pinned version + withSchema: partialValSchema('ruby-version'), }, }; diff --git a/lib/modules/manager/github-actions/known-actions/utils.ts b/lib/modules/manager/github-actions/known-actions/utils.ts index 3f9b032f32..fca0205dc8 100644 --- a/lib/modules/manager/github-actions/known-actions/utils.ts +++ b/lib/modules/manager/github-actions/known-actions/utils.ts @@ -94,6 +94,18 @@ export function valSchema( .transform((val) => [parseValue(val[key], isInvalid)]); } +/** + * As `valSchema`, for inputs which accept a partial version. + */ +export function partialValSchema( + key: string, + isInvalid?: (val: string) => boolean, +): ActionSchema { + return z + .object({ [key]: z.string().optional() }) + .transform((val) => [parsePartialValue(val[key], isInvalid)]); +} + export const VersionVal = valSchema('version'); export function parseImageValue(image: string | undefined): PackageDependency {