diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f8f35c4f99d..71da134d51a 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -5,7 +5,7 @@ }, "workspaceMount": "source=${localWorkspaceFolder},target=/tmp/doc_repository,type=bind", "workspaceFolder": "/tmp/doc_repository", - "postCreateCommand": "pip3 install --no-warn-script-location --user -r requirements.txt -c constraints.txt", + "postCreateCommand": "pip3 install --no-warn-script-location --user --break-system-packages -r requirements.txt -c constraints.txt", "features": { "ghcr.io/devcontainers/features/git:1": {} }, diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 2e750b9cac6..c7c042d1f00 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -9,7 +9,7 @@ on: jobs: validate: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8a0c0e71f4d..622303411ac 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,7 +4,7 @@ on: pull_request jobs: test: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -12,7 +12,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' - name: Install dependencies with pip run: pip install --no-warn-script-location --user -r requirements.txt -c constraints.txt @@ -24,7 +24,7 @@ jobs: run: make test-tools lint: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -32,7 +32,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' - name: Install dependencies with pip run: pip install --no-warn-script-location --user -r requirements.txt -c constraints.txt @@ -41,7 +41,7 @@ jobs: run: make lint spellcheck: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -49,7 +49,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' - name: Install dependencies with pip run: pip install --no-warn-script-location --user -r requirements.txt -c constraints.txt @@ -59,7 +59,7 @@ jobs: build: needs: [test, lint] - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -67,7 +67,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' - name: Setup Graphviz uses: ts-graphviz/setup-graphviz@v2 diff --git a/README.md b/README.md index 3dffb339573..27420b9c519 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ pip install -r requirements.txt -c constraints.txt ### Pinned versions -For development we currently use Jammy (Ubuntu 22.04) as our build platform. +For development we currently use Noble (Ubuntu 24.04) as our build platform. And all python versions are pinned in the constraints file to make sure that things are reproducible. To upgrade the system validate that things are working and then use `pip freeze > constraints.txt` to lock in the versions to upgrade. diff --git a/conf.py b/conf.py index 1754ea079e9..0532287d682 100644 --- a/conf.py +++ b/conf.py @@ -86,6 +86,7 @@ 'sphinx_tabs.tabs', 'sphinx_rtd_theme', 'sphinx_sitemap_ros', + 'sphinxcontrib.googleanalytics', 'sphinxcontrib.mermaid', ] @@ -109,6 +110,9 @@ # See: https://sphinx-copybutton.readthedocs.io/en/latest/use.html#automatic-exclusion-of-prompts-from-the-copies copybutton_exclude = '.linenos, .gp, .go' +# Google Analytics configuration +googleanalytics_id = 'G-EVD5Z6G6NH' +googleanalytics_enabled = True # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for @@ -116,7 +120,6 @@ # html_theme = 'sphinx_rtd_theme' html_theme_options = { - 'analytics_id': 'G-EVD5Z6G6NH', 'collapse_navigation': False, 'sticky_navigation': True, 'navigation_depth': -1, diff --git a/constraints.txt b/constraints.txt index f904f5c8627..56ae59259be 100644 --- a/constraints.txt +++ b/constraints.txt @@ -1,36 +1,42 @@ -alabaster==0.7.12 -Babel==2.14.0 -certifi==2020.6.20 -chardet==4.0.0 -doc8==1.1.1 -docutils==0.20.1 -idna==2.10 -imagesize==1.3.0 -Jinja2==3.0.3 -MarkupSafe==2.0.1 -packaging==21.3 -pbr==5.8.0 +alabaster==1.0.0 +babel==2.17.0 +certifi==2025.10.5 +charset-normalizer==3.4.3 +click==8.3.0 +codespell==2.4.1 +doc8==2.0.0 +docutils==0.21.2 +idna==3.10 +imagesize==1.4.1 +iniconfig==2.1.0 +Jinja2==3.1.6 +MarkupSafe==3.0.3 +packaging==25.0 +pluggy==1.6.0 polib==1.2.0 -Pygments==2.17.2 -pyparsing==2.4.7 -pytest==8.3.5 -pytz==2022.1 -requests==2.25.1 -restructuredtext_lint==1.3.2 -snowballstemmer==2.2.0 -Sphinx==7.2.6 +Pygments==2.19.2 +pytest==8.4.2 +PyYAML==6.0.3 +regex==2025.9.18 +requests==2.32.5 +restructuredtext_lint==1.4.0 +roman-numerals-py==3.1.0 +snowballstemmer==3.0.1 +Sphinx==8.2.3 sphinx-copybutton==0.5.2 -sphinx-lint==0.9.1 +sphinx-lint==1.0.0 sphinx-multiversion==0.2.4 -sphinx-rtd-theme==2.0.0 -sphinx-tabs==3.4.5 -sphinxcontrib-applehelp==1.0.4 -sphinxcontrib-devhelp==1.0.2 -sphinxcontrib-htmlhelp==2.0.1 +sphinx-rtd-theme==3.0.2 +sphinx-tabs==3.4.7 +sphinx_tamer==0.2.0 +sphinxcontrib-applehelp==2.0.0 +sphinxcontrib-devhelp==2.0.0 +sphinxcontrib-googleanalytics==0.5 +sphinxcontrib-htmlhelp==2.1.0 sphinxcontrib-jquery==4.1 sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-mermaid==0.9.2 -sphinxcontrib-qthelp==1.0.3 -sphinxcontrib-serializinghtml==1.1.10 -stevedore==3.5.0 -urllib3==1.26.5 +sphinxcontrib-mermaid==1.0.0 +sphinxcontrib-qthelp==2.0.0 +sphinxcontrib-serializinghtml==2.0.0 +stevedore==5.5.0 +urllib3==2.5.0 diff --git a/docker/image/Dockerfile b/docker/image/Dockerfile index 74d0a843ff5..01899715893 100644 --- a/docker/image/Dockerfile +++ b/docker/image/Dockerfile @@ -1,9 +1,13 @@ # This dockerfile is expecting to be run with the following build command # (from the root of the git repository): # -# docker build -f docker/image/Dockerfile . +# $ docker build -f docker/image/Dockerfile --build-arg user=$(id -un) --build-arg uid=$(id -u) -t ros2_documentation . +# +# Then, to use the image to build the docs: +# +# $ docker run --rm -v $(pwd):/tmp/doc_repository ros2_documentation -FROM ubuntu:jammy +FROM ubuntu:noble ARG user=rosindex ARG uid=1000 @@ -36,4 +40,14 @@ USER $user # https://build.ros.org/job/doc_ros2doc/ relies on "make multiversion" to build the official documentation. # Do not remove "make multiversion" from CMD, as it is the entrypoint for the container. -CMD ["bash", "-c", "pip3 install --no-warn-script-location --user -r requirements.txt -c constraints.txt && make multiversion"] +# The constraints.txt file was generated with: +# $ cd ros2_documentation +# $ docker run -v $PWD:/ros2_documentation -it ubuntu:24.04 +# (docker)$ cd /ros2_documentation +# (docker)$ apt update +# (docker)$ apt install -y python3-pip python3-venv +# (docker)$ python3 -m venv venv-constraints +# (docker)$ . ./venv-constraints/bin/activate +# (docker)$ pip3 install -U -r requirements.txt +# (docker)$ pip3 freeze > constraints.txt +CMD ["bash", "-c", "pip3 install --no-warn-script-location --user --break-system-packages -r requirements.txt -c constraints.txt && make multiversion"] diff --git a/requirements.txt b/requirements.txt index f9e4d129f85..f952c4882fb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,5 +9,6 @@ sphinx-lint sphinx-multiversion sphinx-rtd-theme sphinx-tabs -sphinxcontrib-mermaid sphinx-tamer +sphinxcontrib-googleanalytics +sphinxcontrib-mermaid