From 4f47b4d0e457b5436ca7f140aeebf8409a90e7af Mon Sep 17 00:00:00 2001 From: Sebastian Poxhofer <secustor@users.noreply.github.com> Date: Tue, 17 Sep 2024 07:20:00 +0200 Subject: [PATCH] docs(datasource/deb): document steps for Artifactory (#31110) Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com> --- lib/modules/datasource/deb/readme.md | 80 +++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 6 deletions(-) diff --git a/lib/modules/datasource/deb/readme.md b/lib/modules/datasource/deb/readme.md index d46c68e48a..8e21be5c84 100644 --- a/lib/modules/datasource/deb/readme.md +++ b/lib/modules/datasource/deb/readme.md @@ -1,7 +1,15 @@ -The Debian datasource enables Renovate to update packages from Debian repositories. It is ideal for projects that depend on Debian-based systems or distributions. You will need to combine Debian datasource with [regex managers](../../manager/regex/index.md) to update dependencies. +Renovate uses the Debian datasource to update packages from Debian repositories. +The `debian` datasource is meant for projects that: -**Registry URL** -To use a Debian repository with the datasource, you need a properly formatted URL with specific query parameters: +- depend on Debian-based systems, or +- depend on Debian-based distributions, like Ubuntu + +By default, Renovate does not detect Debian dependencies. +For Renovate to update dependencies, you must combine the Debian datasource with [regex managers](../../manager/regex/index.md). + +## Set URL when using a Debian repository + +To use a Debian repository with the datasource, you must set a properly formatted URL with specific query parameters as `registryUrl`: - `components`: Comma-separated list of repository components (e.g., `main,contrib,non-free`). - `binaryArch`: Architecture of the binary packages (e.g., `amd64`,`all`). @@ -9,6 +17,11 @@ To use a Debian repository with the datasource, you need a properly formatted UR - `suite`: A rolling release alias like `stable`. - `release`: A fixed release name such as `bullseye` or `buster`. +<!-- prettier-ignore --> +!!! note + These parameters are used to give Renovate context and are not directly used to call the repository. + Therefore, the `registryUrl` has not to be a valid URL for a repository. + **Example**: ``` @@ -17,7 +30,7 @@ https://deb.debian.org/debian?suite=stable&components=main,contrib,non-free&bina This URL points to the `stable` suite of the Debian repository for `amd64` architecture, including `main`, `contrib`, and `non-free` components. -**Usage Example** +## Usage Example Say you're using apt packages in a Dockerfile and want to update them. With the debian datasource you can "pin" each dependency, and get automatic updates. @@ -32,8 +45,9 @@ First you would set a custom manager in your `renovate.json` file for `Dockerfil "customType": "regex", "fileMatch": ["^Dockerfile$"], "matchStrings": [ - "#\\s*renovate:\\s*?depName=(?<depName>.*?)?\\sENV .*?_VERSION=\"(?<currentValue>.*)\"\\s" + "#\\s*renovate:\\s*?(release=(?<release>.*?))?\\s*depName=(?<depName>.*?)?\\sENV .*?_VERSION=\"(?<currentValue>.*)\"" ], + "registryUrlTemplate": "https://deb.debian.org/debian?{{#if release }}release={{release}}{{else}}suite=stable{{/if}}&components=main,contrib,non-free&binaryArch=amd64", "datasourceTemplate": "deb" } ] @@ -45,7 +59,7 @@ Then you would put comments in your Dockerfile, to tell Renovate where to find t ```dockerfile FROM debian:bullseye -# renovate: depName=gcc-11 +# renovate: release=bullseye depName=gcc-11 ENV GCC_VERSION="11.2.0-19" RUN apt-get update && \ @@ -55,3 +69,57 @@ RUN apt-get update && \ ``` When the apt package for `gcc` is updated, Renovate updates the environment variable. + +```json title="Override deb registryUrl with a packageRules entry" +{ + "packageRules": [ + { + "matchDatasources": ["deb"], + "matchPackageNames": ["gcc-11"], + "registryUrls": [ + "https://deb.debian.org/debian?suite=stable&components=main,contrib,non-free&binaryArch=amd64" + ] + } + ] +} +``` + +## Artifactory + +The Debian datasource can be used with Artifactory. + +### Supported repository types + +The `debian` datasource supports these repository types: + +- virtual +- local +- remote + +### Set a `registryUrl` + +To use Artifactory, first configure the `deb` datasource by setting the `registryUrl`. + +```title="Example of valid registryUrl format" +https://<host>:<port>/artifactory/<repository-slug>?release=<release>&components=<components>&binaryArch=<binaryArch> +https://artifactory.example.com:443/artifactory/debian?release=bookworm&components=main,contrib,non-free&binaryArch=amd64 +``` + +### Authenticating to Artifactory + +If Artifactory asks for authentication, you must set up a host rule. +First, generate a password for Renovate with Artifactory's "Set Me Up" feature. +Then, add the following configuration: + +```json title="Example Artifactory host rule configuration, with username and password" +{ + "hostRules": [ + { + "hostType": "deb", + "matchHost": "https://artifactory.example.com:443/artifactory/debian", + "username": "myuser", + "password": "< the generated password >" + } + ] +} +``` -- GitLab