From 9043f6c30c4c8c7bb35f2a93616a75a24ead84dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven!=20Ragnar=C3=B6k?= Date: Mon, 19 Aug 2024 20:16:54 -0700 Subject: [PATCH] Add earthly build configuration for building docs. I prefer the now acceptable build.earth filename over for the Filefile-style Earthfile. Along with the build.earth I've also included a .earthlyignore file which uses the same format as a [.dockerignore] file. Although we are not creating distributable images ignoring spurious files in the docker context helps cut down on cache misses invalidating dependency layers in the build. [.dockerignore]: https://docs.docker.com/build/concepts/context/#dockerignore-files --- .earthlyignore | 19 +++++++++++++++++++ build.earth | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 .earthlyignore create mode 100644 build.earth diff --git a/.earthlyignore b/.earthlyignore new file mode 100644 index 000000000..fab2394f8 --- /dev/null +++ b/.earthlyignore @@ -0,0 +1,19 @@ +# https://docs.docker.com/build/concepts/context/#dockerignore-files +# Unlike .gitignore files directories are not ignored at all layers by default. +# The **/ prefix will make a pattern behave like a .gitignore pattern and apply +# in any directory, including the root. +**/*.pyc +**/.direnv/ +**/.envrc +**/.git/ +**/.github/ +**/.pytest_cache/ +**/.ruff_cache/ +**/__pycache__/ +**/_build/ +**/build/ +**/deb_dist/ +**/dist/ +**/rosdep.egg-info/ +**/rosdep_modules.egg-info/ +**/target/ diff --git a/build.earth b/build.earth new file mode 100644 index 000000000..e932e204b --- /dev/null +++ b/build.earth @@ -0,0 +1,35 @@ +VERSION 0.8 + +build: + FROM docker.io/library/python:3.12 + RUN mkdir -p /src || true + COPY --dir doc src test \ + CHANGELOG.rst \ + Makefile \ + README.md \ + rosdoc.yaml \ + setup.cfg \ + setup.py \ + stdeb.cfg \ + /src/rosdep + WORKDIR /src/rosdep + RUN pip install -e . + +testdeps: + FROM +build + RUN pip install .[test] + +test: + # TODO tests aren't passing in context. + FROM +testdeps + RUN pytest test + +docdeps: + FROM +build + RUN pip install .[doc] + +doc: + FROM +docdeps + WORKDIR /src/rosdep/doc + RUN make html + SAVE ARTIFACT _build/html AS LOCAL doc/_build/html