diff --git a/docs/usage/bazel.md b/docs/usage/bazel.md index c023c33a809d45eebcd1162ca7221541ff2f50e8..7dca329c749ca09c34394073a3d25686c541af3d 100644 --- a/docs/usage/bazel.md +++ b/docs/usage/bazel.md @@ -34,9 +34,9 @@ git_repository( New versions will be detected using the list of **tags** for that repository on GitHub. -## http_archive +## http_archive and http_file -Renovate will update any `http_archive` declaration that contains the following: +Renovate will update any `http_archive` or `http_file` declaration that contains the following: 1. name 2. url matching `https://github.com/<owner>/<repo>/releases/download/<semver>/<repo>.tar.gz` diff --git a/lib/manager/bazel/__fixtures__/WORKSPACE1 b/lib/manager/bazel/__fixtures__/WORKSPACE1 index 3bb4aa57559d80a234f311ef8bd420862a2884a8..11078c7cc6f0960b2dede4387ed26bd58fceeccf 100644 --- a/lib/manager/bazel/__fixtures__/WORKSPACE1 +++ b/lib/manager/bazel/__fixtures__/WORKSPACE1 @@ -118,3 +118,10 @@ container_pull( repository = "distroless/python3-debian10", tag = "latest", ) + +http_file( + name="distroless", + sha256="f7a6ecfb8174a1dd4713ea3b21621072996ada7e8f1a69e6ae7581be137c6dd6", + strip_prefix="distroless-446923c3756ceeaa75888f52fcbdd48bb314fbf8", + urls=["https://github.com/GoogleContainerTools/distroless/archive/446923c3756ceeaa75888f52fcbdd48bb314fbf8.tar.gz"] +) diff --git a/lib/manager/bazel/__snapshots__/extract.spec.ts.snap b/lib/manager/bazel/__snapshots__/extract.spec.ts.snap index 3cb557bdd20a422227522756cfd563122e61f6fb..900851a2bd29b3257b9feb93cb6e2036e98393a7 100644 --- a/lib/manager/bazel/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/bazel/__snapshots__/extract.spec.ts.snap @@ -169,6 +169,22 @@ Array [ sha256=\\"f7a6ecfb8174a1dd4713ea3b21621072996ada7e8f1a69e6ae7581be137c6dd6\\", strip_prefix=\\"distroless-446923c3756ceeaa75888f52fcbdd48bb314fbf8\\", urls=[\\"https://github.com/GoogleContainerTools/distroless/archive/446923c3756ceeaa75888f52fcbdd48bb314fbf8.tar.gz\\"] +)", + }, + "repo": "GoogleContainerTools/distroless", + }, + Object { + "currentDigest": "446923c3756ceeaa75888f52fcbdd48bb314fbf8", + "datasource": "github-releases", + "depName": "distroless", + "depType": "http_file", + "lookupName": "GoogleContainerTools/distroless", + "managerData": Object { + "def": "http_file( + name=\\"distroless\\", + sha256=\\"f7a6ecfb8174a1dd4713ea3b21621072996ada7e8f1a69e6ae7581be137c6dd6\\", + strip_prefix=\\"distroless-446923c3756ceeaa75888f52fcbdd48bb314fbf8\\", + urls=[\\"https://github.com/GoogleContainerTools/distroless/archive/446923c3756ceeaa75888f52fcbdd48bb314fbf8.tar.gz\\"] )", }, "repo": "GoogleContainerTools/distroless", diff --git a/lib/manager/bazel/__snapshots__/update.spec.ts.snap b/lib/manager/bazel/__snapshots__/update.spec.ts.snap index a676661130c53e3aa449d194982377e405fecec2..c6081441937613ddfb1124e13fe53d03649e229d 100644 --- a/lib/manager/bazel/__snapshots__/update.spec.ts.snap +++ b/lib/manager/bazel/__snapshots__/update.spec.ts.snap @@ -121,6 +121,13 @@ container_pull( repository = \\"distroless/python3-debian10\\", tag = \\"latest\\", ) + +http_file( + name=\\"distroless\\", + sha256=\\"f7a6ecfb8174a1dd4713ea3b21621072996ada7e8f1a69e6ae7581be137c6dd6\\", + strip_prefix=\\"distroless-446923c3756ceeaa75888f52fcbdd48bb314fbf8\\", + urls=[\\"https://github.com/GoogleContainerTools/distroless/archive/446923c3756ceeaa75888f52fcbdd48bb314fbf8.tar.gz\\"] +) " `; diff --git a/lib/manager/bazel/extract.ts b/lib/manager/bazel/extract.ts index 49889d3c311701799a69a6eea0aba3ad2fbae5ef..ba8cedc9fbf9529d3fded560359a2bf8f4915f0d 100644 --- a/lib/manager/bazel/extract.ts +++ b/lib/manager/bazel/extract.ts @@ -79,6 +79,7 @@ function parseContent(content: string): string[] { return [ 'container_pull', 'http_archive', + 'http_file', 'go_repository', 'git_repository', ].reduce( @@ -215,7 +216,7 @@ export function extractPackageFile(content: string): PackageFile | null { } deps.push(dep); } else if ( - depType === 'http_archive' && + (depType === 'http_archive' || depType === 'http_file') && depName && parseUrl(url) && sha256 diff --git a/lib/manager/bazel/update.ts b/lib/manager/bazel/update.ts index 8d58e1b1dbfcb63aee40fb378df40466799e8473..102c90429e6663bcbe0e416226081eb362a5600d 100644 --- a/lib/manager/bazel/update.ts +++ b/lib/manager/bazel/update.ts @@ -113,7 +113,10 @@ export async function updateDependency({ `$1"${upgrade.newDigest}", # ${upgrade.newValue}\n` ); } - } else if (upgrade.depType === 'http_archive' && upgrade.newValue) { + } else if ( + (upgrade.depType === 'http_archive' || upgrade.depType === 'http_file') && + upgrade.newValue + ) { newDef = updateWithNewVersion( upgrade.managerData.def, upgrade.currentValue, @@ -141,7 +144,10 @@ export async function updateDependency({ } logger.debug({ hash }, 'Calculated hash'); newDef = setNewHash(newDef, hash); - } else if (upgrade.depType === 'http_archive' && upgrade.newDigest) { + } else if ( + (upgrade.depType === 'http_archive' || upgrade.depType === 'http_file') && + upgrade.newDigest + ) { const [, shortRepo] = upgrade.repo.split('/'); const url = `https://github.com/${upgrade.repo}/archive/${upgrade.newDigest}.tar.gz`; const hash = await getHashFromUrl(url);