Skip to content

Commit

Permalink
fix(manager/circleci): extract executors of CircleCi files again (#30562
Browse files Browse the repository at this point in the history
)
  • Loading branch information
secustor committed Aug 2, 2024
1 parent f0c2067 commit 269a4dd
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
20 changes: 20 additions & 0 deletions lib/modules/manager/circleci/extract.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { codeBlock } from 'common-tags';
import { Fixtures } from '../../../../test/fixtures';
import { extractPackageFile } from '.';

Expand Down Expand Up @@ -78,5 +79,24 @@ describe('modules/manager/circleci/extract', () => {
},
]);
});

it('extracts executors', () => {
const res = extractPackageFile(codeBlock`
executors:
my-executor:
docker:
- image: cimg/ruby:3.0.3-browsers`);
expect(res?.deps).toEqual([
{
autoReplaceStringTemplate:
'{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}',
currentValue: '3.0.3-browsers',
datasource: 'docker',
depName: 'cimg/ruby',
depType: 'docker',
replaceString: 'cimg/ruby:3.0.3-browsers',
},
]);
});
});
});
9 changes: 7 additions & 2 deletions lib/modules/manager/circleci/extract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { OrbDatasource } from '../../datasource/orb';
import * as npmVersioning from '../../versioning/npm';
import { getDep } from '../dockerfile/extract';
import type { PackageDependency, PackageFileContent } from '../types';
import { CircleCiFile } from './schema';
import { CircleCiFile, type CircleCiJob } from './schema';

export function extractPackageFile(
content: string,
Expand All @@ -30,7 +30,12 @@ export function extractPackageFile(
});
}

for (const job of Object.values(parsed.jobs ?? {})) {
// extract environments
const environments: CircleCiJob[] = [
Object.values(parsed.executors ?? {}),
Object.values(parsed.jobs ?? {}),
].flat();
for (const job of environments) {
for (const dockerElement of coerceArray(job.docker)) {
deps.push({
...getDep(dockerElement.image),
Expand Down
2 changes: 2 additions & 0 deletions lib/modules/manager/circleci/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ export const CircleCiDocker = z.object({
image: z.string(),
});

export type CircleCiJob = z.infer<typeof CircleCiJob>;
export const CircleCiJob = z.object({
docker: z.array(CircleCiDocker).optional(),
});

export const CircleCiFile = z.object({
aliases: z.array(CircleCiDocker).optional(),
executors: z.record(z.string(), CircleCiJob).optional(),
jobs: z.record(z.string(), CircleCiJob).optional(),
orbs: z.record(z.string()).optional(),
});

0 comments on commit 269a4dd

Please sign in to comment.