Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add how to build the doc with devcontainer. #4757

Open
wants to merge 3 commits into
base: rolling
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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 -r requirements.txt -c constraints.txt --break-system-packages",
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is required for ubuntu 24.04 or later, see more details for https://peps.python.org/pep-0668/

and that should be no problem, since this option is applied in the container environment only.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, I'm a bit confused about why this is needed here.

The current Dockerfile uses Ubuntu 22.04:

. And there, this flag will not work; the version of setuptools in Ubuntu 22.04 doesn't understand this flag. Are we somehow getting a newer version of setuptools here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the version of setuptools in Ubuntu 22.04 doesn't understand this flag

This PR also changes the Dockerfile to use ubuntu:24.04? or did you mean something else?? btw, i verified that this works with no problem.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR also changes the Dockerfile to use ubuntu:24.04?

No, sorry, I just looked too quickly.

One thing we have to be careful about with changing the Dockerfile is that the Dockerfile is used to build and deploy the documentation. So as soon as we merge this, we'll start using 24.04 for the deployment. That is the correct thing going forward, but I'm going to hold off on merging this until I can merge it and immediately run a doc deployment job.

"features": {
"ghcr.io/devcontainers/features/git:1": {}
},
Expand Down
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,21 @@ To build this you need to install

* make
* graphviz
* python virtualenv


In the virtualenv
With [venv](https://docs.python.org/3/library/venv.html)

```
# activate the venv
python3 -m venv ros2doc

# activate venv
source ros2doc/bin/activate

# install required packages
pip install -r requirements.txt -c constraints.txt

# deactivate the venv
(ros2doc) deactivate
```

### Pinned versions
Expand All @@ -36,6 +44,7 @@ To upgrade the system validate that things are working and then use `pip freeze
## Building HTML

### Local development test

For local testing of the current tree use:

`make html`
Expand Down
7 changes: 5 additions & 2 deletions docker/image/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@
#
# docker build -f docker/image/Dockerfile .

FROM ubuntu:jammy
FROM ubuntu:noble

ARG user=rosindex
ARG uid=1000

ENV DEBIAN_FRONTEND noninteractive
ENV SHELL /bin/bash

# Delete user if it exists in container (e.g Ubuntu Noble: ubuntu)
RUN if id -u $uid ; then userdel `id -un $uid` ; fi

RUN apt-get update && \
apt-get install --no-install-recommends -y \
git-all \
Expand All @@ -31,4 +34,4 @@ WORKDIR /tmp/doc_repository

USER $user

CMD pip3 install --no-warn-script-location --user -r requirements.txt -c constraints.txt && make multiversion
CMD pip3 install --no-warn-script-location --user -r requirements.txt -c constraints.txt --break-system-packages && make multiversion
Original file line number Diff line number Diff line change
Expand Up @@ -33,29 +33,37 @@ The root directory contains configuration and files required to locally build th
Building the site locally
-------------------------

Start by installing requirements located in the ``requirements.txt`` file:
Start by creating `venv <https://docs.python.org/3/library/venv.html>`__ to build the documentation:

.. code-block:: console

# activate the venv
python3 -m venv ros2doc

# activate venv
source ros2doc/bin/activate

And install requirements located in the ``requirements.txt`` file:

.. tabs::

.. group-tab:: Linux

The next command does a user-specific install, which requires ``~/.local/bin/`` to be added to ``$PATH``:

.. code-block:: console

pip3 install --user --upgrade -r requirements.txt
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this command fails with venv,

(ros2doc) root@tomoyafujita:~/ros2_ws/work/ros2_documentation# pip3 install --user --upgrade -r requirements.txt
ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

pip install -r requirements.txt -c constraints.txt

.. group-tab:: macOS

.. code-block:: console

pip3 install --user --upgrade -r requirements.txt
pip install -r requirements.txt -c constraints.txt
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am almost sure this works, but i do not have the dev environment with macOS and Windows, so i would like someone to help to make sure.


.. group-tab:: Windows

.. code-block:: console

python -m pip install --user --upgrade -r requirements.txt
python -m pip install -r requirements.txt -c constraints.txt

In order for Sphinx to be able to generate diagrams, the ``dot`` command must be available.

Expand Down Expand Up @@ -232,6 +240,38 @@ Finally, to view the site, you can click on the "Go Live" button in the right bo
:width: 100%
:alt: Live Server

Building the Site with Devcontainer
-----------------------------------

`ROS 2 Documentation GitHub repository <https://github.com/ros2/ros2_documentation>`__ also supports ``Devcontainer`` development environment with Visual Studio Code.
This will enable you to build the documentation much easier without changing your operating system.

See :doc:`../../How-To-Guides/Setup-ROS-2-with-VSCode-and-Docker-Container` to install VS Code and Docker before the following procedure.

Clone repository and start VS Code:

.. code-block:: console

git clone https://github.com/ros2/ros2_documentation
cd ./ros2_documentation
code .

To use ``Devcontainer``, you need to install "Remote Development" Extension within VS Code search in Extensions (CTRL+SHIFT+X) for it.

And then, use ``View->Command Palette...`` or ``Ctrl+Shift+P`` to open the command palette.
Search for the command ``Dev Containers: Reopen in Container`` and execute it.
This will build your development docker container for you automatically.

To build the documentation, open a terminal using ``View->Terminal`` or ``Ctrl+Shift+``` and ``New Terminal`` in VS Code.
Inside the terminal, you can build the documentation:

.. code-block:: console

make html

.. image:: images/vscode_devcontainer.png
:width: 100%
:alt: VS Code Devcontainer

Writing pages
-------------
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.