renovate/lib/modules/datasource/deb
oxdev03 c3958c9bd6
feat(datasource): add debian datasource (#30071)
Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-authored-by: Sergei Zharinov <zharinov@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Aleksandr Mezin <mezin.alexander@gmail.com>
Co-authored-by: Jasmin Müller <9011011+jazzlyn@users.noreply.github.com>
2024-08-28 17:26:56 +00:00
..
__fixtures__ feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
checksum.spec.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
checksum.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
common.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
file.spec.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
file.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
index.spec.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
index.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
readme.md feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
release.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
types.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
url.spec.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00
url.ts feat(datasource): add debian datasource (#30071) 2024-08-28 17:26:56 +00:00

readme.md

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 to update dependencies.

Registry URL To use a Debian repository with the datasource, you need a properly formatted URL with specific query parameters:

  • components: Comma-separated list of repository components (e.g., main,contrib,non-free).
  • binaryArch: Architecture of the binary packages (e.g., amd64,all).
  • Either suite or release:
    • suite: A rolling release alias like stable.
    • release: A fixed release name such as bullseye or buster.

Example:

https://deb.debian.org/debian?suite=stable&components=main,contrib,non-free&binaryArch=amd64

This URL points to the stable suite of the Debian repository for amd64 architecture, including main, contrib, and non-free components.

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.

First you would set a custom manager in your renovate.json file for Dockerfile:

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "customManagers": [
    {
      "customType": "regex",
      "fileMatch": ["^Dockerfile$"],
      "matchStrings": [
        "#\\s*renovate:\\s*?depName=(?<depName>.*?)?\\sENV .*?_VERSION=\"(?<currentValue>.*)\"\\s"
      ],
      "datasourceTemplate": "deb"
    }
  ]
}

Then you would put comments in your Dockerfile, to tell Renovate where to find the updates:

FROM debian:bullseye

# renovate: depName=gcc-11
ENV GCC_VERSION="11.2.0-19"

RUN apt-get update && \
    apt-get install -y \
    gcc-11="${GCC_VERSION}" && \
    apt-get clean

When the apt package for gcc is updated, Renovate updates the environment variable.