mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-01 10:09:50 +00:00
9b87f8de2f
* feat(manager/dockerfile): extract `apk add` packages from `RUN` instructions As noted in #43711, users pin APK packages in their Dockerfiles and want Renovate to update them, which so far has needed a custom manager[0]. Now that we have the `apk` datasource, we can extract these ourselves, and parse the `RUN` instruction more effectively than a regex can. We can do this by: - extracting `apk add` dependencies when processing a `Dockerfile` - ignoring common flags to `apk` before we extract the dependency names, which wasn't straightforward with a Custom Manager - ignoring i.e. `--virtual .build-deps` - handle example cases from [0] and other usages i.e. with a comment in between lines - ensure that `final` doesn't run against the final `apk` install - removing the docs for how to do this with a Custom Manager, as that complexity is no longer needed - skipping `unspecified-version` and `contains-variable` We inform the user that they will need to override the `registryUrls`, as we already have a default on the `apk` datasource and can't override it in a straightforward means. [0]: https://www.jvt.me/posts/2025/03/24/renovate-regex-dockerfile-apk/ Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io> * fixup! feat(manager/dockerfile): extract `apk add` packages from `RUN` instructions Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io> * fixup! feat(manager/dockerfile): extract `apk add` packages from `RUN` instructions Co-Authored-By: Claude Opus 5 <jamie.tanna+claude-code@mend.io> * fixup! feat(manager/dockerfile): extract `apk add` packages from `RUN` instructions Find the command by name wherever it sits in the tokens, rather than skipping an allowlist of shell keywords and variable assignments, so that a wrapper program like `sudo`, `chroot /mnt` or `timeout 30` is handled too. Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io> * fixup! feat(manager/dockerfile): extract `apk add` packages from `RUN` instructions --------- Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
20 lines
687 B
TypeScript
20 lines
687 B
TypeScript
import type { Category } from '../../../constants/index.ts';
|
|
import { ApkDatasource } from '../../datasource/apk/index.ts';
|
|
import { DockerDatasource } from '../../datasource/docker/index.ts';
|
|
import { extractPackageFile } from './extract.ts';
|
|
|
|
export { knownDepTypes } from './dep-types.ts';
|
|
export { extractPackageFile };
|
|
|
|
export const url = 'https://docs.docker.com/build/concepts/dockerfile';
|
|
export const categories: Category[] = ['docker'];
|
|
|
|
export const defaultConfig = {
|
|
managerFilePatterns: [
|
|
'/(^|/|\\.)([Dd]ocker|[Cc]ontainer)file$/',
|
|
'/(^|/)([Dd]ocker|[Cc]ontainer)file[^/]*$/',
|
|
],
|
|
};
|
|
|
|
export const supportedDatasources = [ApkDatasource.id, DockerDatasource.id];
|