diff --git a/.github/renovate.json b/.github/renovate.json index 170d0f4..6fcaab9 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -14,9 +14,52 @@ "matchStrings": [ "docker://(?.*?):(?[\\w+\\.\\-]*)" ] + }, + { + "description": "Custom manager for dependencies in Dockerfiles", + "customType": "regex", + "fileMatch": [ + "(^|/|\\.)Dockerfile$", + "(^|/)Dockerfile\\.[^/]*$" + ], + "matchStrings": [ + "\\s*renovate:\\s*datasource=(?.*?) depName=(?.*?)( versioning=(?.*?))?\\sENV .*?_VERSION=\\\"?(?.*)\\\"?\\s" + ], + "versioningTemplate": "{{#if versioning}}{{{versioning}}}{{else}}semver{{/if}}" } ], "labels": [ "renovate" + ], + "packageRules": [ + { + "description": "Group all debian_12 dependencies in Dockerfiles", + "matchFileNames": [ + "(^|/|\\.)Dockerfile$", + "(^|/)Dockerfile\\.[^/]*$" + ], + "matchDatasources":[ + "repology" + ], + "matchDepNames":[ + "debian_12/.*" + ] + }, + { + "description": "Group all pypi dependencies in Dockerfiles", + "matchFileNames": [ + "(^|/|\\.)Dockerfile$", + "(^|/)Dockerfile\\.[^/]*$" + ], + "matchDatasources": [ + "pypi" + ] + }, + { + "description": "Group all deps in workflow files", + "matchManagers": [ + "github-actions" + ] + } ] } diff --git a/docker/images/build-env-base/Dockerfile b/docker/images/build-env-base/Dockerfile index e0562a7..c6fe091 100644 --- a/docker/images/build-env-base/Dockerfile +++ b/docker/images/build-env-base/Dockerfile @@ -2,25 +2,52 @@ ARG BASE_IMAGE_TAG=latest FROM ghcr.io/everest/everest-ci/run-env-base:${BASE_IMAGE_TAG} +# renovate: datasource=repology depName=debian_12/git versioning=loose +ENV GIT_VERSION=1:2.39.2-1.1 +# renovate: datasource=repology depName=debian_12/curl versioning=loose +ENV CURL_VERSION=7.88.1-10+deb12u5 +# renovate: datasource=repology depName=debian_12/rsync versioning=loose +ENV RSYNC_VERSION=3.2.7-1 +# renovate: datasource=repology depName=debian_12/ninja-build versioning=loose +ENV NINJA_BUILD_VERSION=1.11.1-1 +# renovate: datasource=repology depName=debian_12/make versioning=loose +ENV MAKE_VERSION=4.3-4.1 +# renovate: datasource=repology depName=debian_12/cmake versioning=loose +ENV CMAKE_VERSION=3.25.1-1 +# renovate: datasource=repology depName=debian_12/binutils versioning=loose +ENV BINUTILS_VERSION=2.40-2 +# renovate: datasource=repology depName=debian_12/gcc versioning=loose +ENV GCC_VERSION=4:12.2.0-3 +# renovate: datasource=repology depName=debian_12/g++ versioning=loose +ENV GPP_VERSION=4:12.2.0-3 +# renovate: datasource=repology depName=debian_12/ccache versioning=loose +ENV CCACHE_VERSION=4.8+really4.7.5-1 +# renovate: datasource=repology depName=debian_12/lcov versioning=loose +ENV LCOV_VERSION=1.16-1 +# renovate: datasource=repology depName=debian_12/clang-format versioning=loose +ENV CLANG_FORMAT_VERSION=1:15.0.6-4+b1 +# renovate: datasource=repology depName=debian_12/clang-tidy versioning=loose +ENV CLANG_TIDY_VERSION=1:15.0.6-4+b1 + RUN apt update \ && apt install --no-install-recommends -y \ # basic command line tools - git=1:2.39.2-1.1 \ - curl=7.88.1-10+deb12u5 \ - rsync=3.2.7-1 \ + git=${GIT_VERSION} \ + curl=${CURL_VERSION} \ + rsync=${RSYNC_VERSION} \ # build tools - ninja-build=1.11.1-1 \ - make=4.3-4.1 \ - cmake=3.25.1-1 \ + ninja-build=${NINJA_BUILD_VERSION} \ + make=${MAKE_VERSION} \ + cmake=${CMAKE_VERSION} \ # compilers - binutils=2.40-2 \ - gcc=4:12.2.0-3 \ - g++=4:12.2.0-3 \ + binutils=${BINUTILS_VERSION} \ + gcc=${GCC_VERSION} \ + g++=${GPP_VERSION} \ # compiler tools - ccache=4.8+really4.7.5-1 \ - lcov=1.16-1 \ - clang-format-15=1:15.0.6-4+b1 \ - clang-tidy-15=1:15.0.6-4+b1 + ccache=${CCACHE_VERSION} \ + lcov=${LCOV_VERSION} \ + clang-format-15=${CLANG_FORMAT_VERSION} \ + clang-tidy-15=${CLANG_TIDY_VERSION} # Create symlinks for clang-format and clang-tidy RUN ln -s /usr/bin/clang-format-15 /usr/bin/clang-format \ @@ -28,46 +55,77 @@ RUN ln -s /usr/bin/clang-format-15 /usr/bin/clang-format \ COPY run-clang-format.py /usr/bin/run-clang-format +# renovate: datasource=repology depName=debian_12/libboost-all-dev versioning=loose +ENV LIBBOOST_ALL_DEV_VERSION=1.74.0.3 +# renovate: datasource=repology depName=debian_12/libsqlite3-dev versioning=loose +ENV LIBSQLITE3_DEV_VERSION=3.40.1-2 +# renovate: datasource=repology depName=debian_12/libssl-dev versioning=loose +ENV LIBSSL_DEV_VERSION=3.0.13-1~deb12u1 +# renovate: datasource=repology depName=debian_12/libnode-dev versioning=loose +ENV LIBNODE_DEV_VERSION=18.19.0+dfsg-6~deb12u2 +# renovate: datasource=repology depName=debian_12/pkg-config versioning=loose +ENV PKG_CONFIG_VERSION=1.8.1-1 +# renovate: datasource=repology depName=debian_12/libpcap-dev versioning=loose +ENV LIBPCAP_DEV_VERSION=1.10.3-1 +# renovate: datasource=repology depName=debian_12/libcap-dev versioning=loose +ENV LIBCAP_DEV_VERSION=1:2.66-4 +# renovate: datasource=repology depName=debian_12/python3-venv versioning=loose +ENV PYTHON3_VENV_VERSION=3.11.2-1+b1 +# renovate: datasource=repology depName=debian_12/python3-build versioning=loose +ENV PYTHON3_BUILD_VERSION=0.9.0-1 +# renovate: datasource=repology depName=debian_12/python3-sphinx versioning=loose +ENV PYTHON3_SPHINX_VERSION=5.3.0-4 + # additional packages RUN apt update \ && apt install --no-install-recommends -y \ # required by some everest libraries - libboost-all-dev=1.74.0.3 \ + libboost-all-dev=${LIBBOOST_ALL_DEV_VERSION} \ # required by libocpp - libsqlite3-dev=3.40.1-2 \ - libssl-dev=3.0.13-1~deb12u1 \ + libsqlite3-dev=${LIBSQLITE3_DEV_VERSION} \ + libssl-dev=${LIBSSL_DEV_VERSION} \ # required by everest-framework - libnode-dev=18.19.0+dfsg-6~deb12u2 \ + libnode-dev=${LIBNODE_DEV_VERSION} \ # required by packet sniffer module - pkg-config=1.8.1-1 \ - libpcap-dev=1.10.3-1 \ - libcap-dev=1:2.66-4 \ + pkg-config=${PKG_CONFIG_VERSION} \ + libpcap-dev=${LIBPCAP_DEV_VERSION} \ + libcap-dev=${LIBCAP_DEV_VERSION} \ # Install Python packages # Install Python packages - general - python3-venv=3.11.2-1+b1 \ + python3-venv=${PYTHON3_VENV_VERSION} \ # Install Python packages - required by everest-core to run integration tests - python3-build=0.9.0-1 \ + python3-build=${PYTHON3_BUILD_VERSION} \ # Install Python packages- required to build documentation - python3-sphinx=5.3.0-4 + python3-sphinx=${PYTHON3_SPHINX_VERSION} RUN apt clean \ && rm -rf /var/lib/apt/lists/* +# renovate: datasource=pypi depName=gcovr +ENV GCOVR_VERSION=7.2 +# renovate: datasource=pypi depName=sphinxcontrib-contentui +ENV SPHINXCONTRIB_CONTENTUI_VERSION=0.2.5 +# renovate: datasource=pypi depName=sphinxcontrib-svg2pdfconverter +ENV SPHINXCONTRIB_SVG2PDFCONVERTER_VERSION=1.2.2 + # Install additional Python packages RUN python3 -m pip install --break-system-packages \ - gcovr==7.2 \ + gcovr==${GCOVR_VERSION} \ #Required by documentation - Sphinx extensions - sphinxcontrib-contentui==0.2.5 \ - sphinxcontrib-svg2pdfconverter==1.2.2 + sphinxcontrib-contentui==${SPHINXCONTRIB_CONTENTUI_VERSION} \ + sphinxcontrib-svg2pdfconverter==${SPHINXCONTRIB_SVG2PDFCONVERTER_VERSION} + +# renovate: datasource=github-releases depName=EVerest/everest-dev-environment versioning=loose +ENV EDM_VERSION=v0.6.2 # Install EVerest dependency manager -ARG EDM_VERSION=v0.6.2 RUN python3 -m pip install --break-system-packages \ git+https://github.com/EVerest/everest-dev-environment@${EDM_VERSION}#subdirectory=dependency_manager # Install everest-cmake -ARG EVEREST_CMAKE_PATH=/usr/lib/cmake/everest-cmake -ARG EVEREST_CMAKE_VERSION=v0.4.4 +ENV EVEREST_CMAKE_PATH=/usr/lib/cmake/everest-cmake +# renovate: datasource=github-releases depName=EVerest/everest-cmake versioning=loose +ENV EVEREST_CMAKE_VERSION=v0.4.4 RUN git clone https://github.com/EVerest/everest-cmake.git ${EVEREST_CMAKE_PATH} \ && cd ${EVEREST_CMAKE_PATH} \ && git checkout ${EVEREST_CMAKE_VERSION} \ diff --git a/docker/images/dev-env-base/Dockerfile b/docker/images/dev-env-base/Dockerfile index fbd55a1..7598f01 100644 --- a/docker/images/dev-env-base/Dockerfile +++ b/docker/images/dev-env-base/Dockerfile @@ -15,30 +15,69 @@ RUN apt update \ && echo ${USERNAME} ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/${USERNAME} \ && chmod 0440 /etc/sudoers.d/${USERNAME} +# renovate: datasource=repology depName=debian12/wget versioning=loose +ENV WGET_VERSION=1.21.3-1+b2 +# renovate: datasource=repology depName=debian12/doxygen versioning=loose +ENV DOXYGEN_VERSION=1.9.4-4 +# renovate: datasource=repology depName=debian12/graphviz versioning=loose +ENV GRAPHVIZ_VERSION=2.42.2-7+b3 +# renovate: datasource=repology depName=debian12/build-essential versioning=loose +ENV BUILD_ESSENTIAL_VERSION=12.9 +# renovate: datasource=repology depName=debian12/cppcheck versioning=loose +ENV CPPCHECK_VERSION=2.10-2 +# renovate: datasource=repology depName=debian12/bash-completion versioning=loose +ENV BASH_COMPLETION_VERSION=1:2.11-6 +# renovate: datasource=repology depName=debian12/vim versioning=loose +ENV VIM_VERSION=2:9.0.1378-2 +# renovate: datasource=repology depName=debian12/gdb versioning=loose +ENV GDB_VERSION=13.1-3 +# renovate: datasource=repology depName=debian12/nmap versioning=loose +ENV NMAP_VERSION=7.93+dfsg1-1 + # Development Tools # Development Tools - General RUN apt update \ && apt install --no-install-recommends -y \ - wget=1.21.3-1+b2 \ - doxygen=1.9.4-4 \ - graphviz=2.42.2-7+b3 \ - build-essential=12.9 \ - cppcheck=2.10-2 \ - bash-completion=1:2.11-6 \ - vim=2:9.0.1378-2 \ + wget=${WGET_VERSION} \ + doxygen=${DOXYGEN_VERSION} \ + graphviz=${GRAPHVIZ_VERSION} \ + build-essential=${BUILD_ESSENTIAL_VERSION} \ + cppcheck=${CPPCHECK_VERSION} \ + bash-completion=${BASH_COMPLETION_VERSION} \ + vim=${VIM_VERSION} \ # Development Tools - Debugging - gdb=13.1-3 \ - nmap=7.93+dfsg1-1 + gdb=${GDB_VERSION} \ + nmap=${NMAP_VERSION} + +# renovate: datasource=pypi depName=esbonio +ENV ESBONIO_VERSION=0.16.4 +# renovate: datasource=pypi depName=doc8 +ENV DOC8_VERSION=1.1.1 + # Development Tools - Documentation RUN python3 -m pip install --break-system-packages \ # language server RST/Sphinx - esbonio==0.16.4 \ + esbonio==${ESBONIO_VERSION} \ # Style checker for RST/Sphinx - doc8==1.1.1 + doc8==${DOC8_VERSION} + +# renovate: datasource=repology depName=debian12/ca-certificates versioning=loose +ENV CA_CERTIFICATES_VERSION=20230311 +# renovate: datasource=repology depName=debian12/curl versioning=loose +ENV CURL_VERSION=7.88.1-10+deb12u6 + +# Not managed by renovate, because no available datasource +ENV DOCKER_CE_VERSION=5:27.0.3-1~debian.12~bookworm +ENV DOCKER_CE_CLI_VERSION=5:27.1.1-1~debian.12~bookworm +ENV CONTAINERD_IO_VERSION=1.7.19-1 +ENV DOCKER_BUILDX_PLUGIN_VERSION=0.16.1-1~debian.12~bookworm +ENV DOCKER_COMPOSE_PLUGIN_VERSION=2.29.1-1~debian.12~bookworm + # Development Tools - Docker -RUN apt update && apt install -y --no-install-recommends \ - ca-certificates=20230311 \ - curl=7.88.1-10+deb12u6 \ +RUN apt update \ + && apt install --no-install-recommends -y \ + ca-certificates=${CA_CERTIFICATES_VERSION} \ + curl=${CURL_VERSION} \ && install -m 0755 -d /etc/apt/keyrings \ && curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \ && chmod a+r /etc/apt/keyrings/docker.asc \ @@ -48,11 +87,12 @@ RUN apt update && apt install -y --no-install-recommends \ tee /etc/apt/sources.list.d/docker.list > /dev/null \ && apt update \ && apt install -y --no-install-recommends \ - docker-ce=5:27.0.3-1~debian.12~bookworm \ - docker-ce-cli=5:27.1.1-1~debian.12~bookworm \ - containerd.io=1.7.19-1 \ - docker-buildx-plugin=0.16.1-1~debian.12~bookworm \ - docker-compose-plugin=2.29.1-1~debian.12~bookworm + docker-ce=${DOCKER_CE_VERSION} \ + docker-ce-cli=${DOCKER_CE_CLI_VERSION} \ + containerd.io=${CONTAINERD_IO_VERSION} \ + docker-buildx-plugin=${DOCKER_BUILDX_PLUGIN_VERSION} \ + docker-compose-plugin=${DOCKER_COMPOSE_PLUGIN_VERSION} + RUN apt clean \ && rm -rf /var/lib/apt/lists/* diff --git a/docker/images/run-env-base/Dockerfile b/docker/images/run-env-base/Dockerfile index c8046ea..43b847e 100644 --- a/docker/images/run-env-base/Dockerfile +++ b/docker/images/run-env-base/Dockerfile @@ -1,30 +1,74 @@ # syntax=docker/dockerfile:1 FROM debian:12-slim +# renovate: datasource=repology depName=debian12/openjdk-17-jre versioning=loose +ENV OPENJDK_17_JRE_VERSION=17.0.12+7-2~deb12u1 +# renovate: datasource=repology depName=debian12/nodejs versioning=loose +ENV NODEJS_VERSION=18.19.0+dfsg-6~deb12u2 +# renovate: datasource=repology depName=debian12/npm versioning=loose +ENV NPM_VERSION=9.2.0~ds1-1 +# renovate: datasource=repology depName=debian12/python3-pip versioning=loose +ENV PYTHON3_PIP_VERSION=23.0.1+dfsg-1 +# renovate: datasource=repology depName=debian12/sqlite3 versioning=loose +ENV SQLITE3_VERSION=3.40.1-2 +# renovate: datasource=repology depName=debian12/libboost-program-options1.74.0 versioning=loose +ENV LIBBOOST_PROGRAM_OPTIONS1_74_0_VERSION=1.74.0+ds1-21 +# renovate: datasource=repology depName=debian12/libboost-log1.74.0 versioning=loose +ENV LIBBOOST_LOG1_74_0_VERSION=1.74.0+ds1-21 +# renovate: datasource=repology depName=debian12/libboost-chrono1.74.0 versioning=loose +ENV LIBBOOST_CHRONO1_74_0_VERSION=1.74.0+ds1-21 +# renovate: datasource=repology depName=debian12/libboost-system1.74.0 versioning=loose +ENV LIBBOOST_SYSTEM1_74_0_VERSION=1.74.0+ds1-21 +# renovate: datasource=repology depName=debian12/libssl3 versioning=loose +ENV LIBSSL3_VERSION=3.0.13-1~deb12u1 +# renovate: datasource=repology depName=debian12/libcurl4 versioning=loose +ENV LIBCURL4_VERSION=7.88.1-10+deb12u5 +# renovate: datasource=repology depName=debian12/libcap2 versioning=loose +ENV LIBCAP2_VERSION=1:2.66-4 +# renovate: datasource=repology depName=debian12/less versioning=loose +ENV LESS_VERSION=590-2.1~deb12u2 +# renovate: datasource=repology depName=debian12/python3-pydantic versioning=loose +ENV PYTHON3_PYDANTIC_VERSION=1.10.4-1 +# renovate: datasource=repology depName=debian12/python3-cryptography versioning=loose +ENV PYTHON3_CRYPTOGRAPHY_VERSION=38.0.4-3 +# renovate: datasource=repology depName=debian12/python3-netifaces versioning=loose +ENV PYTHON3_NETIFACES_VERSION=0.11.0-2+b1 +# renovate: datasource=repology depName=debian12/python3-psutil versioning=loose +ENV PYTHON3_PSUTIL_VERSION=5.9.4-1+b1 +# renovate: datasource=repology depName=debian12/python3-dateutil versioning=loose +ENV PYTHON3_DATEUTIL_VERSION=2.8.2-2 + RUN apt update \ && apt install --no-install-recommends -y \ - openjdk-17-jre=17.0.12+7-2~deb12u1 \ - nodejs=18.19.0+dfsg-6~deb12u2 \ - npm=9.2.0~ds1-1 \ - python3-pip=23.0.1+dfsg-1 \ - sqlite3=3.40.1-2 \ - libboost-program-options1.74.0=1.74.0+ds1-21 \ - libboost-log1.74.0=1.74.0+ds1-21 \ - libboost-chrono1.74.0=1.74.0+ds1-21 \ - libboost-system1.74.0=1.74.0+ds1-21 \ - libssl3=3.0.13-1~deb12u1 \ - libcurl4=7.88.1-10+deb12u5 \ - libcap2=1:2.66-4 \ - less=590-2.1~deb12u2 \ - python3-pydantic=1.10.4-1 \ - python3-cryptography=38.0.4-3 \ - python3-netifaces=0.11.0-2+b1 \ - python3-psutil=5.9.4-1+b1 \ - python3-dateutil=2.8.2-2 \ + openjdk-17-jre=${OPENJDK_17_JRE_VERSION} \ + nodejs=${NODEJS_VERSION} \ + npm=${NPM_VERSION} \ + python3-pip=${PYTHON3_PIP_VERSION} \ + sqlite3=${SQLITE3_VERSION} \ + libboost-program-options1.74.0=${LIBBOOST_PROGRAM_OPTIONS1_74_0_VERSION} \ + libboost-log1.74.0=${LIBBOOST_LOG1_74_0_VERSION} \ + libboost-chrono1.74.0=${LIBBOOST_CHRONO1_74_0_VERSION} \ + libboost-system1.74.0=${LIBBOOST_SYSTEM1_74_0_VERSION} \ + libssl3=${LIBSSL3_VERSION} \ + libcurl4=${LIBCURL4_VERSION} \ + libcap2=${LIBCAP2_VERSION} \ + less=${LESS_VERSION} \ + python3-pydantic=${PYTHON3_PYDANTIC_VERSION} \ + python3-cryptography=${PYTHON3_CRYPTOGRAPHY_VERSION} \ + python3-netifaces=${PYTHON3_NETIFACES_VERSION} \ + python3-psutil=${PYTHON3_PSUTIL_VERSION} \ + python3-dateutil=${PYTHON3_DATEUTIL_VERSION} \ && apt clean \ && rm -rf /var/lib/apt/lists/* +# renovate: datasource=pypi depName=environs +ENV ENVIRONS_VERSION=11.0.0 +# renovate: datasource=pypi depName=py4j +ENV PY4J_VERSION=0.10.9.7 +# renovate: datasource=pypi depName=aiofile +ENV AIOFILE_VERSION=3.8.8 + RUN python3 -m pip install --break-system-packages \ - environs==11.0.0 \ - py4j==0.10.9.7 \ - aiofile==3.8.8 \ + environs==${ENVIRONS_VERSION} \ + py4j==${PY4J_VERSION} \ + aiofile==${AIOFILE_VERSION}