From 05ef58de30d12eb3aba541612901368e73c4708b Mon Sep 17 00:00:00 2001 From: ruffsl Date: Mon, 11 May 2020 22:53:43 -0700 Subject: [PATCH 01/61] Add drawing of CI pipline --- doc/continuous_integration/pipeline.drawio | 261 +++++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 doc/continuous_integration/pipeline.drawio diff --git a/doc/continuous_integration/pipeline.drawio b/doc/continuous_integration/pipeline.drawio new file mode 100644 index 0000000000..173764f25a --- /dev/null +++ b/doc/continuous_integration/pipeline.drawio @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From b211da6a650d5d17c0432a614627b8595d12df2f Mon Sep 17 00:00:00 2001 From: ruffsl Date: Mon, 11 May 2020 22:54:31 -0700 Subject: [PATCH 02/61] Add png of CI pipline --- doc/continuous_integration/pipeline.png | Bin 0 -> 120366 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/continuous_integration/pipeline.png diff --git a/doc/continuous_integration/pipeline.png b/doc/continuous_integration/pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..e64750ad1bc94d965094850997edf2cc8ba929cf GIT binary patch literal 120366 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 z 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ℑF(drV@JE1f`U;3VzlWu32fDsY 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≦E#xlv)`7*N2@>w@JiPcd|?a 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 Date: Tue, 12 May 2020 15:24:13 -0700 Subject: [PATCH 03/61] Add CI readme --- doc/continuous_integration/README.md | 42 ++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 doc/continuous_integration/README.md diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md new file mode 100644 index 0000000000..4169ae621c --- /dev/null +++ b/doc/continuous_integration/README.md @@ -0,0 +1,42 @@ +# Continuous Integration Documentation +Documentation on the existing CI for the project is resides here. + +## Overview +The existing CI is composed of multiple integration services that together help provide maintainers a fast and scalable testing environment. To help detect upstream breakages quickly as well, the existing CI allows for changes to be evaluated using the latest development dependencies. In light of the large dependency footprint a high-level ROS2 navigation stack necessitates, the use of each integration service is optimized to maximize caching of environmental setup and increase workflow throughput. As these optimizations add complexity to the CI configuration, this documentation provides further explanations and resigning behind each configuration. + +![pipeline](pipeline.png) + +The figure above is an high level diagram on how the integration services described below are composed. + +## Integrations + +The following links document each integration and are best approached in the same order presented. + +### [GitHub](github.md) + +GitHub is used for hosting the source repo, tickets and PRs, as well for managing the OAuth and configs for the rest of the other integration services in the CI pipeline. + +### [Dockerfile](dockerfile.md) + +Dockerfiles are used for generating the docker images for building and testing the project. They also self document the setup and configuration of upstream dependencies, ensuring contributors have a reproducible and repeatable development environment for collaboration. + +### [DockerHub](dockerfile.md) + +DockerHub is used to build and host the repo of tagged docker images, so that downstream services in the CI pipeline can quickly download and bootstrap the latest up-to-date development environment. + +### [CircleCI](circleci.md) + +CircleCI is used to checkout, build, and test the project via docker containers spawned from the tagged docker images. Triggered by scheduled or GitHub events like pushed commits branches or pull requests, it deterministically retains a warm build cache while generating logs and test result artifacts. + +### [CodeCov](codecov.md) + +CodeCov is used to help monitor code quality by rendering test artifacts from the upstream pipeline into interactive analytics, improving the visibility of the project's health and feedback for contributions. + +## Future Work + +The CI has some room for improvement and streamlining and may evolve over time. The following notes alterative integration options, as the current pros and cons for each. + +### GitHub Actions +* test result reports +* workspace caching +* uploading artifacts \ No newline at end of file From 2f6bea161d28f9f75f4cf1ab7a69b8bbc2c787aa Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 12 May 2020 15:24:31 -0700 Subject: [PATCH 04/61] Add placeholder doc files --- doc/continuous_integration/circleci.md | 1 + doc/continuous_integration/codecov.md | 1 + doc/continuous_integration/dockerfile.md | 0 doc/continuous_integration/dockerhub.md | 1 + 4 files changed, 3 insertions(+) create mode 100644 doc/continuous_integration/circleci.md create mode 100644 doc/continuous_integration/codecov.md create mode 100644 doc/continuous_integration/dockerfile.md create mode 100644 doc/continuous_integration/dockerhub.md diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md new file mode 100644 index 0000000000..b8fa3cfdf3 --- /dev/null +++ b/doc/continuous_integration/circleci.md @@ -0,0 +1 @@ +https://circleci.com/gh/ros-planning/navigation2 \ No newline at end of file diff --git a/doc/continuous_integration/codecov.md b/doc/continuous_integration/codecov.md new file mode 100644 index 0000000000..6104fb82b4 --- /dev/null +++ b/doc/continuous_integration/codecov.md @@ -0,0 +1 @@ +https://codecov.io/gh/ros-planning/navigation2 \ No newline at end of file diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/doc/continuous_integration/dockerhub.md b/doc/continuous_integration/dockerhub.md new file mode 100644 index 0000000000..311a8e3eb3 --- /dev/null +++ b/doc/continuous_integration/dockerhub.md @@ -0,0 +1 @@ +https://hub.docker.com/r/rosplanning/navigation2 \ No newline at end of file From 0077680fcaebf9eed71f8a6d59901438559c522b Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 12 May 2020 15:28:47 -0700 Subject: [PATCH 05/61] Move figs to subfolder --- doc/continuous_integration/README.md | 2 +- .../{ => figs}/pipeline.drawio | 0 doc/continuous_integration/{ => figs}/pipeline.png | Bin 3 files changed, 1 insertion(+), 1 deletion(-) rename doc/continuous_integration/{ => figs}/pipeline.drawio (100%) rename doc/continuous_integration/{ => figs}/pipeline.png (100%) diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md index 4169ae621c..c688b01658 100644 --- a/doc/continuous_integration/README.md +++ b/doc/continuous_integration/README.md @@ -4,7 +4,7 @@ Documentation on the existing CI for the project is resides here. ## Overview The existing CI is composed of multiple integration services that together help provide maintainers a fast and scalable testing environment. To help detect upstream breakages quickly as well, the existing CI allows for changes to be evaluated using the latest development dependencies. In light of the large dependency footprint a high-level ROS2 navigation stack necessitates, the use of each integration service is optimized to maximize caching of environmental setup and increase workflow throughput. As these optimizations add complexity to the CI configuration, this documentation provides further explanations and resigning behind each configuration. -![pipeline](pipeline.png) +![pipeline](figs/pipeline.png) The figure above is an high level diagram on how the integration services described below are composed. diff --git a/doc/continuous_integration/pipeline.drawio b/doc/continuous_integration/figs/pipeline.drawio similarity index 100% rename from doc/continuous_integration/pipeline.drawio rename to doc/continuous_integration/figs/pipeline.drawio diff --git a/doc/continuous_integration/pipeline.png b/doc/continuous_integration/figs/pipeline.png similarity index 100% rename from doc/continuous_integration/pipeline.png rename to doc/continuous_integration/figs/pipeline.png From f40ef64bef5d0e8d884c9b4ab8c7589a087cec83 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Tue, 12 May 2020 16:56:34 -0700 Subject: [PATCH 06/61] Add comments on circleci --- doc/continuous_integration/circleci.md | 35 +++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index b8fa3cfdf3..15891514e2 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -1 +1,34 @@ -https://circleci.com/gh/ros-planning/navigation2 \ No newline at end of file +https://circleci.com/gh/ros-planning/navigation2 + +CircleCI is configured via the [config.yml](/.circleci/config.yml) yaml file within the `.circleci/` folder at the root of the GitHub repo. Further references on configuring CircleCI, such as syntax and structure can be found here: + +* https://circleci.com/docs/2.0/writing-yaml +* https://circleci.com/docs/2.0/configuration-reference + +The config file for this project is self contained and thus densely structured, yet written in a functional style to remain DRY and modular. This keeps it easily generalizable for other ROS packages or for adjusting overlayed workspace. Given the anchors and references in yaml, it's consequently best approached by reading the config file from bottom to top in order of abstraction hierarchy. + +## Workflows + +## Jobs + +## Executors + +## Commands + +## References + +### Common Environment + +### Common Commands + +#### Caching + +#### Building + +#### Testing + +### Checkout + +### Workspaces + +### Code Coverage \ No newline at end of file From 154ef0fd4b2bb1cf003b23b9c5691b0d17a78caf Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 14 May 2020 22:06:19 -0700 Subject: [PATCH 07/61] Stage more links --- doc/continuous_integration/codecov.md | 4 ++- doc/continuous_integration/dockerfile.md | 33 ++++++++++++++++++++++++ doc/continuous_integration/dockerhub.md | 15 ++++++++++- 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/doc/continuous_integration/codecov.md b/doc/continuous_integration/codecov.md index 6104fb82b4..0179de6ffe 100644 --- a/doc/continuous_integration/codecov.md +++ b/doc/continuous_integration/codecov.md @@ -1 +1,3 @@ -https://codecov.io/gh/ros-planning/navigation2 \ No newline at end of file +https://codecov.io/gh/ros-planning/navigation2 + +https://docs.codecov.io/docs/codecov-yaml \ No newline at end of file diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index e69de29bb2..c55d0909ce 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -0,0 +1,33 @@ +Dockerfiles are + +configured via the [Dockerfile](/Dockerfile) yaml file within the `.circleci/` folder at the root of the GitHub repo. Further references on configuring CircleCI, such as syntax and structure can be found here: + +* https://circleci.com/docs/2.0/writing-yaml +* https://circleci.com/docs/2.0/configuration-reference + +https://docs.docker.com/engine/reference/builder/ + + +* https://hub.docker.com/_/ros +* https://github.com/osrf/docker_images + + +* [colcon](https://colcon.readthedocs.io/en/released) + * CLI tool to build sets of software packages +* [rosdep](http://wiki.ros.org/rosdep) + * CLI tool for installing system dependencies +* [vcstool](https://github.com/dirk-thomas/vcstool) + * CLI for working with multiple repositories easier + + + +* [ccache](https://ccache.dev) + * Compiler cache for speeding up recompilation +* [lcov](http://ltp.sourceforge.net/coverage/lcov.php) + * Front-end for GCC's coverage testing tool gcov + +* https://docs.docker.com/develop/develop-images/build_enhancements/ +* https://github.com/moby/buildkit + + +[cache apt packages](https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#example-cache-apt-packages) to avoid unnecessarily re-downloading the same packages from over the network, even if the docker image layer cache for that directive in the Dockerfile is busted. diff --git a/doc/continuous_integration/dockerhub.md b/doc/continuous_integration/dockerhub.md index 311a8e3eb3..fe15515d39 100644 --- a/doc/continuous_integration/dockerhub.md +++ b/doc/continuous_integration/dockerhub.md @@ -1 +1,14 @@ -https://hub.docker.com/r/rosplanning/navigation2 \ No newline at end of file +https://hub.docker.com + +https://hub.docker.com/r/rosplanning/navigation2 + + + + + +https://docs.docker.com/docker-hub/builds +https://docs.docker.com/docker-hub/builds/advanced + +https://docs.docker.com/docker-hub/webhooks + +[example](https://github.com/osrf/docker_images/blob/master/.github/workflows/trigger_nightly.yaml) \ No newline at end of file From b57a86799f48cab4a5ff241caf081877c187821d Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 28 May 2020 20:19:44 -0700 Subject: [PATCH 08/61] Add content about Dockerfiles --- doc/continuous_integration/dockerfile.md | 74 ++++++++++++++++++++---- 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index c55d0909ce..2f82bc04ee 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -1,33 +1,83 @@ -Dockerfiles are +Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide repeatable and reproducible means to build and test the project. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: -configured via the [Dockerfile](/Dockerfile) yaml file within the `.circleci/` folder at the root of the GitHub repo. Further references on configuring CircleCI, such as syntax and structure can be found here: - -* https://circleci.com/docs/2.0/writing-yaml -* https://circleci.com/docs/2.0/configuration-reference - -https://docs.docker.com/engine/reference/builder/ +* https://docs.docker.com/engine/reference/builder +* https://docs.docker.com/develop/develop-images/dockerfile_best-practices +The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub, thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. Documentation for upstream repos on DockerHub can be found here: * https://hub.docker.com/_/ros * https://github.com/osrf/docker_images +While main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a release ROS2 distro using available pre-built binary dependencies. We'll walk though the main Dockerfile here, although all of them follow the same basic pattern. + +## Global Arguments + +The Dockerfile first declares a number of optional `ARG` values and respective defaults to specify the parent image to build `FROM` and workspace paths. Here the Dockerfiles assume all workspaces are nested within the `/opt` directory. These `ARG`s can be accessed similarly to `ENV`s, but must be declared in stage's scope before they can be used, and unlike `ENV` only exist at build time of that stage and do not persist in the resulting image. + +## Cacher Stage + +A `cacher` stage is then started to gather together the necessary source files to eventually build. A directory for the underlay workspace is then created and populated using `vcs` with the respective `.repos` file that defines the relevant repositories to pull and particular versions to checkout into the source directory. More info on vcstool can be found here: -* [colcon](https://colcon.readthedocs.io/en/released) - * CLI tool to build sets of software packages -* [rosdep](http://wiki.ros.org/rosdep) - * CLI tool for installing system dependencies * [vcstool](https://github.com/dirk-thomas/vcstool) * CLI for working with multiple repositories easier +The `.repos` file is not copied directly into the `src` folder to avoid any restructuring of the yaml data from unintentionally busting the docker build cache in later stages. The ephemeral files within `.git` repo folders are similarly removed and help bolster deterministic builds. + +The overlay workspace is then also created and populated using all the files in the docker build context, i.e. the [root](/) directory of the repo. This is done after the underlay is cloned to avoid having to re-download underlay source files if the `.repos` files are unchanged. However, if the `.repos` file is changed, and different source files are cloned, this can then bust the docker build cache. Other ephemeral or unessential project files are safely ignored using the [`.dockerignore`](/.dockerignore) config. If ever the docker build cache is cache is somehow stale, using the docker build flag `--no-cache` may be used to freshly build anew. + +Finally the `cacher` stage copies the all manifest related files in place within the `/opt` directory into a temporary mirrored directory that later stages can copy from without unnecessarily busting it's docker build cache. The [`source.Dockerfile`](/.dockerhub/source.Dockerfile) provides more a advance example of avoiding ignored package, or packages that are unnecessary as overlay dependencies. + +## Builder Stage +A `builder` stage is then started to install external dependencies and compile the respective workspaces. Static CI dependencies are first installed before any later potential cache busting directives. These include: * [ccache](https://ccache.dev) * Compiler cache for speeding up recompilation * [lcov](http://ltp.sourceforge.net/coverage/lcov.php) * Front-end for GCC's coverage testing tool gcov +### Install Dependencies + +Dependencies for the underlay workspace are then installed using `rosdep` by pointing to the manifest files within the mirrored source directory copied from the `cacher` stage. This ensures the lengthy process of downloading, unpacking, and installing any external dependencies can be skipped using the docker build cache as long as the manifest files within the underlay remain unchanged. More info on rosdep can be found here: + +* [rosdep](http://wiki.ros.org/rosdep) + * CLI tool for installing system dependencies + +The sourcing of the ROS setup file is done to permit rosdep to find additional packages within the installed ament index via `AMENT_PREFIX_PATH` environment variable, or potentially vendored packages unregistered in ament index via the legacy `ROS_PACKAGE_PATH` env. Cleanup of the apt list directory is done as a best practice in Docker to prevent from ever using stale apt list caches. + +### Build Source + +The underlay workspace is then built using `colcon` by first copying over the rest of the source files from the original `src` directory from the `cacher` stage. The colcon flag `--symlink-install` is used to avoid the duplication of files for smaller image sizes, while mixin argument is also parameterized as a Dockerfile `ARG` to programmatically switch between `debug` or `release` builds in CI. More info on colcon can be found here: + +* [colcon](https://colcon.readthedocs.io/en/released) + * CLI tool to build sets of software packages +* [colcon-mixin](https://github.com/colcon/colcon-mixin) + * An extension for colcon-core to fetch and manage CLI mixins from repositories +* [colcon-mixin-repository](https://github.com/colcon/colcon-mixin-repository) + * Repository of common colcon CLI mixins + +The addition of the `ccache` mixin is used to pre-bake a warm ccache directory into the image as well as a pre-built underlay workspace. This will help speedup consecutive builds should later steps in the CI or maintainers have need to rebuild the underlay using the final image. The `console_direct` event handler is used to avoid CI timeout from inactive stdout for slower package builds while the `FAIL_ON_BUILD_FAILURE` env is used to control whether the docker image build should fail to complete upon failure from colcon build. + +## Overlay Workspace + +The overlay workspace is then set up in a similar manner where the same steps are repeated, only now sourcing the underlay setup file, and by building within the overlay directory. The separation of underlay vs overlay workspace helps split caching of compilation across the two major points of change; that of external dependencies that change infrequently upon new releases vs local project source files that perpetually change during development. The overlay mixins are parameterized via `ARG` as well to allow the underlay and overlay to be independently configured by CI or local developers. + +### Setup Entrypoint + +The default entrypoint `ros_entrypoint.sh` inherited from the parent image is then updated to only source the top level overlay instead. The configured `ARG`s defining the paths used to the underlay and overlay are also exported to `ENV`s to persist in the final image as a developer convenience. + +### Testing Overlay + +The overlay may then be optionaly tested using the same additional mixins. The results of the test may also be used to optionaly fail the entire build; useful if the return code from `docker build` command itself is used as a primitive form of CI, or demonstrating to new contributors on how to locally test pull requests by invoking the colcon CLI. + +## Buildkit + +A difference for other Dockerfiles, not needing to be built by DockerHub and thus not limited in backwards compatibility, is the use of newer mount syntax options in buildkit, allowing for persistent caching of downloaded apt packages and ccache files across successful builds of the same Dockerfile. More info on buildkit can be found here: + * https://docs.docker.com/develop/develop-images/build_enhancements/ * https://github.com/moby/buildkit +The [`distro.Dockerfile`][/.dockerhub/distro.Dockerfile] provides once such example of this. More info on using mounts for caching data across docker builds can be found here: -[cache apt packages](https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#example-cache-apt-packages) to avoid unnecessarily re-downloading the same packages from over the network, even if the docker image layer cache for that directive in the Dockerfile is busted. +* [cache apt packages](https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#example-cache-apt-packages) + * avoid unnecessarily re-downloading the same packages over the network, even if the docker image layer cache for that `RUN` directive in the Dockerfile is busted From 61d9a29a43f52306372e28c3a8c7217b8c5539a9 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 28 May 2020 20:28:43 -0700 Subject: [PATCH 09/61] Title docker links --- doc/continuous_integration/dockerfile.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 2f82bc04ee..6eb6303cef 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -1,12 +1,14 @@ Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide repeatable and reproducible means to build and test the project. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: -* https://docs.docker.com/engine/reference/builder -* https://docs.docker.com/develop/develop-images/dockerfile_best-practices +* [Dockerfile reference +](https://docs.docker.com/engine/reference/builder) +* [Best practices for writing Dockerfiles +](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub, thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. Documentation for upstream repos on DockerHub can be found here: -* https://hub.docker.com/_/ros -* https://github.com/osrf/docker_images +* [Official ROS Docker Images](https://hub.docker.com/_/ros) +* [Official OSRF Dockerfiles](https://github.com/osrf/docker_images) While main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a release ROS2 distro using available pre-built binary dependencies. We'll walk though the main Dockerfile here, although all of them follow the same basic pattern. @@ -74,8 +76,9 @@ The overlay may then be optionaly tested using the same additional mixins. The r A difference for other Dockerfiles, not needing to be built by DockerHub and thus not limited in backwards compatibility, is the use of newer mount syntax options in buildkit, allowing for persistent caching of downloaded apt packages and ccache files across successful builds of the same Dockerfile. More info on buildkit can be found here: -* https://docs.docker.com/develop/develop-images/build_enhancements/ -* https://github.com/moby/buildkit +* [Build images with BuildKit +](https://docs.docker.com/develop/develop-images/build_enhancements) +* [Buildkit repo](https://github.com/moby/buildkit) The [`distro.Dockerfile`][/.dockerhub/distro.Dockerfile] provides once such example of this. More info on using mounts for caching data across docker builds can be found here: From 708a52e77a0f3ce0d2821cefbfea1d72b4705a7a Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 28 May 2020 20:52:05 -0700 Subject: [PATCH 10/61] Add comments on FROM image --- doc/continuous_integration/dockerfile.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 6eb6303cef..0ab4ff68b9 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -16,6 +16,8 @@ While main [`Dockerfile`](/Dockerfile) at the root of the repo is used for devel The Dockerfile first declares a number of optional `ARG` values and respective defaults to specify the parent image to build `FROM` and workspace paths. Here the Dockerfiles assume all workspaces are nested within the `/opt` directory. These `ARG`s can be accessed similarly to `ENV`s, but must be declared in stage's scope before they can be used, and unlike `ENV` only exist at build time of that stage and do not persist in the resulting image. +Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, allowing the master branch to simply build against the bleeding edge of ROS2 core development. Enabling project maintainers to spot breaking API changes and regressions as soon as they are merged into master upstream. Alternatively, an image tag based on a released ROS2 distro image, e.g. `ros:`, could also be substituted to compile the project, say for quickly experimenting with planners using complex reinforcement or deep learning framework dependencies. + ## Cacher Stage A `cacher` stage is then started to gather together the necessary source files to eventually build. A directory for the underlay workspace is then created and populated using `vcs` with the respective `.repos` file that defines the relevant repositories to pull and particular versions to checkout into the source directory. More info on vcstool can be found here: From e55b01d6c702fb934beaa3d435b24ccd1bf46e73 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 28 May 2020 20:53:13 -0700 Subject: [PATCH 11/61] Fix typos --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 0ab4ff68b9..3b56411975 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -10,7 +10,7 @@ The Dockerfiles for this project are built upon parent images from upstream repo * [Official ROS Docker Images](https://hub.docker.com/_/ros) * [Official OSRF Dockerfiles](https://github.com/osrf/docker_images) -While main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a release ROS2 distro using available pre-built binary dependencies. We'll walk though the main Dockerfile here, although all of them follow the same basic pattern. +While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a released ROS2 distro using available pre-built binary dependencies. We'll walk through the main Dockerfile here, although all of them follow the same basic pattern. ## Global Arguments From 3294835082d81a8773652837239dc447405292cb Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 28 May 2020 22:51:52 -0700 Subject: [PATCH 12/61] Small touchup --- doc/continuous_integration/dockerfile.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 3b56411975..a9381c9d38 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -14,9 +14,12 @@ While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for d ## Global Arguments -The Dockerfile first declares a number of optional `ARG` values and respective defaults to specify the parent image to build `FROM` and workspace paths. Here the Dockerfiles assume all workspaces are nested within the `/opt` directory. These `ARG`s can be accessed similarly to `ENV`s, but must be declared in stage's scope before they can be used, and unlike `ENV` only exist at build time of that stage and do not persist in the resulting image. +The Dockerfile first declares a number of optional `ARG` values and respective defaults to specify the parent image to build `FROM` and workspace paths. Here the Dockerfiles assume all workspaces are nested within the `/opt` directory. These `ARG`s can be accessed similarly to `ENV`s, but must be declared in a stage's scope before they can be used, and unlike `ENV` only exist at build time of that stage and do not persist in the resulting image. For multi-stage builds, the last stage is what is tagged as the final image. More info on multi-stage builds can be found here: -Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, allowing the master branch to simply build against the bleeding edge of ROS2 core development. Enabling project maintainers to spot breaking API changes and regressions as soon as they are merged into master upstream. Alternatively, an image tag based on a released ROS2 distro image, e.g. `ros:`, could also be substituted to compile the project, say for quickly experimenting with planners using complex reinforcement or deep learning framework dependencies. +* [Use multi-stage builds +](https://docs.docker.com/develop/develop-images/multistage-build) + +Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, allowing the master branch to simply build against the bleeding edge of ROS2 core development. This allows project maintainers to spot breaking API changes and regressions as soon as they are merged upstream. Alternatively, any image tag based on a released ROS2 distro image, e.g. `ros:`, could also be substituted to compile the project, say for quickly experimenting with planners ontop of complex reinforcement or deep learning framework dependencies. ## Cacher Stage @@ -29,7 +32,7 @@ The `.repos` file is not copied directly into the `src` folder to avoid any rest The overlay workspace is then also created and populated using all the files in the docker build context, i.e. the [root](/) directory of the repo. This is done after the underlay is cloned to avoid having to re-download underlay source files if the `.repos` files are unchanged. However, if the `.repos` file is changed, and different source files are cloned, this can then bust the docker build cache. Other ephemeral or unessential project files are safely ignored using the [`.dockerignore`](/.dockerignore) config. If ever the docker build cache is cache is somehow stale, using the docker build flag `--no-cache` may be used to freshly build anew. -Finally the `cacher` stage copies the all manifest related files in place within the `/opt` directory into a temporary mirrored directory that later stages can copy from without unnecessarily busting it's docker build cache. The [`source.Dockerfile`](/.dockerhub/source.Dockerfile) provides more a advance example of avoiding ignored package, or packages that are unnecessary as overlay dependencies. +Finally the `cacher` stage copies all manifest related files in place within the `/opt` directory into a temporary mirrored directory that later stages can copy from without unnecessarily busting it's docker build cache. The [`source.Dockerfile`](/.dockerhub/source.Dockerfile) provides an advance example of avoiding ignored package, or packages that are unnecessary as overlay dependencies. ## Builder Stage @@ -47,7 +50,7 @@ Dependencies for the underlay workspace are then installed using `rosdep` by poi * [rosdep](http://wiki.ros.org/rosdep) * CLI tool for installing system dependencies -The sourcing of the ROS setup file is done to permit rosdep to find additional packages within the installed ament index via `AMENT_PREFIX_PATH` environment variable, or potentially vendored packages unregistered in ament index via the legacy `ROS_PACKAGE_PATH` env. Cleanup of the apt list directory is done as a best practice in Docker to prevent from ever using stale apt list caches. +The sourcing of the ROS setup file is done to permit rosdep to find additional packages within the installed in ament index via `AMENT_PREFIX_PATH` environment variable, or potentially vendored packages unregistered in ament index via the legacy `ROS_PACKAGE_PATH` env. Cleanup of the apt list directory is done as a best practice in Docker to prevent from ever using stale apt list caches. ### Build Source @@ -60,11 +63,11 @@ The underlay workspace is then built using `colcon` by first copying over the re * [colcon-mixin-repository](https://github.com/colcon/colcon-mixin-repository) * Repository of common colcon CLI mixins -The addition of the `ccache` mixin is used to pre-bake a warm ccache directory into the image as well as a pre-built underlay workspace. This will help speedup consecutive builds should later steps in the CI or maintainers have need to rebuild the underlay using the final image. The `console_direct` event handler is used to avoid CI timeout from inactive stdout for slower package builds while the `FAIL_ON_BUILD_FAILURE` env is used to control whether the docker image build should fail to complete upon failure from colcon build. +The addition of the `ccache` mixin is used to pre-bake a warm ccache directory into the image as well as a pre-built underlay workspace. This will help speedup consecutive builds should later steps in the CI or maintainers have need to rebuild the underlay using the final image. The `console_direct` event handler is used to avoid CI timeout from inactive stdout for slower package builds while the `FAIL_ON_BUILD_FAILURE` env is used to control whether the docker image build should fail to complete upon encountering errors durring colcon build. ## Overlay Workspace -The overlay workspace is then set up in a similar manner where the same steps are repeated, only now sourcing the underlay setup file, and by building within the overlay directory. The separation of underlay vs overlay workspace helps split caching of compilation across the two major points of change; that of external dependencies that change infrequently upon new releases vs local project source files that perpetually change during development. The overlay mixins are parameterized via `ARG` as well to allow the underlay and overlay to be independently configured by CI or local developers. +The overlay workspace is then set up in a similar manner where the same steps are repeated, only now sourcing the underlay setup file, and by building within the overlay directory. The separation of underlay vs overlay workspace helps split caching of compilation across the two major points of change; that of external dependencies that change infrequently upon new releases vs local project source files that perpetually change during development. The overlay mixins are parameterized via `ARG` as well to allow the underlay and overlay to be independently configured by CI or local developers. This pattern can be repeated to chain together workspaces in one or multiple Dockerfiles; practically useful when working with a stack of related projects with deep recursive dependencies. ### Setup Entrypoint @@ -82,7 +85,7 @@ A difference for other Dockerfiles, not needing to be built by DockerHub and thu ](https://docs.docker.com/develop/develop-images/build_enhancements) * [Buildkit repo](https://github.com/moby/buildkit) -The [`distro.Dockerfile`][/.dockerhub/distro.Dockerfile] provides once such example of this. More info on using mounts for caching data across docker builds can be found here: +The [`distro.Dockerfile`](/.dockerhub/distro.Dockerfile) provides once such example of this. More info on using mounts for caching data across docker builds can be found here: * [cache apt packages](https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#example-cache-apt-packages) * avoid unnecessarily re-downloading the same packages over the network, even if the docker image layer cache for that `RUN` directive in the Dockerfile is busted From ee8d022d8768a1f7d9af28dba5cb83433576f585 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 28 May 2020 22:59:24 -0700 Subject: [PATCH 13/61] Touchup --- doc/continuous_integration/dockerfile.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index a9381c9d38..7ffbfc85ef 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -1,3 +1,5 @@ +# Dockerfile Documentation + Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide repeatable and reproducible means to build and test the project. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: * [Dockerfile reference @@ -59,7 +61,7 @@ The underlay workspace is then built using `colcon` by first copying over the re * [colcon](https://colcon.readthedocs.io/en/released) * CLI tool to build sets of software packages * [colcon-mixin](https://github.com/colcon/colcon-mixin) - * An extension for colcon-core to fetch and manage CLI mixins from repositories + * An extension to fetch and manage CLI mixins from repositories * [colcon-mixin-repository](https://github.com/colcon/colcon-mixin-repository) * Repository of common colcon CLI mixins From 6c99582b695c076209e788e60051737b3879f873 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 28 May 2020 23:39:35 -0700 Subject: [PATCH 14/61] Update links --- doc/continuous_integration/dockerfile.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 7ffbfc85ef..0c05b1bf3c 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -9,8 +9,10 @@ Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub, thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. Documentation for upstream repos on DockerHub can be found here: -* [Official ROS Docker Images](https://hub.docker.com/_/ros) -* [Official OSRF Dockerfiles](https://github.com/osrf/docker_images) +* [ROS Docker Images](https://hub.docker.com/_/ros) + * DockerHub repo for official images +* [ROS Dockerfiles](https://github.com/osrf/docker_images) + * GitHub repo for OSRF Dockerfiles While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a released ROS2 distro using available pre-built binary dependencies. We'll walk through the main Dockerfile here, although all of them follow the same basic pattern. @@ -20,6 +22,7 @@ The Dockerfile first declares a number of optional `ARG` values and respective d * [Use multi-stage builds ](https://docs.docker.com/develop/develop-images/multistage-build) + * Optimize while keeping Dockerfiles readable and maintainable Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, allowing the master branch to simply build against the bleeding edge of ROS2 core development. This allows project maintainers to spot breaking API changes and regressions as soon as they are merged upstream. Alternatively, any image tag based on a released ROS2 distro image, e.g. `ros:`, could also be substituted to compile the project, say for quickly experimenting with planners ontop of complex reinforcement or deep learning framework dependencies. @@ -34,7 +37,7 @@ The `.repos` file is not copied directly into the `src` folder to avoid any rest The overlay workspace is then also created and populated using all the files in the docker build context, i.e. the [root](/) directory of the repo. This is done after the underlay is cloned to avoid having to re-download underlay source files if the `.repos` files are unchanged. However, if the `.repos` file is changed, and different source files are cloned, this can then bust the docker build cache. Other ephemeral or unessential project files are safely ignored using the [`.dockerignore`](/.dockerignore) config. If ever the docker build cache is cache is somehow stale, using the docker build flag `--no-cache` may be used to freshly build anew. -Finally the `cacher` stage copies all manifest related files in place within the `/opt` directory into a temporary mirrored directory that later stages can copy from without unnecessarily busting it's docker build cache. The [`source.Dockerfile`](/.dockerhub/source.Dockerfile) provides an advance example of avoiding ignored package, or packages that are unnecessary as overlay dependencies. +Finally the `cacher` stage copies all manifest related files in place within the `/opt` directory into a temporary mirrored directory that later stages can copy from without unnecessarily busting it's docker build cache. The [`source.Dockerfile`](/.dockerhub/source.Dockerfile) provides an advance example of avoiding ignored packages, or packages that are unnecessary as overlay dependencies. ## Builder Stage @@ -58,7 +61,7 @@ The sourcing of the ROS setup file is done to permit rosdep to find additional p The underlay workspace is then built using `colcon` by first copying over the rest of the source files from the original `src` directory from the `cacher` stage. The colcon flag `--symlink-install` is used to avoid the duplication of files for smaller image sizes, while mixin argument is also parameterized as a Dockerfile `ARG` to programmatically switch between `debug` or `release` builds in CI. More info on colcon can be found here: -* [colcon](https://colcon.readthedocs.io/en/released) +* [colcon](https://colcon.readthedocs.io) * CLI tool to build sets of software packages * [colcon-mixin](https://github.com/colcon/colcon-mixin) * An extension to fetch and manage CLI mixins from repositories From 66ee19f169c08ebc386f1c21b12d43b94c3bc4d5 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 28 May 2020 23:41:17 -0700 Subject: [PATCH 15/61] Tweek --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 0c05b1bf3c..ea25ca14b5 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -24,7 +24,7 @@ The Dockerfile first declares a number of optional `ARG` values and respective d ](https://docs.docker.com/develop/develop-images/multistage-build) * Optimize while keeping Dockerfiles readable and maintainable -Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, allowing the master branch to simply build against the bleeding edge of ROS2 core development. This allows project maintainers to spot breaking API changes and regressions as soon as they are merged upstream. Alternatively, any image tag based on a released ROS2 distro image, e.g. `ros:`, could also be substituted to compile the project, say for quickly experimenting with planners ontop of complex reinforcement or deep learning framework dependencies. +Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, allowing the master branch to simply build against the bleeding edge of ROS2 core development. This allows project maintainers to spot breaking API changes and regressions as soon as they are merged upstream. Alternatively, any image tag based on a released ROS2 distro image, e.g. `ros:`, could also be substituted to compile the project, say for quickly experimenting with planners ontop of complex reinforcement or deep learning framework dependencies. ## Cacher Stage From d9efda16411a34b477e3a4e37231ac79a3e9bb30 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 29 May 2020 01:07:07 -0700 Subject: [PATCH 16/61] Update links --- doc/continuous_integration/dockerfile.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index ea25ca14b5..937d3b9275 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -2,17 +2,16 @@ Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide repeatable and reproducible means to build and test the project. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: -* [Dockerfile reference -](https://docs.docker.com/engine/reference/builder) -* [Best practices for writing Dockerfiles -](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) +* [Dockerfile reference](https://docs.docker.com/engine/reference/builder) +* [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) -The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub, thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. Documentation for upstream repos on DockerHub can be found here: +The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub, thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. More info on upstream repos on DockerHub can be found here: * [ROS Docker Images](https://hub.docker.com/_/ros) * DockerHub repo for official images * [ROS Dockerfiles](https://github.com/osrf/docker_images) * GitHub repo for OSRF Dockerfiles +* [Official Images on Docker Hub](https://docs.docker.com/docker-hub/official_images) While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a released ROS2 distro using available pre-built binary dependencies. We'll walk through the main Dockerfile here, although all of them follow the same basic pattern. @@ -20,8 +19,7 @@ While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for d The Dockerfile first declares a number of optional `ARG` values and respective defaults to specify the parent image to build `FROM` and workspace paths. Here the Dockerfiles assume all workspaces are nested within the `/opt` directory. These `ARG`s can be accessed similarly to `ENV`s, but must be declared in a stage's scope before they can be used, and unlike `ENV` only exist at build time of that stage and do not persist in the resulting image. For multi-stage builds, the last stage is what is tagged as the final image. More info on multi-stage builds can be found here: -* [Use multi-stage builds -](https://docs.docker.com/develop/develop-images/multistage-build) +* [Use multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build) * Optimize while keeping Dockerfiles readable and maintainable Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, allowing the master branch to simply build against the bleeding edge of ROS2 core development. This allows project maintainers to spot breaking API changes and regressions as soon as they are merged upstream. Alternatively, any image tag based on a released ROS2 distro image, e.g. `ros:`, could also be substituted to compile the project, say for quickly experimenting with planners ontop of complex reinforcement or deep learning framework dependencies. @@ -86,8 +84,7 @@ The overlay may then be optionaly tested using the same additional mixins. The r A difference for other Dockerfiles, not needing to be built by DockerHub and thus not limited in backwards compatibility, is the use of newer mount syntax options in buildkit, allowing for persistent caching of downloaded apt packages and ccache files across successful builds of the same Dockerfile. More info on buildkit can be found here: -* [Build images with BuildKit -](https://docs.docker.com/develop/develop-images/build_enhancements) +* [Build images with BuildKit](https://docs.docker.com/develop/develop-images/build_enhancements) * [Buildkit repo](https://github.com/moby/buildkit) The [`distro.Dockerfile`](/.dockerhub/distro.Dockerfile) provides once such example of this. More info on using mounts for caching data across docker builds can be found here: From d152a90efe739450654cc58a5d75e05e28501fde Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 29 May 2020 12:47:08 -0700 Subject: [PATCH 17/61] Add docs on DockerHub --- doc/continuous_integration/dockerhub.md | 55 ++++++++++++++++-- .../figs/dockerhub_build_configurations.png | Bin 0 -> 184321 bytes 2 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 doc/continuous_integration/figs/dockerhub_build_configurations.png diff --git a/doc/continuous_integration/dockerhub.md b/doc/continuous_integration/dockerhub.md index fe15515d39..8ce7df3907 100644 --- a/doc/continuous_integration/dockerhub.md +++ b/doc/continuous_integration/dockerhub.md @@ -1,14 +1,57 @@ -https://hub.docker.com +# DockerHub Documentation -https://hub.docker.com/r/rosplanning/navigation2 +DockerHub is a service used to build docker images from the project's Dockerfiles, as well as a registry used to host tagged images built. Using a docker registry permits the project to offload much of the environmental setup from the rest of the CI pipeline. More info on DockerHub can be found here: +* [DockerHub](https://hub.docker.com/) +* [Docker Hub Quickstart](https://docs.docker.com/docker-hub) +The tagged images on the project's repo in the registry are used by the CI pipeline to spawn containers to build and test the project. The advantage of hosting such images in a registry to readly pull from rather than merely re-building the Dockerfiles in CI tests enables frontloading much of the principled environmental setup prior to the start of CI jobs. This saves build time, spares resources/credits for other jobs, and helps to accelerate the development cycle. The project's DockerHub repo can be found here: +* [Navigation2 on DockerHub](https://hub.docker.com/r/rosplanning/navigation2) +While DockerHub does not require the use of configuration files in the source repo, the Dockerfiles and respective scripts used to customize automated builds of images are tracked in the [`.dockerhub`](/.dockerhub) directory. These scripts include custom build phase hooks used by DockerHub during automated builds. More info on automated builds can be found here: -https://docs.docker.com/docker-hub/builds -https://docs.docker.com/docker-hub/builds/advanced +* [How Automated Builds work](https://docs.docker.com/docker-hub/builds) +* [Advanced options for Autobuild and Autotest](https://docs.docker.com/docker-hub/builds/advanced) -https://docs.docker.com/docker-hub/webhooks +Automated Builds must be enabled via the build configurations menu within the repo's administrative console on DockerHub. For reference, a figure of the project's build configurations is shown here: -[example](https://github.com/osrf/docker_images/blob/master/.github/workflows/trigger_nightly.yaml) \ No newline at end of file +![DockerHub Build Configurations](figs/dockerhub_build_configurations.png) + +Here the repo's source repository is linked to the project's GitHub repo, while Autotest is disabled given a dedicated CI service is separately used to run test jobs. Repository linking is enabled so that whenever the base image is updated on DockerHub, it will also trigger a build for the project's DockerHub repository. Note that this only works for non-official images. Two build rules are added for the master branch, providing both a release and debug tag for CI to pull from. The paths to the relative Dockerfiles are designated, while the build context is intentionally left empty. This ensures that the build phase hooks within the same paths are used appropriately. Build caching is also enabled to shorten image turnaround time if multiple rebuilds a day are triggered. + +The build hooks, e.g. [build](/.dockerhub/debug/hooks/build) , serve a few purposes. The first being to customize docker commands to override build arguments denoted in the Dockerfile via the `ARG` directives, such as adjusting the colcon mixins for each workspace to enable code coverage, or disabling fail on build failure so the breakages in master don't block the building of CI images for master. + +The build hooks secondly allow for the redirection of target Dockerfile and build context, given the use of `ARG` to parameterize the parent image to build `FROM` inhibits the normal use of repository links. This is a limitation of the Dockerfile parsing used by DockerHub to infer what repo/tag the build rule should trigger from. + +As a workaround, the build rule points to a dummy Docker file that includes the desired parent image tag to build `FROM`, while the build hook then uses the main Dockerfile with the same `FROM_IMAGE`. This allows the slower debug CI to build and test only using the default RMW, while allowing the faster release CI jobs to build and test from an image with more RMWs installed. + +## Alternatives + +While the free registry for hosting is great, allowing project gigabytes of free storage/bandwidth to cache pre-configured images for various branches or CI scenario, that would otherwise take free tier CI instances far longer to rebuild from scratch rather than pull from registry, the automated build integration isn't as easily configurable for advance use cases. Also, given that automated build rules are configured out-of-band of the source repo for example, forking the project would not self contain all the configuration needed to simply mirror the CI setup. + +There are a few alternatives such as triggering builds via APIs or building the images remotely from different CI providers and pushing them back to docker registry. Although each has its pros and cons. + +### Build Trigger API + +Rather than configuring the build rules on DockerHub, a build trigger URL can be generated for the linked repo and used to programmatically specify build parameters such as: tag names, context path, source branch or version, etc. Although it seems this API is now less documented. More info on Build Trigger can be found here: + +* [Remote Build Triggers](https://github.com/docker/docker.github.io/blob/v17.06-release/docker-hub/builds.md#remote-build-triggers) + * Legacy docs on using build triggers +* [Example GitHub Action](https://github.com/osrf/docker_images/blob/master/.github/workflows/trigger_nightly.yaml) + * Scheduled cron job used to rebuild a nightly image +[Example Build Hook](https://github.com/osrf/docker_images/blob/master/ros2/nightly/nightly/hooks/post_push) + * A hook to rebuild a child image post push or parent tag + +However, triggering builds via API rather than relying on the DockerHub build rules also means forgoing the convenience of repository linking, where a repo's image can be sure to be rebuilt as soon as a new version of the parent image tag is pushed to the registry without needing to monitor the parent image repos oneself. This helps keep the CI environment uptodate and in sync with upstream development. + +### Outsource Image Builds + +Instead of using DockerHub as the remote builder, any CI that supports Docker can similarly be used to build and push images to DockerHub's registry. As of writing however, aside from username/password authentication, DockerHub only provides personal access tokens tied to individual usernames rather than an organizations. This is a bit tedious, as to manage the CI as an organization, a separate machine account must be created and delegated with user permissions to push to the DockerHub repo. More info on CI integration with Docker can be found here: + +* [Docker Hub: Managing access tokens](https://docs.docker.com/docker-hub/access-tokens/) +* [Docker + GitHub Actions](https://github.com/marketplace/actions/build-and-push-docker-images) +* [Docker + CircleCI Orbs](https://circleci.com/orbs/registry/orb/circleci/docker) +* [Docker + Azure Tasks](https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/docker?view=azure-devops#build-and-push) + +Additionally, local build caching is often a premium feature for most other services, thus to benefit from docker build caching, one must manage a build agent for docker builds, or pony up to upgrade from a conventional open source free tier CI plan. diff --git a/doc/continuous_integration/figs/dockerhub_build_configurations.png b/doc/continuous_integration/figs/dockerhub_build_configurations.png new file mode 100644 index 0000000000000000000000000000000000000000..e48736fd61f7f6ec095c21c3609a28e592f65584 GIT binary patch literal 184321 zcmeFZhg*~Bwl>a;TRCGLN2ExbQ4x_Q()&1yNR3J_0f#Cj!O&Y^lr2afK|lxz0zyQZ z)IdU#VSpe+z<|^cB7`227+Qc3^1Zsx-sju<%=h~Xe!2AGdLh^Qw6)f=%6+fYJGSO0 zj-ERzA|i6a;`YsZA|l^mMMVC~?Z1uyzsYFkXaPUI3A<hg4^)3T+=r<7_HyroL&b+vzL80p*tvhToA`)v%=yrw-X((UDUv2bqr}r8Dgv}+6O628>p%by4dakZDAYkGmBEN;*pk!|JSJ|Pj zh+ZP@%%!jWAaZ#zEXm_)R=zm%%-8RHn!Xdx=vW_h^6Z)IN>R2Dnu@E~cDu~>9zjOqDUq)4RO!4bm{`m7AFcU3pZ3q3U zF`LVjznJX(UzLEF7{sjmEPR?@8A1QmnxB*}lVX_f3pMi&<@RRDlGVQX&C5i0`7q-_ zK!eFQUq=$pDwAGnp-?FOoqb#`_b&$mmh6EjF0KJql&~NDS1Y;-tcZiugO!Co4E6Fl zkNcZQ+V1pAiH!1!p1r?)9p^=28nl=zwiD1110SBKUHKz-v9kS z4sN$%`N(%o4@It?`H!hD7L-Z*WXYR)=lcE*73ukp!+0-mru!}*(bF#auU0Wzx;C`FGENmo)hg{ncdg zz)nDl4IVVzw_@0v8-x_3Hx=95zR%# z%}r5tda2%%zHp9p{O0ie>4zJ}4YRZjZ^yLo?aXlTtZ-X9m?Iu#{6bYGVC&E1ocIjM*AD#f?-XbUk=9k{+T$& zGmghOPvRO{Bi;y?F=N=S-a13PROg(p!aSy)Rqq)Z;|}Ypr;}=}L&h*Nc8j}FFq4*@ zRout^IVn4tksKVOiaOLR-@AeFVeUN1ZX)Nm0%zfP(pnC%F1WwX7|N$XtwN}~n-%;k zoTcPaxJDtkRSSL^CpR!g`{brk1ja_Il#M4w8l5EIE}-D?SE22yaRYgrGt%Awa2Ui<^LFRUDP8Ar7~ zD?uZ9eM&83iYw9;0k!>YqYuSbuggcV=?L)fWH8%q6_ianyuwhBn#cvW{+H}bllBqE z`lspYefdMaP9$DJqed%>lSCh|Wo15Em}FXpQr4%K9cripE!@EI3?k1bUNNpD9fFii zfJL;*IQD*6ntbx1)~ua4CCwY#w!%+^@bc=tHW__8Jl2_pz>VmAx==?>=%jjs!9CUI zi-DA6jGLm;U<+emesXEh-RUz?!BdzAC-11g2(HYPX2&RPs}*@iPuAFDj*~vT+tpMa zotSV23>Tmhh2UR8kmj0L)jY`3nm>0Axnh7*_b@tTP~Rd&8H1ESkc?^9 z52*4x8iK(x8$PY?Um^`o)V0c4%hp*d?1e)oc`|00y5c5S_+UD8G6M>d$#mnXWlGWR z5kOyz^HMtDGS*k~BKR{+)SFsXOo5!=K3>_R;7hJhpl3*9WZpyLpczK39eb|%rjmvr zKZ#2ukgbofK2Fr*AV7tTCz?6gzV{2qEhpP>ONWnXei1QXoPwICk4)7v6W@AlIbABAqlu<^xs$f!&I;*dd(-zBF->0Vjo^i)_sLut(N8VNuZ=z`(|CK8XAdA7LU!%g^t7raB7eBkM^j2X{{z+ZVco+#S>^&@76daqu(h zP-IWMHQtunKYuA~VaKk7a8{aK$G%X9Hyl zyEK~X9^9P<1?&4WUVDTa%7yqy45ZAJxheWHkn~GD#Em|-`)BwMz;@|*Zkkab&kW!C zMmUDzu0dxS)o%qYRHc?{G*&nsb(1?3GT321Ce5FFMy_VAZJQ3xYFo=@LYR%e&=s6W zjcXbb8!GXFSNCqYw`-sD7Y>|{093RYtnyp^T&__2bRt5zp?1m<*#g;&j(oVD-qa^7 zNyBrjNuTPgHSs4BK09n-QAKGIp4J{+%7ZAEN}d@8%iURilJW+F^R?wQ!$3w%nXezM1a>+OE`}MxpElwX%QpQHGiZjX+)Uimxc{cU!P8w9{ zzjg0X8CAw+EsLs*{#%EZqo7p~;=gr%dR@_b-u?ZLIxU7rhL?yBeUA@BdbQi}87m02 z+BzP2tos96)cb+&-ixEg#u|Bfr_a*F@sxt`2{rLQmV`k@2bYxFzz58}9ieUb-TR2* z>>Rhb37;BE&-604su&fl!m6kyCw0jxbVySX} zeRr%)2c9WWmsL8{ME3JhX%!3w_OTvwOp1_u;j#I8Pf&8voW7k~*eo%cczeUd-UVt; zhoO#CP-7029*oQY4RV#9nn!``{qyX?m9>dxnCVCF8eN=knMNxo%gJYq=8Y66w6jXv z7~BG{asM98j`+=A7~c#=W;d`UsNS5?92c)pTiJ7|vz|5ChU^;TFcakrA0kCZQg6!` z<cL_ja5XUzx+GasB!P1( z0c(p5*Rq))ve?+ha_hQ6DR5B>ys8b)kV5b)!LzCt1z0@E~(c z(kP8~gGl4k@+@mq9PI`-sbBDhhxY}C(gzH$pqmT}Zkd}aiz@c^;-o=gqeg_>>*Bba zhleohG8%XoNUC`#ha+k#n_;d~5Uhxg&KTx7 zJd+z^~rD28}&nUL<(?}06pyoGvluqyA_fA zR5jAdMCk;gE-9kj_c>cxPA+YUZXkv}N16(UMGsgZL8b6$zV~Qv+ad4j zedfu2%2Vd8xQAE6)oZeQF0LHJ($qaHNf8K0HArZL=DBtkwZ`eQIjqff44v5*l1Se|7fX{;^oG z92uGz9Je~QGZUpgWV=#0pF?J(RgZVGK#)vhQG~6sqieT8(SVE&oHnbg)5EHE>h8%a z{Fvh&>FeIG*C{y_)*PF3-p<^6>BCf;h7fx+l$C!nJ8!bRE|wosLoWai&!G5CWfPxN z$dCGh=uHcqZQNC5M%fh8dWOeKSbs3fmosfsZ@t9fP5Dk*2dlGd7VRa)WSWq2{uN79WUyp(^(-}nG1}*2~h9EXgfD%R@Zy-1croHU$PBy z3-bvvGJZ(gG=NxK*Kg2~3-#VDTUZG_m-Wo@G;GnY`FPk#&g8j6kk;N>ewvUHz7f_E zm%$PEcn4GIG}8__8u0>Zr?0=Q%w$YGGo6T73rUXbPLa(wXTqz!*=eIej8xS)#?Kor z-&5K3m*)Q1RaK)qjwkZ7clY$_jG>LJjE>@r)ICPL zrrfUG)|(YpO&6iIl~ZSW3oDa5zW$M|=k9nZ2$N{pD;VvAk3&{tjU$(;Cvdf{p?u;2 zK?aObVng~gwnA<7J0IzfVfpZsNBPGyE)Ho% z=$OR#pC1dhK$*tX5GS?dgqzHHK>{jHwgg0K>iXghMYJq+#FKB)B32x8~XY}139q%YQc!y^MHHrI(UuxqXpoO37s!`9yAm|v94WkrsmYcwg+~1x z*wGc{G!mLdY!!_$O`nZOf|=JX=gIw!FAsIepIs~?MaS>qwq*Oyp6W?9K76=vDt3Q? z@WML3i#kU{QBh@zq*5C~<< zb2cHbbORZmHx3vFu6%8xyAo{3G-)&_N&-a_2ZGpvGHOenHpXAK^5J%Oy zWROuk!uPt-#k4$jH?!wSP>2O700(oR4<<7N7cMl+vZvuiVdVQp!s`g%k@Vi>H_Q3# z3;smYj1j;i=lM`W9Ph*?1bP3Yju-v`sJj|nu0GKSF}M6In)PVa+jxEKILDJZevz^L zDVTRA)h*9t)f>Sw7Mo8_$?tRTnckl7#p9?v3YN z@-R;ahnwsPSvqN49RF(0v}I=7^u zI7R4fvb&*aI%Pjj#!w8WGn!@!NMjsTb#FST%@=MYJb3oveI~lEVQ6m4HRd(AurhMB zZ5}(GGhRXr*^|3v~kvtS)r*DXo}5BOb~?EN9iXCeG_V(>$|jLV?U}nYzA&%hecp%P2&_ zR`N@q=}kA=6&b-VnoR8m8sYF8!PXnB?$k4RNx5gv;HSdGs|(B%c#g*_7T)+s$FPzv zz^;Jn`X&tWYRli~XEB;u9)nzuLe80|_IZy=p;3vLs%d-qUS9Vps1^BY7x%z3G|Cpk zIMoW0_#`)RT2z`ho@#rzUz2-K**mvHjMFt4FpXTDxNU?uI|P-S8g~^T;|bC^4KZED zqXO%$M*V97$?+My@$Q*23w612avAjm<|6f-YEmtAz3@y!)N9Az;x4=H)%9K5TYeH4 zu#jw?>pN|KyJ$by98N8^YhbA3ynckAXi`FsnQFcvb45=Pr}P|uK%3O!2j}5NBd&z1 z7ZVaUcqe*3yOp%8Dc_>ge!%z)Q9hgG@{Oni{Cd_<$c!W|l)pAt=6ot2FkPTZ>a}|T z6ju0pj2$(3DwtSaLU2&;)Rtfeu4b2H(4}+6vFr*TVM(I8Kk+HZvli}1J0m@#x_{1o zZS!{U>uDh&nme-AXy)~ksV?>a8VSTg{oA`?Qf?J=U%xmo77VF{qfU@M;1r9tG4j1Z zdA~f2@XVR1+r{03FZMOxr|q}H{ET+pW0g_Dg}ReH;|Gl|84t3|FeCCZ*~IE;;q84v zx+3GlP3Uz{yi~~ktnqHkR&IxmizjZ zbtSq>ldtgbYA6&XWJ>dLT#Kqx#7|Cou94I+N&TEShTR$1r%XkrLYr^j-UEJm!pb_b z_KN|_N>}6iRXh*pNQ-(KVX{c4*qMr}hueH)SwnU2swB`Tz{LspE_fHjSTPp$)&jft zg`P7mbb}sd&i(NrVw8+Xe{rG`WV4&uTjY15XhQaoGBi`sV@5)>=wy-XjEA&0#P5-n z%uFM8ZyK5QJ340pl{bBb@sp4fHp03OcAUogL=b3IqRMvvF+rn$w03JU%hF7GDrvSh0W;Zy)~votBxDxY6>1d!tbi zKXA)sKZl7*;5_JpkMJHw3$vnQKT#y12f80BsCGPR&m$kC6CF_8#MS$2@imT*ao4^o zu1=N{G^4aX^tPP;gAkc_VOE8vM!SusEtztKUj)-%d)+9qoz6`jUzUO;{q3M%W+EZQwaW$C^g~`xS!r zhr~4uJj!ylfT*F>YE5tDKf(-lKfqgafkeu4<+&3M{;^i%2lYbz#5>R{+Xt|{mXiq| z432>h@Q!Su3;V#%-+QxbFAmXL zMvd+uDj_sp#aw#*5nb!(B&IIi?#}NP3m!Lc-&(S?r}yvl zb#Bb@?wU#(jo4M?$<4DGmvwZ0FdecKGo{-Z;f7~T{puUQ`V|DZ5wYj9tNr~3p50XG zH@;8Za(pR~q^f4?yt7x%`L|W$>5=3z;w#aMBZqQVzUkl9F(%}`TKMDfK|@4>p=TN|-Gg2#JNm5??ic7+i{s`x zCpG2t_5=!vvSDR8AtGM{JX4NikNx02+UX=(J@jmF<^@>Cu0`tQRQ^%JK2Fe)T&~ld ztA*1z1-BA6uaJ#{H^=1hzn=|6Z1=U0$sT;PdP`#B6SIcH&TKP|;%Isq6|L_7qzq@} zhpR3qn|g0s^o~<4cexk>G1@-37N_3iEH3IfV5>x}iXKf7Uk@v1L^WCV1vxo-sGxpY zFBYc-KAD=|Y7vSaO$|RXwU^Meg}Vo_9$eL|0I4qP71>c(WM`pu%d71cRmF0F`Qqe+ zu(zfrf6+($Wh^wDpA8H0FJGRvZ3vgl-ivxljesAW3L9uo^k68=`z5&{eInm&3tR0~^F> zM~@j-g_GW_MM_MMVO3VWuMMpGNMXQ3g=NFP!u9jSFC+J+BB`zzGt9HC zQ7@;B_YX%xy%+s)Fxn2uG4g~GBt7QgZ#EgD!1hd^S zMsdc{ub(HT7 zuxv%9HI`8~Unr@ND-{-N?oaAQ2KD^yPFkSc_{JCJXG=1h3W}DztPJn@QO!_ z5^mtL5Bb_^1O+lcg?Qe~AR21Gi#{fnJjK_h`21kEB{h3cLf0jtR(P)MiF~w0a<|WM zpQc4{OZo1t5i^Wd4_Renb~7UcuMXr$3s0DOAf7QKAnCy^hjxNIt`t^Pdt7WofBxBT zp*ht|blGkzsj^nH^P|<@kS9B`@zUANF&PwaOHyY~PiAZX$@NH=@M`&|9+>ihQLBlS+^4l6V@9NyhX6#!2TK{T(L~+oDqAC?88~Z#= zwpXJ_I{R?NNb4#SZ&&)sy2JE2o|Hc_KhUt8pU8URo2Iky_Q(kJw$(Qs64?|8rM9cp z-E{O*WhI`CZYg|sv|qJqs?~&Ab_Z@c9Ang)M;*7f?RA^~k|GPmZD~rU7p}lVNBA{E zV~%%TDi?0mzP;QET=bs>7Z=^b4H5BUKAK*6b-6d;$u*ms^^?BZBm6h(pywhdv1pG%-A#=-JMGP@~Rw)rVb6u#b~5(*-WS-xMm)W|#|IBZq$)D4J-A~tvPUIkzF`fIQSKgCY&R@Q zDRWE78Q+l(YLa>j&794hd{VeF_i;UX9>4bI`6o?Gn;}~V`{*_37-st<(b?UP`DR%s zPi4bW|INN}mJkNnYEZM7@pSp7qR%@2*V^XsYt>*6{C~v;kR_{3ozUYuE0sI8ENyLL z2fW@36jl>gQyZ(_z|~l1mcs+y{=BmNkrsK^lP)8n7b3kWwMM3GoQetRc8^Tz_?Sb;i0jcl!_)Pq_IPmE^;ZcG1r*!Ek5`sr z?>im*0k!z1re~AsTu{1Q0vC-fr1 zqHch%tdgesAygeJEKY}RmCfAg0B_enxMv>OgYAd79eWB+6d&*XxoiiOE^BVhiH+K3X&){s{F@g#TS4KTfpnkL(glwPPaovJag6S=s((lj3 z%`1@yr5G81D8B^Z^ z-&OBMJJ@9h=Wudf_mtX3(w57ikob0=ONHlKmLQrZaaXVleuslydSgT}B;FMaVsek2 zAjQr`*VoNNei~RSYduN&ur*56E~s7|iWqqq;Xz=Jd> zro;Z>QS!&h>{Z`n=t%tUxX+*9>1Bt|n#%Sc$zC=?y1SEg(etfq*o(T;yXlfslchBd zUnF^4yD9X;tZ7|6fv}h~rg=q9%+z1N#o3N*02PmI=(+cn7XpT*{9B_uW!yz_b93{O za(c6QK7;*PSa~{Lsu#9*r=!(G8CTK1K#0D-;kI!2(J*ZK)m!_K9%qxdOD7ZepdGCd zRz{7`tL(NV!nAXhZ?akX5rz6viEIrf^W52d&}!4mvqVxCwHlpJJQ`pgrn#Os6zEjO zgxg3kcHgH0$#+@qzB-VeUx{wh)P)8G*nOx{O$r((Qnji-6;ANUtAeS#pre=`4^^HE zp+sMT=GQ13g8S*#7u4|_H1|3ziY-x^%I#;7UQKk>&81ttzQt=+Ai+Y@#MbcM&h>>z zUiSr@E6;GLZh1^_@OFgY70$7OnQxyuJ-q*kP%6o8?WXyQ$IA@Neyq?`D#de|frYGi zWvuGIaxbb_1zT1&I&pKL=KE(~vcpq+3<;H_z)Ar^m0I+4kiE0`6i{9*Uw2LO%Px9~ zG_4ljJO?6=Thx9WHYm-2qUfn9VSBpSZTJUc z&3gvH$h&pWx%(L%9ZGCj=QB?3`13#|{H*ClA#n3~XszmKy3xVvT~)NL2s-3wI#hPt z>8?_+AEVwwJSdjHJ*C@|S>QXa(0+e%RdQmuv_^ZWjA~7akKG&28yz1v(&;C`(&v_H zOcTZfVhL5{4G>ydaBGhiJ%h9FgxSOJ!xt!9tI7h9Gc_ap(IVR8I-C+F}u zQ(a|nIQpVaJVwUq3%3SG9Wf#b$D~rC+~-TRpL|dVNoIaROrl^YK~Nm z+%)I+6Cv99D6IOoXQx{e&h@g7{!%d%^|ijSy|WA7ef+1f#%D5SZX{B3;d#D4R!I#m zuI{&h9TZKnI_Wy}I{Hq$2$m2GjeE_)1`TYt4(Z0sGos-e>Ru7-PvNdI@m#?m2S&)u z$^y#wS=muV+O@h^IXYgZH`Q(>ASIFO?D+Wgq9_lNI&K=YL9ptD<+_MV+rpcT$F#*P znlv_d@}m=&4~>W`5-yLRmweOw{zr5RKqPODdNm&Uo*jvp*E1-smL>bVWSXQcSc57=_1>R#H>9gD_%Q+Q4t z1Mgw&LtMf8mSvqizet1Ox@}<(vw{g9wKfT{RUC3sYCqAf+Q(2E8v&_pE|IMBxyx>o zQ7tc0mh^{YCn!5$V<{H?iM?;R8WG&takMq}4u2;gI zb^T{`Bi19FoWZ7_2JO#d+g^JlwCSn2Hs~a8wV6XBQYe0dybp)Yj5D|2*- zI6o$dq7b8suTT2js(Aj!INSG0Co~P}OMciVMoSB!HkG-RMV^~DRwP#)8903`p%oV) zUS8EOvGK8gI-01ZcEC=voMe$6nKNcO%^BN>#u4&h3;GJ;1myEA)DgV~qPa4kn-Jypywdn>nbO4tQd&=^pdye1?H;Q*`w7Kv?xbtONm zEDXDLhCesiFEA`we|vjebbKl17RFE2x7KZ}_cPk&(CcQSkpbo^K_<6|BSkw&FmQ$! zXQ7|5?jhzrsSagqE;jhjenDjcCN-<2rY2@Yu!AarO}l>Irg$WQ=i)v4iur@HmyRZO z!PZpwZN$Zst;&Hztq&+K=e0NIH2mP;^5J!hI?3nawn1i9rLh4Gg7-Ewy)8$_r-6mv zL5{@U2}hXpaQC7K_x&o@9}h}21i`l&L|Z|LXX=T>$M--ht$Ha7CgVKK@iJ=0w(yvK zIrWDZeX0>^Cc1t&TWJt;Mleydb%6PdW%E)r1#3Y{Fgjj;#^VnMO}8ZTJqINVCs8g)VWzWduXtaD49 zqY1Xd;0#4Ud2Ys7(|BoSGl&_!*S!~T+Yl*t6^&T8LrT%E6hvuXGCceDnd$+NHl4_^ zGL8W0 z1LVo>MN~ESKKofT1dOSlz1eYaXRDQYFyZSm|FJZhMX9;C`9~cov-XQi64`8!r@%~S12mH1v;~`Pe{e_s0!Aylr3|KROtL!W*re*Jby>;jzojK>Ay>1H zz(%clkA_i!>b3ES&!v+r|BZUivq~3j|5w0`+j&s$k)@U>i_E9Yzsp~BuH)pQ$suOh zRG3@wKq#k^Ul>MF-7O}Rub(R-qaiYrXPH+pVEKAoK@bupP777QJeqHUG~`d;Tbc{= zCY7vAE?wUspb13wreL*v_D`2tKTL?)Udnfn`PNdvYDDzjnwzXCHo)2GtJj2G`(mLC zxnm8haNXjkQH|s&M8e3MIC7__=6={#<<3=H&2*2okLe+Fu{j8n;(3RD0s=Qar zG|INM!B2$m=4#}C9bYH7l107!!+7_f0r;zYlr1#fA#W*I)p@IVIX{EDdi=Kn5-Y?< z0qwf03YHikV?6e;deHdxw$FOwWo`no4qvn_GKpRAD{S_y+t$*RIO5rnp$Jy`E-Nw7 z2p)l{|24K`3qJrx746IuqW3C;5#WZZhGGNY4!#*I{d%TyB;kUC`ieHkFxEc2y5J#h za_IesSyqs@%Yyb|YlXg{bp0tOvYl|eGIfFq8Lxf0tYdt`eYffkS*56qs+h|?1-OY^ z48TtE<_I&MkiiYel!r8|8lQ$ z3xVmLX@u<;fL&JDg#3|S_};xp*EauK{ihU9uQNBbFo})`o5Mb zCrY;MjA(sjKLJ?Vu50X%zxahiqv^dbwjweu(`{C)ivk+9^XDT5 zw>QgJA2FM79zudm zN~*WlncN88F#Z0)HVl&gK}wu59?BY2FN%O#~V$EbEv30SC;L0x7yWF&;spETf`JC|f0N}DprNQEKMx0$rp{-cY zjc*FYXrUF|5{gUJ%lUeO zyT^S+DIoz-dkuR5-*M7QdAM_GCo0pShqyn_uGxRdr5^Qjuo|_JIo0z))U5tjqZ#`1 zv#AEM(GW*dM-qOux`O9nHVzx(z1v zUArRRtLX^fxr~pwocap7wocgfWp#C3z_~zzmL7JoYp5})@-p?wN2}1 zGpkp~;~n;Q9==CjiXnZGPjB2m;+DL#h`=Yr^*?9dk6J2*p>|&b#uHF6i$a}A`dF{G z#cs9Zahn1MNMSyn*a(4*k?|57wBwis`L+Uox^di7{R$0fbc?c$;HwOkthZDunqesO z8#RuheD9Fn&+QNEfIE1-&_f9QP`Be=!V0;XoW8fv4%1)=LM9`&hMMMavxK>!COq*y zA?#vd1cg;vm>{lJ6Q+~3crQF%-CLkJnlnWw=!rkU<(bN+*E^st^c_!!ay@i{rqA>- znOxq$ZusC=ocSM*tw1MUf1^}yj9vSTM^G+feUMOF3=VFg08G& zeFQy=jR`r1sFG6cf`j}tBNUixnS}*xKrs3u!Fps@DE*^Rwd)&?57=u`NoLZHjVEf! zM`0|va%=qZn3k2-%C;6hTbbr*^U*TB;1Wjpz-d`j$DiLE$$vjc;AC zSH@}&Rq7thKAbjut8=7P3)zoV_D84xYEic*C~QR^gWj|DWh z#FcbBqY>Mkbq*c77j6~bcmcDc@DbDh!W!I)H+< z?jWRIkr?F?jV^R3L2(SP^@C_{=&?PZHXE^ar-QgLy0fcJhwO&h8MY;KsjhSmrg(L2 zXEPoq7$XhD>P_w9_UFF+0A%Aa?fJ7?^X`MNZYd4yzfCF@n)@swjV6lMyY^p)q9v6`83L+?CPZY z+$Xmdy8<1gPS`ia#&NBoch=uMd!p{~{`GSH3$k98H;2?joRGtr82^ASsyT|+e9`=^68D^^LNJwL4ls(f`0ru5N$kqwMR{sE?(Uj(X`fDs}XvUH-`prUD6}Wg~y0ws?dAZ>|QwTQ;t<`0}MQk zgC}|iENswV98+Jj;>Qi+8$cX)q}9s%{^!osJ=J1-P2`)AaM|FrXZuRuC^MHSJGPA{ zl{xD0;z%G^Gq5D}g|%xu?-vTE-v50CG6K7~@bY)^Ne zY6;;mY=hJ(Iiz0A==0tmI=cngm@(BhA*pM60ehsbQlb4|aE9?=jqbC=HrA?f=JNx*)&^j}CA_ol8H& zIng_EsG9LCdE^M1ywWKddqFB?Kw-s4$osW1qnb}#%vq*P#M*7``WcOQ41Bcj*zt0l zvRv0ikQfJGptjo7q!DZ2h+_~(|sKI6<(vm!g zL<~VZrA`g(Z6Dm+x7nUJ#F?)vv6L$x7@)emE_3sB#H`^D29BNK#x{0T!q1k=+maxN zCccn=a}A=urrA~IR`*=5-V76;%9s+3Y({x)tN}IF7RNu7ED%ZiElJF%edxuRItc(* ziHd#&?yJ5Ob3z{9LD<)xz9u<@DRg<|VbmAeg-n9=VpCQ{e^)M`<*Jk~DybUe`42Oj z4z&d&d>-j+TWFmZVq8w9(5H&ecBbWY2$6?H$6{T=tpp1IEDer4F+?vSB@K`Ctw=DP#dRJ;Eq#oG zQHW&4wRk)TDrlu%H|uLNKxSmt{C>w`A!4Dm9*F4E<>mYR5Qu=n^Y#A|f7?0es8=t( zBC}^pB@>AI`sXh4Q~IMVL7edp4yvk-r)_42dD=IxvChZ#A8eyX_^HxzmL5y~lPX1k z*@{n9v`HC}$cLtfIkUqOP227MjeWbVs2Y+yl)2(N4Ti=n(*BfkRy2*(W?!B}d&W^o6A|;}!Ewmh1I$Rm)>`UB z3nAFrL~Mv{4B&k1g*d>C)T$ij+-ZT7Crs`|_An1%w!L?Oo6~FxWwQANgQjwTrLmg! zX=AzE1H|O}U|`dFd^$9Xkp!)QGv)vm&EQ_)PtZ?^{<H(JO5CFN|jd{oz&vxloL+fWiR9{g}4wD zqk8e+;A&)RfuAOD)m4(bmhRWycFfV?V7A?zjG8VaGoQ3Z?)pvdcyTlQ0bpelfC?V} zJqw}hHV%d-KC5UPtRq}gF7PdY^C)93YK9O{$tm5nAT?JM>kw5X<&gS#+FLV=nM4Xu zMODF8n9$DYF7ieX2gqcP@E-*dq{sj(>MVJk(L^(tmIrwn!-+1O8xAzRJNfgdeHq|H#B%6vSlC!&3!%ngG^==(I zc374)I(deh(B(Zw+QxAMwu?-riad1FubF}Sf|mc`H&ke1;oDFn;m(awrr~_Pk97oU za}g*o+k+R4^<@Lc`9%OB#>|)4W`ZHwkRCMF!w+hwGW-A#>Pi9{*lm@1jE*0VV^nQ7 z*{ZknC6N{uX*5YEh-J^Ww!7sF4UC6*-oj25T+9ypOq1mXA82X`jwi%hbvSP7=dZ+i zM#zcL2Dg@O0U689rX2vy{-6-vRJ)1mStN1%@&q9Q&C*t35un2eL7=ZS6hyGHEq}l`94>Uyi7fc5Kc0~+`MKolL)Z5cqb;k6?bvyY*Ls45mc@NPho=L&ZMaXW zY-_K%=>XcT`rAKJ%NIF#!rE}-a1A-krZS6!3XiOj4mB$#*S#OJO8I5vyb{)7EX4OX zG&s6sWe3MSsBJ*cw+xw6AbZV#;nQcWE#aic6AjoQZQ5*jyUqaw z0SDWAfVloY!zcZF-mk)k7d#0xxoDV;uQYKvIa6aefVw)rX}>n3eHw$;lN0`q3~fR+ zhquNUIi3J@H-#Wmg`AC?q}O)-j13{(X91=LVmrlUgtxXOMr*Vu8jQG6uJikG!qgRIMJcmz$+LP_z?%6wmfiVH_!gxeBk>5RV4|bzI|23%t{bi7vs{uj4Gq< z-lm)wG);qkm?x_fYh<3wNHaS>60Hi$sQS8CWkckOIxhldF#MFKtK`1*c)?cl-^jjJ zL#WQxs^j(1(8NfKLICHCFQWo9YeRV@tcD%J1ofuG!%p1)3s09)4p4S3p)37Dyq6|IFK8FWUM#X;|eO>i_#eyoQ5Fjg~R2{x&$jQ!<1XB7-K)b+NKZQEFBBA^Eic zy`*#B?&|_OcmKt6zWNWI^HC-2))NX|y+<~0*r6zHF8>Qv!1z?psVfCe^*C<^4%P-% zN|$PyuKG6y{9AjQ?vxurb7hv3s$a0}~5 zocDvzV>=!<8h~2-{mHbpxnwu*`wz_Hqm6JH{~D^q%q=|0!w?{-141`H@ADTl^{a_u zv>!DzH16tOj+yID{R^J<{RDu8e%|=ULb(^#r|x|Fv*N$aMMUHa<$TGwDdaE6=q3N3 ze`)FK>+8SX$LP)W{|grSu`j&|rk0l<08`)D`F}F(Ly-Dmm4M((G2hvyW{pJ4$_Z~ocK#O&=z-`BoCgkj+f(Gu z;D0Xo%kKYVeDzC11A&Cd^Z#fa@em3$eelqO&E4DrvSyZJw#SEgmlm(KsM4_p?l_NCj$*Uw9!X8ey% z5y0bzaWUF||6W97IVcVKuZK5bZ9!-EN_+ZAjLXPn zCR*3=t1WYwP3iutnV#cv7y9aZ8?8!_eG?n+v%M!rtLMgK%O`!)2TG%7TQ~Xd`whH(YBAoH=2}mR+t=ydl>V4=2&`Pi6_o*_n_rk z-QFkxkbB^>JUFL}waFxjh6pdAqIcMBtCbFU@}xJSagL-$=|mYPnzkh9I4A3rt+ij& z{W0MFQ%;m4G!aw>v`(hIjsC*GEKr8G^m&Hpol6u}duz0LtDLkc9$@QwlDvN8O$#C8 zD{Jc+Wzw1-5Q4qiMh|TwcXK&D1*$r}qTGT%`G!L_Hlz}sU!wGM+Z&VQk$7gMeD7*X z%G?tSua{D_wv8`aJ_2OR5kWfPG6f?gHl|trCw(Nu_3@hQH`9^6(=F9biF6qpBqJJJdijW>XWozB-Rkl99iF`6wG0*nN z7LN?Nz9mAA-eLPHBk`qogdI&8vwBy;FS$frDR_)*8R!imt@8Q$RXQc)iY9)SFz54x z^{v-RgjfMx0xu|had*so+5JjEBM=)*F0g>N<|RMQ=n(*^r7jYa-v{uq6?R*AeD|-l zJ`gSHrIsgGh3$qUlOUO6Liq?4rIyC(9v=%vee zIk>FT2F-4x($-_fjYd6K6#H7$CDPm3X@f_0UvOi^>6a`ZUt6?FR%WnyZzoqUi>e&= zD|z-6VSPmtG68ZlO`Kr#RFS7`<3`U0sAdupzC-s$h?D1U?>aFhnj>#?7na4@Q7#Pq zHma&Ck9lnV5))$%lkm8h_Fjn5CW+UJ^@&~P#4{5RaAm@APGL$=IFlDVlQR>ZTfV1y z?nl*sn+QojSo+;#iO`5sFcqTt18{F3Boy)KmtHM5lK_CBfy-E#KIk+3@dI<)rhN@L z>)D5`D*V1%yY*wXkaIW*A$&qpcSt^1vuu&vvI9 z7(FTrk8Ii%*b3S|y%{Wv=yuMmn_OlA0Jsl6GsU++nT(dmStrrffCESis;qoN`+3w~ zY8q%+1ORQmKHh7$wKlM@_+mRlXgbriI%zp5-{AZb3euuVrlZ?=S5&DXX7B$ujgY;;`2De~KxrazSlTWrGT0EWR)FZ49}p3*oh;#cA_YgyxIEoq4U zDrx%H`nK5DB|3!&)WfhF=cx9DmnDw(8={&6Ez3I@?+>S4Wa9-XH=~Y9^9yrEsOMB+ zc-IS@r#>EDt4PJD^@0^-%4elGgn@;yc|`LFtg|Du`=S@w5xhf`(S-G5EW3?iJ5`At z+!^=w7>mlF;~)qIY|(aHOGjEAB^zL7>ngWm1*tD(ECW46TUYRncM8B76q9clBPQ7SWYpx2et7 z3pQk9qF~YjYq~qegy!Mf!lW@;CrMAaU>6BpV`KM)DcSk%YoU@LosAO%I!qDn8EZb`&uA%+YY) zn2B9wb2e^1R~E(pHeYp~^g22;_LysT;YEU#vDzex>DtOj^MUxc8t|AP_{TE32(f%< ze`LORDXDz2Hiay)|uAXb5bGy!FdUSrMW=MMf>#5@T2bA*P;c22#6=#iG;Z0mAbr0n0e2Gs{>YmfL@rMoi7VwqcFTP=vD-<^^UdZuC_D>8HKhZnZLAd zVLb@h>f)4vI0?LDayOL@o_+AX$y^ z9AYKTVpAUdXgvLRq=%~5%y^QC@sP{*+Ce>8LFSZuI>KI8 z`97J+C8uK)4*ki296cNQa1NoTI*6*DcMcv=Q`62s()jT!K^%CThJC~1U5(*5 z3D`O}trGXz*XET=>;*lHYN4M!w)tFI9n=>6E?`w9jxx2O+{40*+eYe;dO5zkF>Ts7 zh((tD6f*xA!Q&~TwtEZmN2MHjRU`xd4&j~#cDp-k;T%n>8H@Azb&DqzBu_C0`UHU) zNxMLkr%>k(l`isiG0N>Mw(;}=L$-n+K}R8a8T)p~`l8CS22B8Pu(Sa*u+1XwfcGr1 zTR9N*bmU>_<7rcE_ZBqku5xZI@0LNaMH_-&Iq%y~R`7o1DNDIqZlu|;WN83*&WuVH zW%Fk1TE~-TA9$}cf_;4^tT`P#*GJRwE9(dKqmHIwKi*@xF_Jol;0TUx6MA^2W&L=_KC>N<|0iWlV%h^+Q( zZ=^2nuaBTZ3Vyun&Y+F#cOy+mjKv{80;q(@Y$N!hM3n2eZCl%xP7g0e_l0r z_;#De*UIJ8sB9Hsa+J=*VxsSdjrB{plU_{3MfZm|ERUFeuoB!3qXxOp z{Ibf=00bLbzdy(C7GhREvn^q@#tg$QWiW`Fr+qt(9oHw~8-K%#&>jo=l<;|kfU;|= zcOJ25^=-X%pNkHXm$^L_*p6W)($iy?&9wC`biRZY2>8#=%)6)$lajF zM27C;=t0G10~lDbR=>dB|2j{0ShPQpH^0L8!!)Nl%BjfUdvsxW<|iFq{4doR@ieUE}d`A z|G8~q0Zwe6^E+g11_%~e8OeY4Bz?v~ZrYRor9#{%kxwkX~ zAo@n|E!M$2RkRe=t}_Cg8N8fI92?;x_w?@TFcy%PM)DYu%|2x5bJe4S*^952ts0kp zZE8+W>R3sb4sZ$FHAM3}UDDxkdQdT5<-y^&o0W1A!{mHv*zIX&bs^jtFBsAcfGFXvQz=lilU^u%zac$UX0{Z5w)BS-Rki8H{6Knx8+*Ht8yn2B82pp(?&raS_6#uObk5|FE?*-WG)t1fEg7JvM z$mMb#^M(!4*Y?9R@}6YH+>4qj&zQJs$sf3sFR}U&K3r5=`rNfeIx|R9nqFN{U$>~{ zU+(aOd_P!l>k8tStezui#LeuRjrUu28Ddk3Nb+zIydYC-yx$?iQQU8it7$S8vx;2E ziowT&1&z0sa5F)DRd0t^Wp`(?gVwdWR26qu#|D0>$J8pI1JYTeS2W6eVsP2xOS7ms zm@90qVr#kHw&=T3&KB2Wg2avaB?u&|#L4#YcZ!x{f>Xnu3p6;oR%EH1ryEfmo(bbjo zzI<2Rqf6&sYR6qH586-X-!d(E;!__^)>AS=m8{bdCA%7gxw=rpDx&@C^+a3=>)6i; z!O~V|SqyK*hfTX2%b_HUN$+H6Hh^2;zbak(IP<=;u4O$EY07pz(n;AMP#y(?04NqcRQ}XGzbG;(XVAEyTYH0A zvpHO9!ryJCF}ZLZ^TqV5CA?^6MD88lPczb(%i6v=Jm>1Fm$xI`-WbrjX?2xV|AsDr zrgwYkxzs&pdbP#NGPCFxINwG0=pMpW_GHlI*f&o&7L%`q{~EN0X@;(<{Xy2cZ|9b_ zzL_<8?0DXY&nQG`ag!UAp3a^aG4N~|zNum6Jo4gXOLH`NInU=%g)&vi^w0Jfq>BF5 z1`g>`@1IlNhMbf%3t)MXYu=1@;(t#SJcsy4R8{L4ZBPaJ+p(`Qxelgb;9)8btnyU0 z9-!!&0|x5OEBPWS^-a6v*ujCiy;YTBeBD(tdn9Be9`jhlfnVLbdBjJN({_Qyi`&>5 zoMmGH#I-5L^}-To1wrlqqGMkwKCsHRklpq*A&3O9;`N=&UU?E1-`-|+R6mS48kG^e znL%N`!|2Nd#I4hS5Qm7AfE9GYP;)%DU+bBk=vfT)l!#tz#MQ}k71Aax=DZ>()>1Z7 zQSVah6Bk_wE!xDWix{a&D$&+pG3<55hGT-eegA^p1S)tJ3TF*Jjx2kz zOcVlus2R+X-EiaS_BpGO*;C_B+eYW`A zf(zErKSLbsA9y)TJs6B0d_`6RS&qd#qlc%=F&YWa4WKx)jDoP3@7s%CDOj~ghpRvl z7if6dRv-qTezKClFx9N~-{7_Odx*;n2aU9UB=MRoMg&kl7n_EiI4v@J!g{bek9c?DsfFW<41HbN7dYl>mL!KD^;rwFw|`7sx>B#78wA(5cvfHcxG_$isB zduxc5iER}0Vw<*Au6kt?f#SqP0Z{S0?AGCB3V+tx%ucX)+wAbyka zyLQ_=#59macmlNzlb?v__uTQ0We2WLK3WNSP^A|V4YA+;du!O)i? z`7FO+ZsG{b@Uav+GDBkrg%~@8o?wW_LDVjDgvTgs+%G)_$K9{Cub0_PR+mxtQ$PiY#4$h5|#_w*XZm!n2$wjR3G>e~wo0 zr@sIJ&hQm~zEZR6#*C1{G1c8zWzaLs_rM^sJAhEBv!36bEg69DrDP|Dt~M@x1lswx}f&^+*HP9NI<3x>l;Gh37qN&=_&(hE4wcRH5gApuG zARVeb#%3f53`*`0Nf$tr>eX@LQ$s)6=hanz8h*FI$@#d#%^g(iXGs}PXLwR?Da!M& zG=rI-N#DCt3x`?Md`aYsMLZsVQ0=4e}n3>)W9bk|9c~O?TCwQ+o?1 z#(PcVyWx+7!G0>+PGA7K&Kz{_1V6HD!AOXb8ozt3BC~Fn-PKSP#-ED0YE;YxY{ZLUp=0wW^RE`L8hN1z`{}74&eiH`YESs)t zhsOW`qWn55=EO!bhsX8RgDap@yS$8w7_&kf;>8PDS)LWD`qfFc7T($Yzy3#cRk>7P zc2^@8e}PUN8A-ZIiIuG_y1-h?(iw0VY^Qs zV03TGCUnuj(aA5DYoHu2!y@@T*TJs1hX?y?wZ#Bar1e_6ra})Y&M0wd>hHa;4k);Z znC2y0P6ICFz>Cc{sYlD+t~|nE2Fj6~xII`Znn;N?guvbS$j~F%Af7(C3yCF{0@NB#_>86 z>d%DN)w8dVmnHkD0cD0TZcVZmD5jCVQYSrP8M;G@ES^#ut_Gxoe`05B%Xic<3u0{O zQHEAg*RKrE!`8?SyGlgR<#gW~@SOUouvET*E@f)z#rE^S9rF~?KJUzhXwXnRdtx>a z%nA>u4s?f)RJHRPB(Uqzx5FxRiZC%m_T#iRNoB9u-1=}^4%Q7?Zxr!xnV5l}qJnhz|3u3G56XuSxE7W*>+^4RV z#U?f1Qd^$7sO+s8mc_sR;TSMLhq1944==TR2|f5N0o-i)(Lj(m&duC1L2KJ(UbZ0# zZkNZmt;(is$ufIxz$cb_zA1PZeY9Ct=&+CF_Eo69jr=jWmRrxs!8b9^CXY8h!aY$Y zL#qjl@v83%gmwCVrehbfa&)!u;Q+co>Y{;6imaYG42_ANwreGZ4YWqM__gwPJa*1F zxv$)*!e>qmZ6X&=1Wy-uFdKJS#vY&Am@B!ts&#@i<51wnH^ZdTG$(Z=7->N7qkFP1 z(u`U5wAAj`#M@M^e^Mp7&BazBCv8F9L;HOy@y;XzpnC>f}nfMCqfpf#|&#>D->*leJv#E zMf})9_2%N6W25|y+J@kQfra6T{MFCHnXhLAK8PFwtFT2969o_MtTKuOfYO`O19r4< zjKW6vjqr_vx~tLwq;t52K;7z;vT=HCyROTne12_2(RYh>_8druT~7+mD;}L^kvWlv zPl#qNxTeoqsRfLeQ|dJ28=N=X1MGcP({8Q12%ld*Pqua1hy^22t2>-ZY|BoSycFsp z5}P~Tj_J2sdbPHRGWS<~0UcchzICLe+ z(jrdcc(d%l1&fsK(GD1Mh&ERK-ME-v2#BbJUVL$KJm&e7%Jimh?0QEfv#&Fv+pTla zUA}+A0AJ9GgYok%Rp(qXZ6@srl64I`5wUfwXNo&Jr*+7?Z1;udGFTZ8W{uU?t~E@ zER+v!e_}ThlHO>K;-YHm?6&qoMN|;wDT_cNty7_m5=DZjGkhgD`eHg6tS!SnDx2o0 zDVrk56?@OuiHIHq_`0T7%DczL)43#{)UN8DfF=eBJMB0Yv*WO;u6BZgC;~a30By6F zCntihx=3kDEGMLO!Ewq-K$di$NYs$H_vVfZzrgziklQ3!o8t7aOQbn8-?#|Sju&@l z&skPoo~|L~y88S_krRPj&hs1@N5`6ggb1uqk3l^jrnzIF4~>Mcj4|^fr>6wI`i6e1 z_XQ{h$DF{<0s?Ggd^c;1Dw}!L32N=U2)&~RT`GM#gC0gzQSm^EmSzvLq^dKSO;IRlHoB$0(dN zntl*?#AbbM08wn$un0z^TXa2@fnB)6S2DqxMhoWZZj-S9kLJTH^XJAzB0Kg3$mI8E z;W>=BMfadc+;P<8oi=_weC+#}aq|(~dF&;)vIiOgxAIl^bNt{52OZrp)auD(pE!)J zk?@70;O5yv{)w%g$$r9e3%#k@zz9r@8;S3kHzq{pXhoeiio3syGQGo36s*wofcx%OKAn8={oIDzzR5fara=2d1*wV9k=9Z81g5W>^VHC50O1 zz?hXuvhDLc^>c`HQm`?f32YSE3bfj-K?`f0Kp=WQ3!YN3VC1NJQph7l79Y1+?L7t( zXw|d?k8HxJ+`we+Jp4Ut5sso5?73re!cM53uUlJ$BNrNv87hv{#aU~FUZdBK(1nLX z3Ii0f!ZQT?1gisO|1S7L^HH9+SwOF=z+Y`kz@V|no2?63yIfD&N~n2x>m#n8-Qh$? zY1EQkD>sUe9Iha<=Yk0=8r=3?h{F7dz7JyJ@P89HD_`J7T>qA2>%!lLhB|C%Le9$AvLz@&v8T!!^f^)n^<#`U1|=lo7xT0BYCe|vHy zf3r~>57m??;Pta8oJKwZO**4z+N=u`W7pb@V$xb>-8k05#N;Nyd zdTWplg(-meA(pM62?X3CqwU}1?;=wy3-SCqhx8f?A+34*??8qf1DM?!j&9_a9;Nh^ z`)%CVg*C}^1+?GwoxbqU=wu7Vc{Y1Y9SB<-AL~LsIAAMlRgMj#O9Og$N_a!rU2-_4#c@%j!h<3zR%vtv1 z;(7uj3U)N77o!E!v+)5b*vJ69-Hm1>AKD(D@gCRSGlic(Odh(Wr|IuuNJ^Skdns#A2 z7^eUsge^!jL*5hOFOQk5a#5kKKXau(4NGMXBVPmNQz6Szzl5G0UL)QntANvyf6N6m7#6e z{;XHymthT7<|&OFdQ*sGu`R78(B{t?@0h)4=zvI^PEkrJ$lE(0h-3|C8SIUnaiPV(_RIJC$ewS3e2=FtBR3L|G9%AD6s`rMms) zZtK9^LK!n#c2+woy91F^_W1kU{d*Dk3eXj0v`1)i z{$)~`~ux`F76e6S#sSjTR6CxP@?NWHy@FGDGxHGZtumA z!rFPfiEvF|-%C1B5U>9EiuJ!1Y3TseYcmb7@^09}A{hTK)Xd*d<9)Cj|KNuI0bBnA9sgq5|NoA+Co(MPNf#m8 z-m$!QNwi`yk#6MKvDtnDswC+G$|T6Pr?)y-3+)d{?f%$1LA$V5sIF_pJf-Uc4#>Qh zvU%T?eM6a?lvVo&gE!L=xjV~K$(>yNglvKtw(x<1F+t-e&z8xt5z05-f3N}y*A8lfPKr{tCP2;?` zeyG`WvEYp?m`b$8p`hyX4e$Py2c&gfX#^Fz3^wUGhWbtLjmDq(H}Dx$N7$)>=1xZ& z&6>Q!wtF@8GQYNU^J%eTwmnoZxusg(uL{(@Q=|n|f%6ZnyfdRE0tKmvno#V(IWjUZ znQRNn?LXpeglhLT+T#b_JMJF{<)5I~Oh~eY4aUEjBHhgXK%Bc~C2 zIcP~XdMC-Lp4pmKVUD6(M>NF5gC@NVj8I0ZSN4W8EraGqx(boN=S6z8RXGn zA})TA@_o@CPs(htUD@Z@%_}V@w`qebA%8t~-@a%%SFt6t;9nvBXAEL@%IXy09JK;d zllk;w@|lk<3PFOB%WrqzF{hg9+FgKM#jncz^-WQVX);h)k7hvbo(5WsOtXJn1bV@6e()3~Yms6t+>Z?4UT#@^ZW@s%duWn^YJ(y$V z=z;H8wfG@d_9E2|ql{Jy2C73zIgp#G{L?^h&Kl_DP-+Uw>i{N=Zo9@ag7L&5t?pbb zcxtz{ymdgxW8|p(^t72I13(?o?`kZ!ayX(&v@relCkka!>$G5?4pX`_)sy>yKicf& zapX-E8yFu(%^y-i8eK@9$5=HPNU+Tarq`Q=vK1|G^+n+3%}B6s-`f?j&5t|urBW)!94ELIimQd9geH$qZZ{&)aE;m-k#08-@M-omeM z82WO-#?#+buO1LV&330Np@V1STT(9K+Z5pBdVui6hPSZ(2nSG%Nl`a^=cnzIsF4bq z%eDg#sQfn^_AT7HkcXv72T%x_g6 z#)<=BqBFncp}Ksb5no>Q{?79SqURo;%UX)LVna&f39pb7R)b*opb0YKeaPU^0QrYy z1wrS=3JbShN6wXNi%|fkmjFjoNOpIZW_3zT!XtS+Mp0MVt1-V(PbNwk9W>c~(a{W& z?Ic4I4os|GjQMqA9nr)?bXzGQE<0u`(q3jk(JCV+-;$yn_Sv}Yirds;OaRF7ctWGdkm%@KTw|~U;5IsKZz6oRSIheU6+-`Zw-Ps zXVs6U+2*MGhjvumD!Pz1<~`RqCQiBFK9A2m1j=?2Pve%mAzI%r@Z-VWi8?1OYd`24 z<<5$95Bz3zF|~b6FP>6bw}he>HPE##$F4k{*)l(0{g;^-QS^2>y^L7cnhKSdgjlKV zck#-4hucVt2sna*xgNF;%NsZ#*z^q~yXu`-?`G2%BFRr!=F8rc)s@@}iVy3Egi_?l ztcE5)FPAmsJf)!-e&rFwf7~bwBypCWm;>Z7oKJ(j4v%SnUb>c-wJsT?y58par!gl=aYV;LM{jGdD8tm27tY5Z5pui^d>Wo-Mgus!Z5!)C zo%u*ZJZ8-hH6(G|r!p#E6r8=`5Eh`A8a_TZedj7d@{k|h$0fivYji{?`HI|5hhCy>SO0q03+PRLm-NG#ji+vJ&2_bc?Wmu9ICjZe|v`gWcJkJ)mkG z{_!?(XYk&+nR0pK3^ zx4>k*tQG240g$Ixm*H22%Hvh)VF7w7O&XBaXhWwb-aDF7GUy)-$+NL1C|f~^^6MxQ znHV4Ohjm%E7e?}?J6Bp-vPhJ!tqE@Qc-tI}>~5WB1>_oj<+Qd$Kb!rW`v>&W zAgT`O?*XQHTCS;T_Jm|7wqbeWgxO&Ajy6GJq`tB@%rsO68M`~UZ zD;i&uAod!V?su~V1m1d1TCwBu5hvjTSp<;+i_<(X=Od zNQf*P!28YcE|57OZHlca|0tflA{khhAl&RrQOt+tL+2`vhMI+F+<0KkuS8y z=Rl4Wt@yixk**&A2aoJzTU)-PL3z5+64kH1R|V1v)h!0jj>y8*Bt4)vjHUi9CPstR z@deAdt0+hW)O{T56TySGMwdS0~&x3{h>tK~_IjEEqJ%SS}`q z;iMQG)@M6K&M-olUjfl!Y zk@?8d4kfj05e%w1FTI~1xx3WOX_WuakNABAc#YbHEFHjW!1+*n0TX4}J#cocU_2Kn zKkRNiQHX|(!Mq!it@d1GIfv@h7xmUuy~!jbZbzX-dP0(lqarH7N>R0Nr#!S}I`lyE zLxA~Tnkw$daFr0Bl`TnMo?f(UAb)B6zP|m2sN2=&Yip^kibf3q%id05Qb|*Jp(y2M zOUoq4MO0S>7p&y;gJnei9k8q3P}nXJl4R0v1dj>mq{Z@pLccGQhAbQAyw+K=M^QBy z-u-24g-AwH^TG*ZD7H=Tw0{EHqe&}vTBHLNGB4}ztw2myT{VG9zGjc>w+$K;TNJ;|&L^=Lj>wxu%(<_R;>) zJ@nJw@l4tfbyacpRT52VneAmerv{X+asnKl0mRttDwEqcwSdu36z(R-hoDT>Q#`fb zi2ANiF1NoOzJ=qo12v1G3h0o71{6`MUu6EW&WSC9*wvN^dWLBJ&mn^+D8h4z#@SV= zFSPq>Ms{^@ma4i>S_csBHtEG|4Kgr26#ghx{TJf=2!hafBD2Mz+bg1>CLGmo{(hiH zy*>5tcqVb(g8m0N&(srai6@V2Xy)|84yo0q4IR7iSM&G1Jp~Yv@5CA(iA9xPvQm>G zJefii_jT1(z4{3n;;IL;+Mr#yd@27kYQ*hT`C9l?rplW4wXv0%)suFG7_d6!M2163 z7g1JSfAT!3>nvPO37sN4A#K?@;Z*N$F$nbyh5M zb}kG&?qxo5165kb>+k9_qm366=oZq+FXnjH2RZp=#pDMd2v8AL7bBRnpYQv7vC>zz zfm%RL6PqH|1~u%ZG~?Lo#Pl2KhYwk1jykxRh7KMT>HfGysoO|V`|O}J75gC&(T7as zfTE6F?*XaM5%Y6sZJwSp4y_H>DwMI478h^b6Gt#Trr!MW9#IXVF_`i3-s}zvFfQyG zw0e7kf;{(){P{S8iIAoDwXPviPI-le4eK)LKCQEi(s@JF`|U!a#K55jZbzi2Gp*0u zSv=#=DS&Rr>1j-B>g8v!pjdoKS64^z%k!_#j_rS=l6TC8&CaO>C>1~K63(UOSv_v-XAWPmkrP5ugxf>yWGoh5CL2xAF568|Td}5xcDVKUc@wPqY8DVbeO-&4_v#uBG_|8pefWux2Kn3Jm+lpgi(5YJ z8?`ahsT>Cg0JqDG(UKP%?7PEz0-|S%bTTRJ5}Lx+hux2oEf+OZp0w5odvySB^Tt<0 z{lwYps1pNENB{h6Fiuo0=kCb0s23rTY6P6*ml^G5aJi+?1l(PD5xJ5olIA1wu{wj} zK?bTG1NDqU8?s=kSif^GInhGs5=$UP4H5pwu0hcMk%pMWD(18L2xp&jO(r5@*DD=~!dJGz;H(M6t8dcepV#s?UhXyYaX)G@wVx%=l6@-N}qHGg zuu^7VL<~}Id~-Jdx7i`AN}uhs8dOAFm|o*kRDeoQLB38W{1EK47~0!Y_&+~qzyQ7U zv3dj85j7hc?l|fHtcU((=6))nH>?8dlA6~x{fUv$@U6%%9lGyhf+)pp(9{x@lP9*8 zKEm8=uUlz3X5|5R%&T!GK;8MIzta4H^WSO%;gKY3Lix`a=4ks$qS8v#>lX_)k)}>x zZ?>>M5%SuO4md3;xcc!0T!3UEWPgyi?bq*rlD!=k-?g++9Sp9i+DZvW1AK8603b!> zb?k1OD`uulCH5*>`0Lrbe-=wAIB=$);6fiZ0v-@h5bzIR%xyI#1hMdyQ@egn!6tkI zaco2(xrp+04)5E|0IqVU#mFRkH4i!H1M5kkib-*jp5iWigD&wipHh z9l?NYJ$SScZC#x+ibhAkscm+Qh7*|={&qL_{Z#thf7IJezu*2t&~zvF`G3GQ|6KBQ zH{t)N$KJjPhj3%J36Cv1vBqf+MGSTY57}adw?sexAWR-F{}k+espfcBc!~T2o&4fU ziJyN6jZTllo61iE!}RuzsO`Vk`Q;77> zSDKcH-%m^B8(04fsIw~+pg~QkqNL0UqWpcGQ~UP)R4E5MYKRyYs&6zr-+Jwg=+yDO|jNhoz92$#OQ`pO5wg~$esi1J96@0WpeuedesU15@yq= zGg122yD^!A9*yF0`oN#}-56f@;dG6z^@GpP^Rce{`#!S2D07&H1+M({Y|lf$nMZ@2 zFW0Dcg_p_QOaNjw3swH%O=j0V9^H4}?`+&y+MfTkQ*kHg_THD5G$>2ve>F$a1o$G+ zx_t7bu+YAJHv?Nn^8O9%mp{``O9#FXt-Rf4A`N&f&qu>5HTNdP6|nC)pkbG6N~1GA zx2bN?Cg>PIy5lw^EUhDo1e0y#nSvU*lyku4UH{{On=?QG^1CAy)>DFA48L}b1m}^a zK)f=+Q^#ribkuYd&8y<4v)=)ITPHV?H$1i1ICE5V#@=w0wyyWeH-2((c~yPmadrwR zSljP^-<0P!^+Xq0B-bJ-m*uke%PmfwdH(<9%o1ansB@ZC8h;$C<=iIx3V2yJt4vuJ zK98C^p?dNhAZ-_ch`>)%s@FaNiPc0E3R@g0@hPn|hPKoq~fp3_Z@y8K@{ z>v>n{LQi#@Q$-==zx4B;yG4Qx_}sxkCBtS$J14#Rna+P1s#j67nYJPOeS^0ZkumJm zaRI*)vs*c_lW5v{4#;}S4pV5a{sN}bG3rq+R#oP%uat$y7rPqzSa+rHWqQs zm5+meN8Kf&{J%jqz2E36Wm1_wOg&~R^Qt{FHi{}1)Oly_#4D(tTN9C2#?-(x317E-{wOYE9J6b$JIgXih%l_1) z=>_L-gQ&~gwE)*6Bz~uI=YzvNYWwz8EcVsi+q|=mG1Cd={<4liqu zed>|SmW_5*C8mb?fs}LEqiWx_NK?aN>eEmOtfF(rzuEVya6>jh8sl&xt9s)5t<1iW zQ_|Ak;j*faEKh3X-pG;pJd>7Zs$Xwb2J4@bGpl(&P855?6HiS*x!6fQ;zxOJ8+qhm zc2llw6eYY<7SP-7^~&mfv+qWV73bZf%v;i{wz}`IrSBj<@A%Z}Be=p{uhI3@%|qxf zv+J$ep72aOw=c=pQVDMpf4@Ay88CW`0)O1=JHjht)UqJzTx;2b{rjHRTW~?azF_;d zr{AJSu0wjbm8jn%VwMa)^?ue0P8Utmd|eA9PGF)Buor9=>9Qh>wzZ$0jeUy>zeJiu zo;md_uHX@%+v*NaQMBF=UuA?JMW6o>)y)lvc(gdI$^N2hZg|Ms*7P0C>6#4^Yz1XB zBP_VmQB>({DtAt^$0@$#$;`1lVL&wY)toeTg(1e)Zha38INIDMx@Fn$y;n!ER0ps{=PcMlP6jwAT*CBst zteT%Lx*P%}FF&x2{HO?Zqff65P0fHpl8wVB^ZdgnbMDUEy!ykw``;{`fF2J?`n&fp zEObBJQ=`v+(|JhwePZeJc%#?zcPS#vthbe?7l@Pxucr}B1DvjV90YAoTn|=SjhcU` zzWYUGBUG-TzTtSnn)LZXJniM{w4$c8H2&2il&zF|V8yj?@b(lVgwN!>W3CYoCv}Ph z<@``n+b^D3+y89?!&#EZSmme9Vk2rrk{J0C-m!}I8ge87ug`a<>+TG7@^G2bIn}LC z)#q6(g-K@tqdOw@tVC{UI}CF~S6J-G$J=KXH26%%yS(Gq??R!}&w@B0)cL`89u`Dx zw-RzaWX33<=pAJ0@S`qq>)ixGb*b-Qfw4s2Puk(9TSXbmRM#SfQ1Es)s89HMWyJ67 zmXy$qo`Eat8M2RZ;1S^Zz_O4SJAq04k$wB58xtr{uH%K76Fl~vM-x!`_z1VgBrDQ6 z-lo(jy?iq3!SHv-^hdx-YWr`4xX!5Fw~?dGuUtf$po0So7#-F+vN(M zRVR+y_7q5MsieScQYX5)GDUXs2b+moo6ci8R*&gvEN5Ft6~-Q9+C zt`p&Np1ptHeG`8XG|zGL$KlbUPiQ%aVL%`;`Ny;C}g)KW$P3LlT;2ab@k3$J= zE{=zwl7DBvi;N8DN!|rL_c1N`rt~hi!1d8s&V2`$9F?GeZLQi{v+uBg&`Q22x0oGY z`{dhp`K5Tu!6LF|oA_k3yZ1GZuEwb?S8PmPiP=YbTbYkH@pxv_ix<^Dcz36xLP!M= z>S4yi{h%W2(R-mhXXRNL%(beLJ0HOVyK9rW^6#pQ;!Rz4#zi{KWG~_xcOnTQ1fzmw zK^*jCbflkMJ~%e1w-Fu@6S?-d^zP!g^b~ERCjZN!~O=|x-uJAWVMuof&5wo3= z)=7*yzC70-0)DphOI%w6+S@IdDb)k`7l>aSN2_lkv}TCUg>9wx{27AXt&j8|{#;Oc zGh)D1z;d0Bi*Tx0cup1%NOA8W!}#a)-;W6!MI>(@J(S)(FW_ z%bgEsIdBKe6&V8==O_HmIG0cI(#Pf)vVe@EU^;Pfv8^#MyWNZ@_nu$(xbeg&9^dGS zHW*Knn0g>C{QJt>!{dyH*)ouSf2uhu(mviE{zT~->R#lzKK}fIT}nHtW%Y2`y9cgV ztg;K#=A?H14ZLq4RU8uyR->}+ZdvJeV#f~lWQ99P$!zo9BT7CGo1(+k_=29R05AV; z0J#yiRPba|vI#m#e06rJ~GGJ=qJgHm(p5|JC&T`WBn z=?Gift`vDBL1~ZpKD^NgPi$^Ez`9^-J5VDSUzmtvR;pek`e8v3Vp;JnQ5l=Q*mjcR z^~~Ne?oy!Q4f%iVyK)lyZW+@%oWjSO-Gzfs63nhk*GTSpm591M-QE0SgOPUF!p*Dm zpSu3GG6=30=;-;b+3|av!-j(;R(F>vJ!`5F^Z(A5oQ8k0B$6go9ZSBsEBEME6RC@b z*dBT-v094{KQZ7ElV%7+%K^$EG0j*tl=3cjXMl{NUF^A81SGM%V0wJNd`UbksW+b` z9RoiJXLY=MvC#3lgnoFE6F!vjt~H;Ln!@;2gqT$zVT4!(vNf9Iq^0|h*p6Sy25jD= zI7w4P{eyG=Q7bJ=cTj#7MU6;8MA0E-N~WgeHQ3_EUyrp%pI-UUmPO;0E9-8Mj{66n ze_B<^k`Bv@b=F4nn=ZC?1%+t^h)*6qE3hl7WqS;^DnWXWk^zU>4zS28_exVj9!G}- z+)O}o|LQ5o-G=f7>*^P;G@F}l7=D2Cx^6XGLqR(6FE^kfm!u=*zRPIjofS9&+=;LF zYXc7iCDG$r%#p6C>SCFxA(w9NGlyg>Xiu=otKmAw^$=D)7aUb4;P9=t~u&P6EDo}{p%O%b0((tLR3Hs&A zJI>YjCAo=d`9|bjS5@#8D4y8tr2P9e5?!L30Q)EM7i$iQR(hC@9v@& zZ4%I;pSz)1uW zxy2vPAAZa5#`J8Sqf{m*bkvD@QNMr`f_)^);0iAYck|e++rEM3N^{mD8+T!x!;N5I zvalx@lw!0(n2c;yFHX{0ThbX-r02Ak)BPq5A&HjwK^tW-a#Z2I{9?%E|1}Th$0h}5 z)gxxJfqN0r8e$#U%olxQRP$0ugw;G}>%8Eb=W8+=g{=l5ii}dD7-wwTmrS z?v92lWPfMG$*tNj7{$KY-&M`OWVR&{*H#MaqSY!4Uq24-*F+6ohvz%&y$-_Cgrz%k9BgcK?Ls$wm5w_lw$iv z>}Cnf;m}=a&$)7lvSf(-E!aZT2i>vJ?V`ehbUcTjDRClU_sl}cMvE4!kGS2}XINrf zQeS0#WJLUiQ}d6F`gzT{5RDIP+`^QDyJN-9{Ivav*^Br!14@|PX;F(O>UtI?3)_-S{qnB*&6mxh7WB98Zk4q2nnI@3_3h^M>@Q**|NgO} zuGd9is-OGjklWPNM;g%qvOdxN!Ecd%8ao3gxyFPBcc3 zh2c0Q5~2N;#5RSLVw^TaXj9se+T+*b;#!!$nmS+`BcQAqS74-FEfdQ$pz zdko~@s)*_#rwxr(m1y_K_v!Y{dOb~U?r+1p7Zul*hicY<(qT?YyFy**??YuzR35E! z>=OEbo$&qDdxI}(HWFFsoRwwL@Vaq^x3s|M{(XP8K+YoLKg1E`-Tv3~V)hYooHT#L z%yhrEaD2{jEkPOH0H-j87w5_9u3de6(FauZSlux0&vHYsH;G*Dl!CISF{I3#!T}&D zrG5>9Gp3&m*uU?sJrS6cqx>zmX#mBdsQVORf{a7VA`f}}{C+Na?nqyAn2wK&a(0Uu zyxD`>?)P!{wz81{Qsab5DERKjC-0jC1QEq8&&xfe*&RognvuTEtxC~O<9QRvG9gs2 z*P_+E*?K6stsDKVV7Tkr=@?!VFV*`B=F1+-;)I9Rv^@mxzx#A}3c9Y+kil)mu+j}*x@?gl1 zvO-c$%Yo*hKdtMx$-TGsKN2RbB*KVO<;s{L!dZ2N`%aasESp9Xb=~IQ_Bmb?MYkv* z;|Y556{!tzQ)5d4G2*4~wSi1YUl2yQ!5*U+rRTu)m8E5?9?9{w_7?66(+GF@s1s^> znX>vS5|S`~i;W*acrEkj6Ql@#qqkXWKB}|~-A#k{m-$dLY}85iCAFXT&iRctdsLmP zuH+4Tv?|M6hsetvuOoh~qx8Jm4_@6m37+@#R#gy08F91~nYnb^fcVU_Q|RZ=GO3D}wXpnW(EX@x4FhnfXp ztdQ$DD)32;m~M6@NXtHS^%P;1P!3+)n19LDEhAcJn`D0OGEqmI1ED?R@S4v0=84{Q z!MU>`qDxeYF%(jcVJ(4relvpu(AkGCi(9?B-tlOd`qCagF6Zz(UL_IZXVe{XWu?*V z4X|%A&jO%rA!a?=ti#J_POK}cXyW}x<29Ei z?=E9%HsX+zFvk9UXK-JODC@7>ih)(RUW5N$L%AC=pZ2%7iM+{wum04k;{y4Rug+o5zwB%A-SYo$OSvncMdV7}MU}3mi6;;<=NZ z?=n_4Cvl+r1rXQ{Kdo`d4Ss5 z3uNPgz8%``c3#8$9#>~yf{b=PpDPWWFuy>GFH@OO;OHJ8qMxOsg}qn%1Ue*4OM(YB zOm`GmS~_l2DQ>sQk$RwZZr^w?e&=SU&e~DNKUN9Vs1#KHm5TO_-s~Ef;b+njluG zW92DZHuWU?esAQ9>!!5%W7As4N3TxlM{IGvf;|+{m-n$eJ{llDkG$bI71SL|kc?;u za{>sL@r?IEI4kC)N1+yBjbpNQWfa)i%k_X*2EtD3)lsG!6&0LW*aY;DuG3T9XZ6xm z1*2z&yTgdZLMWpl#mOQEOzlH^CwGnRH$}P#!e8lfb0S``?;!9-xdPQ<1LQZ#Z7{@_ zI|yv8UOcc$3EuLQGcL`!WA?Xi4lt(LgR+*wH;W$rC7LKX8r6FK#WW$JxKUX*&llU` z@Ursg)Z(ew{bwu)a0mEu#ntOx@MNg}GlV+hVs2?wu3ii=TWfkrNj06gcrY)CqdTdt8SDUQIOYJot;g2@zD50E@Ay1kw)Z=KfAEzAQ3dm~Os&28!)ib-;4gqW z;1+F)V*Z8VQVsl63U%-#n1x%&bAe+`kM9g}EAz;bA{{l#t?aHZQgc=a=UWJQ20>%U zuIMvuvbs}HKpDN?n|xTxqhogDNlg^##iUL{^cp#5HD#des%L~pSWPWCA*8-4bURFA z8NI(jvS)z|>P;UGQ;Gy``q_j+R~?wn3p#LY^6}+=aoxY1X3onloz!yZU3_$ea~xD|4-N7c_S{XIXl#;C9rHjP7`$j_vxM4tu~#pD zV~96UZdv4Lj5fTl{%xP1=DjkZ(93(dsJ^uF7)GwqQ%Fh^iKU!l>*onTn@fDRiQPwn z#PM$hN+%lS=GXFk`GH!l4HaR4tOIkthvgomRIx~3OSI_jU*w=>ss08)6dgDqn=hMEo}7Om@#eU?S3@~ zqx&BK;mjs_KrUMlo_G72lOcvuP|1Vt>Q7BR%;4`vES$}BMkFt4I4%G=B`0wqrf;SGVQ%I9bA@eqa7U`NII;HfvQ0xNxPv-}O->gpUbPIm8i zsr?Le%R?k4r#X3K)zdybqZM&Na+79nE)hpTzlS7J?jWoYj0VFILa9l}`Z1q_`9vh3 zSfrhq1+r^;Jimn_Su>XFn3LE+3@&vpZA0jt3=FCFXcb@zy;TD-)Y39}LF9X_0{8s_?(@ z{`HGi$S$qrdu`H<+Z2tu=P{006BG1)q#N2D)ZH-n^SI2>R8n4(WF72M&!Yp=Q!~5a zUgH_oQl^Inw<=}QouaSr$&oTnZx;O0(SQPC1e9Y@9e?okj9j~#fY$Bz5rT@uBg70o zQWOI;GVWQszQwZq`il>v67z(l7V#$}?T=DhmA_UGeF80moD3U zzN!_?@;rstJO-5L?W7iG2~)kU8|lou0qAh27@NW15#EU2aQPN1E5FL?eG(C8iMXa7 z=cYd@CN#%X-)nB-pKF<|aSGd0`o?VQSf$AEjTYEKO{dV?41Co_=F`8Cy+M zI2kr8Tu$#^Q;L-Zh-miWnDh5Jk)W2>XOZJU@QJ(^LxOr{Im*zuuMLs{d!>lRk)*tv zB_2+vgiD1wPFkzL%q}gi1IiZam$q7EL%rivMLHMi`>o&NCnkU@ttSNKwhjj3Eyq6` z172oR0SK&_k_N~xUD0F-NjqC%oXYpbxN=NqbU#1*WAaN&3y^Kq ze%$kU1c0;|(gn&Z5R=AURs{%{)l#4g*6scA!*{i4bufjU`P93ZvRVXQYsO+0--ROW zpY_uNThO&aPmpB-sPzay+(DguGm+eSgcZUuN$U&+U{EtKBvB*$gzFjM$4OIQ)7^#Y zoh$0^LZ+^>KSh-0JGAz72|SxrNIXBohjM~Y!L&kH7=uMK4H^#dJl|8HdN-J^3y8`8 z$j!K{l|ddlr9m?%eys<#$H!E&=br)Wew8C2ysA__g$UAibwnDgU5?JW!@4s$i@5`n z2Iv!OL#jZvHNhW`A;k6G6*dw?+-HU?Y?YsO6uXfOu~G_}f2t^5XAvkWf4I(jI6bZx z1ZO{Ai+GWB>tJ>K>QftF0@QPKmWrW)wp%ya*dOhiL+!@jrn+T)&&S_en+w55POM72 z;VcYOB_{(gFEm+t>6-H0jScG$ct1V-`lOLnU`9QL7)N#SqrTFw98bwQEOztz@t_t0 z>9DCc=0LB&IX7d$9e{U{+jA=HySFE;CQVi?Ox^M34Vte0j?+p$RCu3|dGUy>uWE>ZS zK;-~I|Fl_D9bfFl44|WT8YMZ0q=LMi6^OWrSz<8QyfsIYRzwYvB%N4#o_>0v0MVL? zN4HM0We=AFY~sFCO~jT^q=1M0#R`%BCYv(7FeT0e0{1FDex{F*$dn%bKCv4y)H0Ik)b;v$_1TJ*!Q~s+O>G_`I&5vCb*oYTBRxo|_C6{x zb&k6*bcp!Jyoae4J6r8>zC%B_s;tQxr77+t4nhaV0En}qdF(H*m(0@RF%db) zRi8DxRgOK}e(~LpsC^H9Of63q7`ma}en_CTIqEhw4F5Bx&>uAA1=^224M0!Q0zf`1 z&f_azDz=udyJR1==H>3+r+D+1SiL^?nAfnxRxu-Jjp*`k~*Guogl4S#>$`&@}8yfc51Fe`W8mfxXnCPQw zX`(deCmx+&ynRviBoBPZw|{=6{31xHuG=#IpnUj%ocQB~69X->2FT06aJ8~nez^8F ztD`}t)#(MJ;Ce%G`t@Gl9{znI5D%Cn^=w$GR~*2rUNSj%GyEy!q~C0tVgPP^ef7wj zJwWv~+_YrdDblvkesgkhx%-*xBEZe`|D!yQhJ`^H!kG0$7}};|&>pdYfS!*&e>|Oz zSsaDNS%rfEpUaQu|LCN(#sihQmT9Mj{O5DGa|b8)m<$n8m+%4A7$afEVtae4b_%H` zz|aY(=0$~L@2}Fy!8XncuA=O?`!}nhfw>b_A8{4d>3VY_&-%KazLTyakQU^v27H%s zx72%&OtjkATcuhZ3+i@MV7~?}HC{d7McD7s*Hl4l4BTDCH1t!Kf7m+P*2Mwp?2PC6 z%N7Hbf5^W;Bm>&!o(L)C!9Qt?V7)uB2LFa!dwhre(C>3eTw0PfNz;QNS4H15m*PA4>sa#5F*t9^X zCupr`wUlda&q@7sUzA+*I#iYxN2UcurwPfNeiN?HK^}hjy0-gRP{KQ!Of?eKeKIIP zV9WmUYau6;C&0}Eqf1b!P6yDUJh;7Xa6RLI98IT1fjzl^%E_SE0id&z|2mLDzW)bT zMbIb@kyYg)k_L%XUDOZI%7*eA<>+(ngsmdG(TnF>Q?;*8eN9Gpn$W>n`1p8?p~4cM zR5n*nF-|{uLefOPaSMmhlzR%-*oEC z$A7ANL&c-dbvyHBv6JImeY>$ZY%KzmfYIZgJrpV zdcs(i?;dsSHBqIZr~;iSso@rlk%li`5nt23lXMrGUoZpxNF97yFl zbZ9Pe1C;`&0uB+;UxB1lxV7Z~D{mnHMaa9VHwn^c9&Pow;=zWiNZ(D3<&gf5uWJ0s zgGq+H=Dq`!RpD**hc?_5Y>$cPv}m@5*LymWP#^IbLZ2PND)~{rStkAO4xbVL?E_vy z!T%7+JsIf#hZ}8j;6K}qKGhez0-D0*+y2^<_B?7O4sADo+2joWZ+vINojhILJO5vd zc2sH+_L0IimDVq91-!NA-}GDlIhX&VeJ@&T#fuTQ+b?Z#;s5QWv`(Op`Y}=6y(0iB zs<7YxHvLb=LYYL#-}JP$q{MCkFZ;uvc&X~#*Wlt0>j(1pjC}(iz60LLJ&WrnpwsV) zKF)cEdMuPKVZ#gf2RqK^0q^a|ozk*&6n!KRd_4U>x*_it+3fo-m*$D$t+svdF_-_# zfvM6RMDMEn$8Ja`Y;4*a{Q&L-nn&}^f&coK*X0dg{`Ff z;ogz|p)jXyeLI_+7Sc zZ7e}|Uz=q`C2^OQmS+@*M<6?2KR-OIs6hp@t?JOKE?e%WU^8_O#n$H0d4PQ1q)*VI zW;Kwj6t3e&6Ojavp(PlTXWwz6fG8XM58j^R*J->AYi8-ze z<#pNEvOuRD@2WSQx)l|2kH-D54Dw*Rc15n)j^~&yOh}8PL%r!u$`#!68P@k>#$A9R zxTsx zjz>P!$p|cT?PycZ=wPS#)-QVLnvwuU>37ji45CFnHV=zEC%Es+O#Jejj5;)1bmvM1 zNcV(Z+shu8b8{k6F@mAzu^*;`dDf;FH5z>4x962#mXqVoff*q6^BunH%ae&N$-8Vp z;4vDrOm6d>(^Tif+(~T%DhND=S_Uf#>yEeRL}Km3ZVnsR{H!aw!nAQB`Tv@_kIP@~ zdBY;V9U>M6aN?K2rk_5<0OTje0c}ZWx#7wMbqi8vH^tH884sIZlwY1>&3_iWkc_oK zs|qs?(^6&*5EmBOaw3!oD3+zt!Bg4qY)a_vadFiPgNZwlV!Gwt9d0<{=`l(3i=BND zB7Lf)tMU>87KD4dPA&djRqjn3z}cokb9#I%MUq&Rv1vOVq6rIX`6CZB8s2dw0(Oaplgu#mjJiy(ST=v4Oi)d_$aMfX#a_&VviN@fi zk@b&Zw6fFb45xzURZCR=xK@{cjQKWa_fo>vfai}EU0Dh9rw{yvWr-gl#HSGH#yBaJ zYk=G=gin$l)_w+$%DR)co2h+^btUxRLE=YDUF4<-9j#rOBD|M9Io!EC>JVuiJD0Y4%eiXN7i48`ymwr3w$|Qq9s0lhXrCYDsy95)?quS< zfgd&}g0vgtw(}d4s$-#{3^93cokeG*qIQxU9mQS_xEup9X^dq?>)NyEWPXc9hVP38 z6^Wn4%sAD9MNKEO#*e^#)@&#|yFYVg{ocFmnm29sVbSq1PS>9PyNw2ons7;l z2ocgI@n;$>fYEF}n-TVhmQ4fvLLgBZ_kC(HbmY9@H{(^au6Fgc`rEHOcW}|-jNOXa zhDrNE57VID$PKII_{?bb<1>HzuT*qM12m$-2;Fj#I* zxVEer3}|uS_PJSiD9kxp8dl}DL@lI+$ue^*oVo{<-NKy4LoU_b)&(U`)r^0N$_reo zO)3sLgY?C7P{|2w{qi~W<~dO5z2)*o27`Tb8~%zQO{_{z662)XEu}gQGO6q#`c|ft z>dv3;ir7M*fl4wvuB$Z};JNn2oZIu-OJxe)O+56i)!2^D^K#S%M13g<3~dpLu)35Cf@6j!AI$I1kcCB_bWf^mW26>=Jj_OpHpZmEu_8+>Zf3o8{Fk{W6z8ZQ-y$_!j zEnw;lr5Q_AM-R_g=b$O7;M@&Dl8Q zbGE+s_ot8vYN}14$3SKbK7}OG-KMUt%BtRhu9dXKjOsR5ir^jL`uo)lln;Z6DVs;buPD4aY=TdOi@^O<}4_VA)8h_S%R(Mx(mfvPQ0ghA>-|4Y7Hy7lCBYYev)i_2HaU4&=(!34~dv- z;M0YH;OmrkD=N{P?gPa3BcMF*_O)I=x>XArF>&M$VYsWBX_nM42%dZM3}-_KbKtk{ z6hyoFetxEm7@`LD8nyuaSX6({UV-70>8bldu&(xwn90&aj_v}whoqT zUR@9Mad+|fg0r68{?c{?5-rOo9z5@>WFq!43})DdeCNsa4w2%^>&%j>XX1p0+#QHnw?Wfx%e3^->YO$e79%E8Y2-gnpMbjWTxd=J7{Vn8K zp*k+>fkqnfi?RutZlQY3PxJH0#%X79c}*?r4v2$Vz)~vA!YM(Tu>b3Cap)t)z}K-L z?9MqRRoyc5Q#Yn(*6g}fBZKr)kGM)B#^SQP>GZRNR}jOth)t7@M~vSTmfrmAGJZgd zU!JMP_Q!8Ef7eTQ$bFWB?xVJ#(ROS^-tN)^y0T1w51g72W*GKBg~PRKV%A1AURM27 zU|Oe}{S|kYbvlFFn~)nV{*zUm>@oO|bTacITgPQ-jww zbiOT;(c}?knfH!Y_-d5cu53hRZt7==geh*$7w#yVa|&1oia;XXtItbTuHaLG{O(V_ z%n{e1p9&He#*2*M*l|L?CH;j!XF4o&hkBop5tyBRdyl#f6w-KwG{o1A@w)^2t&+@a z3*Ue4XqgS)LZ`dO#zBKTzxA%I1*}$cPDwY+y>*X~Qr8u6W(G+NQJ{ga8B;@1eLj3Z zI@DP|9Pcv1n;j+chPhK>Wg)S$mD>4(59cx4lDFiyIK+t7@SzvT>9(;@2V*CT*>U3N!(x<#p)FBs}8E$T&{uN!xg-0y!_%9<~10=oPqc1h~@` z96G2Q0XVS?Dxb6(_Q%(*wN4*U8t&Yj;_9=Fk9~O2PNOlN4Frj6=|mrw+PSESWMI$f zx`1Hl`S%+6mZ#7+B1IYnMwzuq2J^OBYk!$579;3#g4UsjUm1PxQ8ow>cb{Illi>sgA4_6zwZ2IfLD<6&l8nFuzQ@=$ zTRCwZu0X^;760*H`*Ee<5P%X>Z$kNSx;j^1k6fKg^Aez!A1y=7XsgZ5nu;S)X(aKd z+PB0PF1Gab_|FenIZuvjx5{J;B>-E5{ilo4`7imRP9Wwobp_=j&Skv*TU^o`Z$0q9 zd4$()gqPrRLqVvZ7_SI7bhsp2M+9L`bK?#UN&Z&El?QDC`1Gu4u&QE(S(s8+0=B{29)FxP-%J;&xsufaKu@C>^nP0g==zsbr z1lAvl@0@*^!f3l*f*+`~=`pKzmV44fb;zWB3^bNC@&B_xF?R5!<}NWlFN#)nK6X^{ zZ~6>Oo4`93GWYf4@YRKjb%I9VM54t-_FQms95H8!!QYZX>-@s0d$G7$G$Wb&AyT1$ zsx~TcX)fffy#<5)exv<1!W62{6RDSQOJA8^U^+aFWt<)h!4{Ee_RNrjl>VSRd>%EC z%ql!%)BexWCX;C~i8Y=EVMr?6OMQl1t%b1uRak|I=(%bi>iE9<mWUZ}_d|&q+)5iD0$lZdD5rsq`+@AyG%+`IYvwvZO4t?ome*_&E=MjY4_i zPNAa1phu|BWfEYTFFkm+<6d6d)H~fE)%bpy<683<-UXbm$Z^VJk2R74Zn+2>v8}f3 z(!s~hd0A3Q?o)u{AfdfKY~dOo?+5C)sOEbVy(E%4BTI{xnw_` zj4=Z-Ezf3ms&mW&U0&HN00ol!Jm%hS2rvr_$}@&9Mj~`%lazQeUh$Z2&aQeUdy3xt zTk#Ukp%GUFr4?@tffr!(gEfn*RRr#R`Hj&#STg?dBwI-fV&(HE;I`oDZKM|wUkOsi zCL=2Qt9EjYbaj-q#R#jiJG~X_w^XT=fu~!B57r+pdT^T4$_kizx`TU z@P+9At`Crw}TEqJ9cL(y{9#Viw>RquOu)5n)_`p1=OWm1$ z_W1am%#W91mKgBVuwe^&66jYLwX9Hw?nOpOM`%uT`ef9!6(@&&Zd8N0&5v^i!@{@) zus@|0n(mD7I$n&m8m?WbKdrbB_Cj3u()v*eP4!0kh+TS@n(<7gI8%T>+Tn!SoSek) z<*@r(Cpmspny(t`Xch(I7?3o42kO4oBOS!UD3)4| z)I`&e+jDLUgz@SHvOkdvHtid*HA?)H3b~Q|#qh`IwS71v&bZ!*2NK6@Z95vFvV+6c zRs4BzwTzC#fIEfn%vW$soH$xr4wG+`q#l1xZZHfqU%$Htj92lPHtQ{&hsE@cvk`9Y z677r5@y_z?!XLjwt&|m)XHIXDwF|ZjeRB@ta0i-K+d;WE#D28!97g4lEri=dqIRmu z-h6dY;bRyu<8v$R&PrfOk3WHXFTgiFye|Y*1#2Qb(h~Hy3z+M6ynsBbyAy}AHaKzt zc5!j%D2g0L{*)pp4&Xt->g-31wb{1h@z!x2Yd{lT*Od=5%&mssnv z&tFHmhbaA^O*E@Z^1GB(GG!<-POu=kKw_@;&k);|>AvMR?`+DOz8K_58?Pb@2rF;5 z>xxRKt97S0T4s~7&q^noFq0bgO@?lrl5E=M+^2@=&vTFVAmCPQlL*&ofI=5lR07lv=i zGz-q}h&VgsFlT1{Qpo%X+5%VcjJHBCvUJDo7(P@n^B7K!2~(Jvr`w&FpBL*>{zjX~ zn6tfT_zl+`TIg!OY_hM7psi_;CrC;Sa1(M@B-}x1`zHs_wMYsBNW}xeVnH9QBAD- zr&y^{+uLC15${pYnq727Fa`6_-b7bz{5EO@W#J_p$~~}qHx;U3Ce96vZ}Pt4sVEoO zYU)FOB}d^QSM(2G!VxrNBJ?HgYabASMYZ4SM)hd`t=~$zZx2vA+rYBy*N)Y@I5YCO zW;W@3#7F>9-Oz>z-|r*T98QPYi*F4p-bd2gk2?2i@1;hp+6A18#cx^Wlqa7rMfyIB zujbl!w6ThDHf+~7dg4ptDVpm3{YEp$vw|8z%v&Wv{*=1qJ^+FBt+UaYX}SCfOrjF@ zs-W~6&E5Hd*U53XI`(~i@C!c7VNu~2!hIk+<{^RUiJ(0y;TdM`R;>n;*OA^YIeIUB zuZXtJqg=d}xjQw*$&zVXaFI9TRaJ-9brSlhe#icjm=x(O^ay9P=N#pR1dFxT=fR}| zd^ngc#dY;q9%G07djE!o7?p=53t9A-jg4N~qx%}Z9I41rMYhpd!2)(~PHpMba=ND3 zdbGWzlY}in&=~_Lzd&D5o0C*qYmCr>t-!-*_~=R`VAk39_R2pL@)B+=QzS6eOXg<~Gw*j3bu!d=Jx2*v;IYITJ%@j-Rq z)ggUa@Vwyib=SAUr;j6iy%(YB&ad==JPsvQi^K;cU)MH*%cAq4-6eqdD zwUxB!Ef&bh!4?xDGj4%H|{TJ zXMV=^bvW%Ou%Gz+%635YyQH;1w^R8$H14xb|J2I>x$(4i6SsKg;)tP-3)|f3oCvHa ze0w#jhqdrln(I5ixpiq*NKE`o?WIX_S%k~n+W)m0Y`p>)ru$mc)U?Q9*qrr4)8>MC z8DORA&C>heP-JHzbr6+$wydhz)v&qXEZk=x2LN#yhG0ypFoGvuJvQ|FA+}Oy6p{C+ z5q7Bnx5eA?2KsQZKF@3aBW(OE6x*fVi@7_-O5IbP;$A@<&1*gFjPpN{m z-+^%1&Q7coqhPe=YH>NpE=!%&uZ>?I)Mtu`)CE{Fu}5%{i3l}@ni z!n=UKxskblqU5)OfR#w`gZjGUizSZT$eh zVBJ}0*o+=C$M)RZ7)i#nnR;h?@zfV)U=i|LRy5Jqk>jk2j6|>WJ&y_LiU@!5u^vZw z`Z%C2bo%|YBRdXTHaD)aw7Jn5y4BU>_x`jj{r?PLgiRKj9hby(72P@E>>@t8Uu5Ts zPfKhx&mLE5qy2Av-?|_cl<-9`alNzt-3b-TJP!54GUL4B&p1FUlG>hXP-Jy^P#lXW zbATGOw*0wDB_DtaX6+-XUJTzbg5e4-t)3pwgKJ@_=`tcNq(01f&=|+rVe|$5V)x zaQ;ffAanLOUbunCpLd}@l>@XZ>27xCgo_l@^iaqspjmm-LL)8IBQ-2n6(*mM)(h9m zPFMm6x33*mj3-%1INxpURa;waF;E99v|=tpMTBcSnrvmh+&HpwDJn!@irsv4_Jv`B zYvlH41CL(cYA4(Z)R&_;1N@|dR9!r1TY+1K`3 z8?EhW{*U!k#H+s_AWoefY81GT=;eR;QGODLbS&Q8eU@oE_2rM_d+k)4aREueWDr z^KAbH%5JmGeZRMJGsN0<+n8qA-P~4=?v2B4FV#@KRh`dH35vs~r>9a??GSacv5g>5Kl4Um*V7cNU?sIv6}Gt{ zxfA7_44vP+^*vbK2#2rmb3Gqf=w(?Vcs_ohLvv+m`0Y9Z27dBnfzQDpWKCFmd|_8@N~zn*ZnZsgCUG%Iz7sg zqqpfR_5f&J^2o;4aZ0yv80yOGFPsbg(bdEJGh(-=wT$I>g`N9)ZWZ7&_TjH?ddnn%{OaN(A5KM$ zJM;7Mb&2ghhiJ!uyez>%f7pkO2wd(a^gQQnAdw9UN-)BfF6%Wf_0_oh*eDT#fdc*~ zGe0<0U&M)x?B|q|*|o;WPa9H@ZNNnN)8*eXe&s{Zen<&2_hX_icBkn=g_n3&rUq9;$Qw&%SVp6VJtG@$lrXqwH4e7R1nlYZ9myZJioc zgQB(jjSdTvkazm^Zjaw(067)G66;p)bLiV-sE3_!qT{3d0c8qKR!8&tS3m9YVf29} z?vrsnjbj-5t{r!H#+8D+e23m=8!%7&4y3=5MKAX!46lmFx%|w=ed)&H2ck$*OlFY$ zR4y_E%A2se&Kh$a9|y1jQf4Ll83LNnH;)wOSZU{VuOi;On5}eSXB;sI>LqVgcVi}r z2m5QIs*$!O(gm%O$4mkAkSd58jrb_Dt)per>tVkgfy1v#B(S?gPI+m`(r6Xt6`|k7w>z4uFiq+#A zi7np+cva^4j#crczf0L$K5{Ggm##|K!jTF`BsSaDOmCL9$eY?{Ff8q z{DYjMxy!42MYbj2 z)&-`wTaI{SlcaM?8^$kAPAElg^wrzj8iU8F<>Vkz zXq9^+Wu&8Kx#2G6RlA;Jhwv{u%)Sp6|Ga&ub>DkcJ(s#^#=~1r3~vg{r$3q-vcjW< zACW^nY&kcTDvO%1Z(*MO1I1=%=0Y|l9N!2ygoTd#{gI*OWJZgmePGRZvvGN4Zck@C zocV>n7`_xood5>#5^5V@~)GZ!` zy><|lY^qZoAM>=`-9ZBqYK!)oF%QsD%5>TS+`aAoX{K9wNr*ohSAZ-n?*qbIQh6M3 zKr{#=n8*Y8!k_ER*eqzXw$5^bAejAX<)J(9+54&v?9JMLum9-wKotN+t!)-O(5oTaBO0pYAXT^^WQ0S?6s*7%1RFzVoqlDA9Nm%fc*0mG>8UaJ+e zqNglfCw&Y3D6Q5Ev%mhVs(0l`0Y{YJMGU9qYva*ZGt`XCcQ}nTYaSRd%aUssh>yfj za^14fq~Wf;jSk3(fBwrfKCZCJr~{g+I5c1OiDG+dE}_#NAhB z*}r=fQk6!~5j zjgcg74XVzKSufdjC}d|(Ie*;x18AU_kAIb(K7y+a2zrjGe)Y}-IWefKt#%)`@HG-V z+PdYRx7t%RtLwkwqY=njod$a30M}!KefLaOxL-+{x_1sb>5V>?`82K<`<=0 zw1DxQSaOk=)Lg$a-a(D4c>oTOr~aIqT{al~sPhyuDuhz4s^imDa4sM@rLWC4YWY+L zSRjbm1d&-IPHm9OPqGavW+gmhGI#seM>YWl$vuz2=7Zi>>Edm1PDwwWuc6_z_37~QD#Vlkp4 z#HVHJSJ$F~mQH@qV=iuD zz$9fndM62s^v_YnsM3;|A99#MS<#Jh66Mh&M*0N}zY+GoLeujZ)JQXBJH;bw{lhI^+?*sSQn*Kv-LGa8atY_dK|_>dOdP)=1l8)Kw6+p zA^nvTsQ-h#_x@`#>)wT#QADLV7C`DaiYQ%rM|1?Gs#FObAwUQn0)(O{Fp7YP^r{Fb z5IPA20tx~`q)QDU0zv{I2|a{*?x6F0&*wewA8_8!`|RJ8Th>0`G2(#DvLDRZSopc(UKwzmw%Q2KC@D(tmf)3 zKWYqjw>vn}ET%7%{KAwLOChh7qW~&tIOfUW^u6c%NqXJn6Qc}3?^$hl0ooN;UJN<` z*)`zJ_@@myzf1Ur1elH;SXbxl0qBXDUF;M*6I$cqcE>7kIiUJ_R>!sH&G4n~XdlY~ ziU@<5RRMURm67%xYnEOa=28>2(d zL)APJdiS30VPB7HSQzEi@^c$l0a(D?BMZd z?bAISwe@A*RELXSHola*;S#;L)+Sm?DOP#o4R1HrCeXam;1pGISevJ)}FRm@!Br(#6+$AVncg{1QnSc6q9ui6eG4FYUgRa;|ghvjB16;cfBm}jyRD%?4(ff=-{wQuty5Xaqu z%5bB34Wr|miWN15GGdNJZY?MgEo;KO8{8zfr>x>G177NWntolkAs-ZOTj#t^{QCF> zTy5v3U(4q;gdivQRU%pyuteb*K;rjiDn$LXP$M@pjmlD&VA-EMe)Lvf>Th^c7iyO7 zOL8v3tK8mxEg7OpeLz_wp;hof*AfzA3fa@56#?_XZC#$x*H)F&^Jw~MKjBm0M&Dbq z{}24^bl9fVErS0NAQtp+?)KK+Q=zNp^&x^a)4Z)66PRD>MES_Qyjc0-x3g&x;I2Sj z;7(*uY52I({*}lDL~xsl0ZcIhQO(Ll;S@&@W#k zR_;o#$jX9X=eX%+iy}R^v(iHpkuj|Dsak^roo3TJF%{>>ee>r;#&(8GoNd^Or??A1 z!FTZIo!#QDF__x zfH?hirK)nTp_7bZ4O}d|9B$Gm$kew82;8etd8#~e;ctIelOkBTUF7VPQLC7?aPC-^ z?P36*ZSt-cZ_IDWG+J$rJ2wQFDq#XG6i#q+%T3;NZaiRII;#|EOY|8Ww{=`-+FlKz znZxr861sLt6Ia%@Ph&B;a*l0LfrYrqtHHb&w*80);c#z|<^+F-M+i*ZTJJobiqP1b zI)c!T4&~2-O|*PfY?;3+hlo?)un3JbxDtxwAmxht6W#&36zhIcu>Pxjsa^&Pxkm)_ zM^tM%CDl*{{%|GFEB1*}C(#=l9QD9kSuX?`X7(kj4m8ilT$d3BbZF2XDD-9KY<&z6 zC5_m{%v>hm5(+nvHpVy(q8(wUv_^?SeYmK>;Nx7^Rvy>;~Pj-_E!Yl&!7H3oMw8*IKvn9K$4o+Lgz74Ev5^$l#BB#yZ z7OPW>cSF%^6R$Zp&gPBIi^O~l*}pD_7@GnoGe(!h@$5F1|Jj4C{fMmzaq^f1gD@_K zDGs&mQUlMY_k@&#=4yYaT@(T~jn)w$cNjswb_Z3u#gIi_J2A;)!_2t@NPyiR!tNd4$(`GltGvh%qD{9NoK-t0Sx*|%d7 zp7-rNTmIBo5fcxjY5LP_PwS#?(6cMhMUbcQaUJ}yjbp_vfBcw zULd5@`qXc?7%@>A3$pj_WuSb^>Um@9i74F)LED&E)iXKtj)v}3O{cTR0qLJ;)>Y$anE? zd-Q|d@d8KBz9QGe0(RZYF=g21;&aWs=b#3kz=bW1X|U3=si`^L(Qm|@Wns0K&Ssv~ zJEK6DuuA!~)B1i+8L)qMIN=J-aJNgIfPl@cZ6%~%cCWd*a8J|AkJg6ReqfnLzntWtCc-F3c!wo(~D&h6Fo7DOMUDf@p_%*e^@W^%`f&av@cB~nNVUuRyUl(NU=X3H!h1-v$Hgd0aD`A@TqM* zv(4Y@n!F_Wi3-9_3wyHFR~QL;C?0#0csK$`&ij~B7E3tjV~PWO3GJ1KTf@)u-~Rs2 z4WtHS({ET_e%C+SXx@`2(3X@6Pb2ef@qM`_J~Fyrh{=*Vj+J*Wa>gaUH2sjTyRSsA z)2!;K$^;y`hc`@7J#e)bJWVr21m)WI!jg;D7EcMNrW-~x;lWW6Bf|vE{_^E|`rYD1 z_o=d##MUfO9vA)L6I);J_CCtV&QQ*#bI`U&)DJ+05pbEfl^8k#4s}TAUSi#VcujRD zRql=_Eq^Is-54GtiY;PNz;J3p_hd?z`tGzz7g5)QSi4*EerRQ3=ltD)d=NU1o*Lc( zNUdDPGP8VH`Y(}2ik3yHD*z$A8JD?ym(3*Q};$5erb~?;Y zui$auoo8%^$a zTe*?}sM6??+1reVWSIb0j^tDG!BNgn_!sT zdva3O^6wfaqasC)E3Zx8pZH<=b=BRmnJmXR()IamHYyu8?PLtU^`;o)g0Z7^IF_quuXT;lx zr8ZgI?lLDx6BOY1ur)4ZR43H45!0xQa$&L+?#bVdcW<6PEq*wgb=+U5Pv(zSdu(|SXcZkd5#05;6tn=@cfq2t!zl-6qKS#tTTkJ7?5+Ft!!x55aL zt#z=2Y!{kFT2WgJla}YSJri0dQ814E`gv_cqgbj_mO{Ct#iJT;0T|KI7-g37>zcd! z;Qe%m8&+y(TuFS-(OdU|wHW2~hP&Z16RB_edSeELyFzCP<;I$|t})A0hO#uLa=>w` z;cTt~$jO+qB6qJ8-(G-q_9ey)fRnXZ{^`yJuM)C`v`?ptK>dqf=+C3mRgS{vC(j}Z zY&)G(P7pZ}UYnb#Nn8S|fZp7Me}z|gGdFP&Y}<}~r!y2S^R$XA=4&V82?2Z>nn?u6XmbW{u*XiHB0qWjSclEM1vUBrpx%W$sS&CY+DqgxIK&FqVMCH63!8aq zffHE-%>h+erdEo+lAmEexXmuqE>tD=K~8GkQYh}7<`)hGSHW!8=a_)4KH(THA*+5w z$Yi5Z_MEtNGvfid4yLpej?7Q0_g#WR0U&VlKR|%U?x?fcd9?03_Nfp2@>kjQU_N&^ zuX<#F315i#Hs!qaDOWMg1H&*G@rhJvT*mnkzh2X?3+r41n>=-nr9bT< z1M)2^Rkxd+dlv_M%1l*cac7oH^jb+tLm6w^Au0^&{Cc9HSC;l^0J%B08w03|zcc*P zkmK4k;FHeoNau2b69kWE*@s&zHY!3Rl$RuGf@HW8Xc-ZZ%=}6CTpZYi9<+)lO5N)2cccJ&nBrok|#c zrD)|u*YZ(Pw%{{rTCipv5PA9M+EVyF6O5G025G=^KEH*`Eh7U+gU=p+`5j=SfD`ud zF?=;9Rug@d{=iHf84rI;QBU-=7vd=+@N9O{t#Nfi+Ipi3F~@rtM{)uLhuVfeCfVy|(@!9B`>1_?(w@EQytD)N z$3>lUd}xoO>8zLSeaAx`AG)mXUTeO}+_cxFbx@vwGC0+m=ip|@rv0=$Q)K2IxBabc z&oP5OgS^MJ##oaejFenFtpS4+x($a*;Fp7LvEl!k-DzFby|~;xFmmi`M-^=WedK%h zYlhHO)0ot!<~z99ZsXlfK;!gGe&*dnPRThZGV3Ja)^n{=^&0O>U!hOASGx1e6~aa( z0n~S|;DlKiG$4$7$)~LPQ%94dq6y_BcF4h%IM^3xVW&-AM1CEwq&Mj1%e8#nA0P2~ zH{fr5?>%@9&>pS}y?wPY4Eb$j`0CM&i=5Vqsd?Ih^U}9NRXq*KzB$o{ll18reg=H6 zh^?xAl2<6U0}iuca%g+>cVHxvmhHpciIuiF>k2NuMF)BHxgAv1o&We;KWvxynQptO zt}jv(Q_yoEPyKbh*hW=H5KKi&Q~StYM0#SaU?-sTM%GzKrSW~&ytkeHH!kQ>=&^HD z6U_QH2Ow+$1fWWD*z!Ym6}S8oi#dN=vtwLg$j+87 zEwJ#W{~V`cD%e2>bqc`bD9S5N+e|klVX2b_^oKEykV%N9EsVt`BeUh45VrrVEG+nz zRdb*T#9KAQ7$d?Iqoa1kfT#joYq{fsQ-=G;-~7Rsu>}anN#Cbx&h4&fI?l>tTPJs3 z(Gt3|gK;py<6^TuJu8R}Sk#@}j+|Z6uxxephB_dR!y_EBGQ6xaa5tl{?W`$pKvs>c z8t+fldWAQr_cxfr^FdxG6L%#~WPT>cRm9~XxGt&_DnxKzTED2_QJx9l0^@-dI?x_c z;U}6foUtxc-R4tWm)o_7vti#+XqM;V8b-p)>R=_AT7+1C06fTH!-NwkIKfmT#WF0X z!aX~#1MZ>o9y}$nL9J24%P*iqefED?jqT4Yk_5r!$@Sk77()YrmVa4|my@jd`ZX0v zfE?)ViY=27Kht|}Tk<5Zy0`f1BEgde6C+8L4)qi?2DL9p4YK1WWC|Hu^pl&K#n~T;1Z`k8bKIU(-9$@H{mv?*z z_N~u+Gc*yklIwC2qYXYpdqscfpp-g;Bn{?!PF&dFyIXSArU>-pn8ZY&fHB9Y?su|c!rg0fqqknLDPq+dQ$+aQ~+d5y{82xI>D8>Qcsv3ciRB!=Y zR8`A=WT}MP5gqxi8BntS`P;y)(#w3@QITk3q%}9qkOL~(_WAF;6zXG7lL43|(1{hm zr+U9{i;}{P2)-?P9l`8K*E|qeg?s7xAmhR<5k}i*|D2~2+aCz0YtK2eGP^NH6$5O5*kCm93CsJiGq(wxxH zVzyDQkcV=D6raNP!$605AG`80GRG0dY%_&F8D(Zk;=}H(ZL_#yUDw^+W$4 zJ9s*~wpg_ACxqvQ-PN6Nwh0gtG%O0dH+j>#1IUX`as%;Ry3mMY+CIui!DJo)yw{Q$ zBJm>`0>4WN1jJ=SV|M2?wu93_wTNH6Wa(!EB*P9R<(bAKF?PI;@piDP6X{65{d zW=?_ZBcbY+iJJp!56T)uU{H;hjnMH|!lf~BBGClxVGTP#%btr_A;UP=E65~he|^YgDOqh(+dq~8Y=65PlZf?V;m++kqi}dPYd2I|SBx5~;BXnjbd+?3)cJ z0yg*R{uH5Mj)TLaq6hs5n~b$@$Yq^-G<(4KVaW1t>ZAPnw!>L9-=%P)Q?8C*zt5i_ zZb}W;DBEruptku3eVa^_6NTBsRf_5;_#v0z{usNFtYa4l+!x~(htOO%CuV}jc5Al% z{BtF4#~SGXF^&6Qkjwp1+jN+OzojRab97twCQm>deUFZnBV71-O$c=7Bg+Z2C_t%A z15P8LnYR3F@NvajC;cgtxuZ+ojwv(j&W^^mUX*F(?=TJ$kXTz~#m`H=pwpwR``n2; zi|tYn79CU!aEUd5xajz4*(W`D0ZK*g0Gg$TR=o4ZXj^9SP-wv`;W$l^;hWFclBeC7 ze*NYY5v_6%`wm?5)}{Cg$$}oDvPnhCR{K3jSD!}P{41#@JDo~WB=K}{y%GQ4`fQZQ zyj%X&EG3z@Wxv{gRkQxJ2`v8=4g0TV+OJ*l|Du`p-~GZIf&VMaMg5Qc;H9-?lE8uY zmWWKw$%DP|1(sB(?~!ZHvq^pZ_n!cd#w|zQ6rWyi2v-85EI|lRhx@F zEZbC?@qNu_iRl9}IrL9&Q|IO-|24qto^sv^;U*}_A=575M7xngeP$lW3S(e-ex$gq zDLSro>FaI{kvkTiswt!!BzRnJ&>tx#+4FS>6aoY;m9esVMbfW>tBE0&+9076Th-JAx&?$ia5V!ZiIl-p zo7HZnTlvVRzyV-3j-|!N%9L-JdO1MlMD4&$zhI(6XnL*=3J_8L(jVmmvYGj4%AYB& zl%5X)>mjx5@=&HGVAb9wffN1$JJPaPJb8Ui1G|4;O$wfOUkQdT4u0F8~T==u* zG}d_l^$Mv5m(SgK;uZe%3lJfYK021hD$)9-IkB~CXaf)(nf(D2%GqJM1=9fBi=&Me z@h%Vn*7nH|f){nLGWem=>!3k)dxf#w>AV3;v)XN$b!V0t4#6tv?+X2#;E%)J*2nP1 zR4WVa>za*MUr4@ayBpV90!!v*H`GKtZkH_@b3n33wGp2M9L=>ZIH&K`1dySFb zU&xN8L~5P)3!EBqtPMC-ArGvTdW{*!Tk5Re$`9u9Aip8)Vua&~@o5b21F;rx{Z=D~ z3p42iXqG5z5IOa{=nYN?O(jxvG64w~LGtfElq72Fju(QZ?j1T(@rWY)WVf>?8msu9?jSQ)J&y zVJdG6M(|q;>2?+zFlphQeb{4tR=hEkoqZ;x;JzzgUs26~lBi~J3V*dZfN!tJc-Ifs ziy@c#-zA@`kf?y680yAi{y(3|VwvU68-UxfIlZdiX3`@(HBY%hoi5V{G~gR8Mu~eX z)s+pN-d>z+$(4k}*tRdzKss%jBWV!0qp|wnXdVaP`j3ShtMJ(~tzhN&?DSWTw`K!7 z$X*A{!N1_eqtd>0K$Sl+MlWV&dFXBBqJx~&>Zdq^#mDb~8Wp!Ps>E6GgLlVTjT|L2 zEUd!>XIu)Zzt^4V`fMz1+b<>P&Q+>L{Ltfga7ph^K!fj*ff!eAxbH2948*qrV)}<4 ziM*x1wfe$78ei9^#ZKGZoc1BV@Gi=;1%z!K4Kn_q{Imz(ewfuVktmfZ_$R!*(&W5R%+!iHSL6? zy{Y=oIKNw}%@P_bGCkiP5CM6wko_3hpvw=WNAp@^)H8oW)lN2F5M*cSt`IV|#?ypL zW555L-u%|0d;JL2zZYy}n)3`HD#A(!W&7jVM783Ek~0D7{7PK(W+@|#B*D8M0bi(X zPCjT>)u_!6oEl$Ci#Av9Z0({_=B_fgfr6G=pzn>brGcDi_cH5$C``NA>PHdHEe3s; z+ArUnn}MQFXA6LMo8h(>eKvtyx>rDS_jF%t1A7+-pbS_Ah*4xRYBDiRJzICi1{Yjb zwo;ez51YNUH-felY)y6}r?}#hY3O--)KhMO*t%=nKi|M?Y#q4sX>*#VPXw*jy+ff6 zrOH7-?kJ%4$r9xim>283qZB)bO;vyg$6*0K#2nroj}Qf*Zd%8#P%-F+tFH>eZL9yF z5xNgpxT55y3x>1MlBSCSnHNy!wND6e0n(3K>kgOCD$iC`s>>K`-Kp)h?uS}f`CrLM z4ON#c3*Ssx{#c5KV}C|vJ`&GR(m`SRq)K9Q)uO*J?@MlOIDESp`9(y$M(vO)x|S=}^Uc%LVEGtWRPR(R1CLAP_ zagX~;_yUlw_P1OJpw(L2CgmGEfS8f$Gky@fV7A)z zH$}5$!}NKmM_h}#I;|UpX5E&_!yCMsnrse;92;c3oKsIf^XgxH-|yneKsfGUOy?03 z|6KB`Z|HiNvdpxvJ51H=p(@K)e_AitebYMGcTn5hOuhLOaO&8Lk83lLrEuviz1RpSIrXw{M)>KEJLXB@F+HJUEBUKVdjLk5X7)xQ%?$OJAE zG3kb$U&>1%CT>Y>@eJ&G_J}jH@{G4u^3jn);zC^#(Dk1*#TC`-)dF`6f0?tRF(SG= zBPf7|Ysbj|>&cV`7>#OC8>MaEh!)fVoD7y)Gb;K_?miO<3u+F=i7&L4EBI_ii+YQl zfv*%-Zf-tgWLZSRUVTvfmlgs#2oTg0@bNxm^nIfoF;sL&UH(Ya@)wbbA?MCETAJwe zheN6QRu^z*>z9JACTw>&%p1sztwpfMyrOL_pes?JV$n!p&cv@K^N|YM37db~mm2_) zgjJg0O^qCm#tF^(E6mQy2uQ|ZMG^s0WUxf@lyb)4)sH-pu$`uq*D(Wc2QB-hgtrwQ z>>DITr+&@+*GIMdP^x}dxadxl!C(6f#952#@laF&LdxIAw!XAV^JW_md~4Y@wsL0LuppkXHZ;uy z9&7#pof6MLN3UDk0On;~lP-ONJr^&Cq=~S1&NxpTZ*Jf536u0pq+b|MRqb0k0R;c4 zGi~?>OC_rjEy6 z29LfvWq$8Ls-!P@6#E!2MSkd;XmZ)=ypYjAW*14Os2>NL?5 zILwRe#vLB)ge6Pmyw0Ij^G8Z)ygb^=Vfzb&%-H}EL$i)+eTzE9jdo$$85SczRMx#T z7n$7SB1@BJg&E^M=|d!plr*4S4^NGM8V^YJZ{D`J-vX4R17Z(hsOY2=fRSeH@(`4)14Ze6)+>D2^W3Meb=sBYe`f(K0=z7+G1!2OVH-O1<=Kg~P0&o> zT!T}LG$&Kx?N$DS5Fps_&?5v$@EaAyazokkE}KIB9in=DTl~#5pa^u~#1YQ|5#?h6 z-Wx5bh!Hu$L;a?5jTIP}NIv^dX%s9s^B#9e_`-B0R3pP`FZU_SY3rPx++t=bD$YAQ^;<$dhyAzt7R5$fbQ+! z@h-fOQZ1PAKV4!nmHj9^SngFJ>BjxENUsc3-sy^h{e!i|*`xoeD9S;yU9L{Xe^j`8*O1SmjfvrQ@*0#Qj%c6XMioi0~;pgW{>l8JcIF z@)S~k=b^zCHE`qmIIrvOB~O)XL)!NtAR8Dp#1LU`?7JlL@L%54Cxsb~?r?ts?m<=v zbNAd&7?N7syg%cj?k>V#_nwH-S8cig2sPaarWg=7P}1Y4f<*Quvm0NAML2343NdGB zOV}ho{Wf!VGSyh~uliw;&iV9YGmpuaMz{`t>lX95nE%alm(Jx>5}Bz9_< zXi+4&s@kzr3VwgtN;9#M*Ka7RU7>N>3+%b!tY1j;?(@U$@NkQ46ZTEW%Wv>8vN>f< z7Yt^h>D@GD${o<8xtR|?_80ZBlz>_sHZpSa$LphgGe0q_9OmOM573fXU4iA;W$)ud z^`muiZRx4!DoQb8sCvF?W&$D5%7H3=0Ga*`IHJBiJ!Nep96o!HV@C5@sa{cA9T8$% z`uVX(rD@Dw9XZD~s1}W%$sNnp_9-v^2-5IwGPINN@_p6U=V$YQ8fU;A)#;G7 zbXNnxyKzT65BfTZpctk21DFPM7z9>7HqYPg^Xp8J)no=>%evS_cx&vU4w4CHaKN_d z4gQ%4!SZpPndA8J_4C+sl#xb|j3~9e=kC8>#W26>b0;id(MjrE(4Ndewt$0#_=+5} z^S}DNpa)FzBLgZh{M-@*H38_{}KJakLjC#cPsFRyKes)8Q>rP{R*(P{HdQm zid7-tV8D_jZN)Vnhyx{u-)5#J6#9QKSv(BoU}2e@INVxiz_Bq-L-U9gFjlRD6?fTV zAu|BV{}b1<)NdSas8VVB2L43PEyp$%oS8MhMEo!Jds6N25sI|t$SXY34K zndbcHd#mp!LnO^8E2EKYbno$MYQ+epC=^1J%? zX82#&Ebkq`pv8J!^uU7+1&vN~Yn{~x=)iUFoEd)#!D3BH5yGAt)UjHZH5-jeXm22o z*U5jVPN=J**DP7BJ}{ZgLcA%}Rv$^7L@7CfPRCKHFU)Os-olo3w}kN5%kBTU*jJH2 zyu3j@9I8heOk-R`feQ#%ocQ{6J*cqfo$BgZQR>M3u$uD$jr^EI@NXXxQC?7pJjr5+ zYQ?L0b9_VI#qNn019>UcTbrkC{EA^)N?X-_LKRW10rqn^elWL{tQ4>$7JrwEbHXL$ zjE|3}&6nh9BR-6|%9BzBK>djDhJ0L!<@U^%fer*6LA4snD7`c`AhdUJoKN0S>511F z&E%v~-=awSGTN7I0`k&GQ)xA>)`)@sd5|3D;u~VQBXU5iN-Mj2oHEPfEp)1?pSpD*OBYWB<)y+ zR+-E9_iGQ}1;m`CuakHD=SN?Tn0ZEd)wmc(d3DvbRcVnA;x{n9s_GihTgTBU>)y8a zAL#Wlmi{zlDyK7>JTuw*(N*7;!`uiXn8%doJVC!bf-; z8%O4v5rez**AbT9LXbV%1djMd;<}NveWPlSh|u%tOi1D_%LbG1(gP)FuD|;>IjgD* ztaJR9=wm{fV)Oenv%^8W^4H1#1&^oL>kOYp|(p}9;4wo5&h6h#uQu26Shj8LMER-=^BWr zseIBLJ-CcxM|09)ovW)BRYnto_YZtq^bX&#zWpc8*qE+nj3H|!S#hh7jJ|&S=LvSS zlvQ@?bqS}vDQ92TOX}g!E1{?Wi;_F|I+RwDyiWh(L=|cAOD~~HEf;I~Mm#?J2V?lb z@hhweiyghu2;DXxTuq7RhwX`HpSm}5=41!QwoO~wd>5U9{C?aJ>|>4R*?nIj{n1~M ztGw^V-8foY@hVxO$DjJQNtsMV%etqXN=gp)>w|s@kPLv5%p$*e($L@)m5;ki)ztR$ z*+rHugzR! z*WbR17J7rr`V86dy{~h3#wJofuXe&`wiuq_bKa$b9|d?@1xw1{pJ3?OFAJ05!{I}- z5y^-t{B3)UR6KbwzG35%V#|i;%GdxJ{L?U_4l@ypmSm{=r2~(28}`sN`gle|+I(+? zC<0Lr3}So?NXzZ4*M}G{kDC^E$oa!7yfr5waibmeFKmkVk6H6-&ONez#f=VR+JfoO z6xsV9@Ea2jK?>fN5_aDUx?(MFN~mIFsQeh@I3~?(+YF^Al~tM#+BiSVmgO~>k6TV* z_g(BSw|Y=+jSLQ45~gqa>3nuQ$Iz#tA|abOQn+)SSe^D)SelocaFoHS&e!`{1Npf2 zDJxU16vfh)saXe`M7HWDqA5he`1g!U3t7$bJb3(hEK0DPlMNXPOR4ipn2O1RZzGDK z=IXOk7*4T68}kTsn80kR#MA#CdFDvoL-4#^W@ChA`><=jRP@v8f(>KLi0VkO)|C-) zx0F(0#pcsCy&KL0DI29HUd{ckjukjI)?o(7`=Ky~G1_C<8xI6Di8W6|)3~7tbM%0Y zx9Z4Skle-Lh`x~bf_L!fls>lg-61Io zt=N=X4F_Kwz@@}jHKX`%ce4dWWC=m?fovYI{WprF^{{0BaOyl=0xEr}mvTt88g;<(}m!-pJd5@q!7R z)e-W%0odrJRYJhUCp%6I(nbT}PDJU%dNy+NbJC~9RD@JrD2$i8qhx7PnOZM1(iA3} zkk>phRe!j{ec}#J{O*p{OT$Wp=g8c7zv%*i@eYc*pL`r`ep5f$jj>U89+_#w_aQzX z_hq;~%=b!yh^8Rieu@XuTvK*`1ribEW#BY$6ZaPU-6P1??lCZHxm{oG3Vtwq4?2w% z(dGkNKP^jW8B0QVpGNEoPH^ZKQPk*Dc^jpTqaWDtemZq`YIk?r3VqWO$o^o-aEF^3 z8y5E2B_Ed3`2{gvE z*%i8;-N$9zVRIB;&fPv0oBEL0P3g4?H363`E+*i265BtlJu#yBUXJoY+_XC5PTR`~ z@eiC0>;)>ILoIPFfwz?CZ>_AY;RR6t9Tb@6>I=ieMq_q0Ys*L$w*Gq<2MDb63SC5$;BChY3nUOgkUqf+K^6U;T>KGhp!?D!+%ZU2%GbS-LtQ}Y5-jY)-fevFROc=-`by4iGw=h&j&zO_K5(Bl-rG^T4naE#k=5UZin~# z_}EMK^;S$oDyol_Cy^-K9n?u)aCO0K_SiWT*xwN7XG@(RN9i6kI}{Pp5`Aw;A$-7~YfF-c{AKE^7f@4403@C>{n?2N=rbW!pl0{`U~ z{6uCS-y^Y>mjxm+niar%YQIK1C;!{oCtlZ1>qVF$xaxKSg6gO0nn~8kD?C8~9kw#_ z$ja=Ed{Eu1QRU2IkshcqNxOcjnJ=lHoY+NV;y&$K998YpK@E66G|)rF+^PzI z@9`AfWS)mItkaq1fdcwu+e28cxD(5?{HJiQ0Ms_QQjJDH$h5lZIY>>VbtY<;bNE2X zm=@Pq?dwe#o4{T2;7vrhH3GZIM$}Pd;u~rM_8X zvsuMdWWFItMOcFEF%PU`8+B~PMiu4H#E!JMjTDLmxmB4twQMUEFF?44Pi-rcM_{hR z8jFwlAjPwFS5m!}p3Tl(ANdlkvOjXBs%d?fSF)E{>d`gG;^TMtY1q|AS)FtZk>a`-_!a$iD{+ zki>a4zS8?vSF^xjfQ3d0COiSqm~){2*$br9sp(Jg4JG~nV8!DHBCljsMC35t2#(0R zoa92NuE{X#%b;u3)fzW@*Geb7A1~K{hS?domSqg(-J?Uj;96 zk2h4`&zs$8bnZDK;WX`*_l^3ZkX{zoxw+Y%fqsE|-*6l)YI*D}cqhhc{2r&QG}8q^ z(*KSeL0Kyzg4nT6NAVrm>f0VvMiEqF^w#M9<0>h6?Akd6l9I*wN^~>{cL(Onh%#;>9fS>G50wLDfppBq%RKad>tO29Lohy2_>?959rhlys?^or#2J*e0* zt*+kQTm`+oruK^YW3@`Yzx>EwR0q_3rytk+pfQ}}>Fqe-h8?VpX_!D53KdzD)tK%N&>RjubXUUyDMQoYx{S#Vg?MxO zE-6J&YHJVE&tx{fpLE9taEiQOe^ZD=z=^dbjfIdQzW5H~-_*am{u@&H0w~nW^6`cK z<62iol-V;%Pp-Y8_;TuY5rp5|*FdUAF^5Iyt^%`XK>O9j=eoG`dE60*$a&7ny?NN4 zA}Fg!yVzLr#qUOMbZE1kbfUJ+&5(*^u3$DOpe7V%h!2Vb#MA(CwRxNaZ5uz;S;O+3gDu4i5JcQ~ekx$iC}CGK(u?kpUMc~+NO;d{U=-c>lgfj+}=ySsJw!tjAi8Hgu9n-GlnvsLjlUN zp(^^h*I)9d0vf@fbwNtpMGDeX-dqQ(tXk+T#~T3J(0@WtuA4%kosGcdXcs-$dg4Rp zuTO#A8Lb=YmUm?AhgUUUBuC<2S*?|Kdkrbg{UlUnTMpfxR3_sr`ABvIKyf44ULq52 z>_fmgeI_7F3V0*eH4r4t+fTnw8^~f>&arRd*F%=SU$?J|Ja)j9+m{a-2Y81XmBu1} z`|K_*c_40)xk^5A>ND9&cSenikn{ADGR(l5agZzZo$4CoHbfi<#~BB-&rJHE%{_Pe zr2uR=0^Vz>YF3s8#}*@w1Hf({VIWQ>spbhi^kDW8kUSH3&9uO#K~CS3C4=um{U7uo zBzqpTB-A2jJkG7Z&lTYO6F?Q6bniHGm`ogN0UddX2al0PZ*qU0BRgBZHve65b^^(l z=E5h0QXkQ%{ENqRkGVinw1X8x*|M72^i}?fS3ccI_xh)idi%iEdWeY!_MAskMtx}@ zUfqM8$pK5q{DZM7wUMStUgF}2{p|Mb>;>Ah;)qJMR2eBY8+}T`xkAOD&Z+&XDzXtk z8T!hG(!CPQ>1Ly#i1|c{reJaT!#xkfy_{h_7_jOBC`giO%I2GFB0zyD^3{BQ^CZ5r zVT9KfTjHN{6<_M@$4~h25a7gNn0j@3n13heC}$t04!NSnembDEtRg}vWK`yJ()tc! zH)gPr^1>Vhf7>#y=+YArd1OJLWG9|jyAdJLSNREMzxlv^iE5p;gVbLmm~O*o5zdGf zY|!VTBk-#iYcsyAFWvIQ;oTcy7*qud=} zv<(Ep)_hHGlgfG7oK(nm_f8-^6N-_Rs5^oXp_R#JRbDA~2eQI_eVoHvY{*v-=61hD>biNG!v(u@0Na_zO7#B#xS<{ybXiTW8UI2l(9Mm zqP{fsjW>sW-$+X^bg3sdi8+|>@5tdGiRHu{vgwZTgdcpsV~pr4D=_*ev_qq9h>D zsj}MKNpPTtr&R7 z*-G(vP;*3cl$US#l}#g%I#mrrltvF+99B*#YhuJ=R6qu$0m8mcCzW)*aeD zEKW*NPm4M#qHyxG*%7X~$EoiE-_LEuJy0yQ8AgN-e{V;Vx}q~YZrsY*nK2Biw-epE z=K;egr3>{4JiDkZ&KA3xQmoJPsC6r#K{U}6tzpC!Y!Q!mH=;PezPS5B5r2c$Y^(SX z9Gph4z?MT#wcaV`?qHvT7(lzM&+zc$vMWXj3F;rb zs~^77K`qLca4XeC?7Q6JKy%tRoGRv`JWrV`af!3+r21CK@c!*-kyNoBv4e6Yj91(G zYS0B*cBwH-4T_AtxhLs`N(DNoN$+C!=-SC$l(zOuA;}LK2ffGoF5Mxl=TwoXy;jY0 zJ``H@aARp%p#Qqk?&J``#T_)5Z@Sk>fc(yT1j#Lp36ae0@RtLkIeA@R}Ov45>;VjeUwGGrr78W1O0 zl&2407v1VFL0g5tcX6G` zX!j6<;mgC7x{S+ui6%gOk_gDUu(ifP_KjnB9+^0Jqg^~^uYux3HaqhE|3O91MMO#v zJd+kZR(7&N`=xlRAyy}@fdRTq1fxY)@A5X!${iZXRgts8SJxF<(5N$?tWt7zI)v!$ znQ7b|D?^qz0bb@1IHVq4$GSKl{4e(2JF3a7?H6{&QAZJ&v7l0QR8XplfOM4+R0LEy zp(z4VLZp`vqN1oMpdz4D6$4U24}s7`n)DtBA&GzxAV8!B5|Vs7!I|fI-}63aec$@l zS?l~U_a8G$2ubdJ?|toSU%ztQaeywOZ`0fq_buH9y%uC%oq7T)H@}^F67S%UR2$#C zMR(}ey-~JNt@|F0u6EZIGRC2W6Pm5E{c$exW__Q&H{^JGeYX-P)F`D++w3!JCCZfU zz!|NiU?fDcBm6SNWfSkYUY{q_wuoe8DUisZ*U+`<=IvCkTi4HFj}}h8gLW(5QK>is zdr1K$H&^9J{N$Tw;H-c7A?|45`h2)|#)U7_t4}2eOzG~H&O=CHh5IkvDmtnduI%YK z|LJpB+pExB3cB1oZo{ZC=I{YSslne&s`~e3y34Z0uY8|dAbzzN0`;-b*@?j_ZBLO07`e>!W$wSlWn&OrI zf_Afy$JS=7W=PeCECPnr!%`DfrN9aoN3;4pmeEFf+0z!1j8d?DLC`B_mW-k$(`FX) zb6v0HhM=zXR~5!*L+!i{XeEAQSl4v8bfRWqSbI3-mX0Up>$}v98`ze`lq+(&j}EM| zjpm3gTm&Nbx{=o@=&*(^?diU-I}ZM|p~U!~pXci%5vU5)Io86b+R2b(`@ZJ71vc8* zp*KI~J=jgf=Qcv-VvVi!Vhp8bj)efZ8>)QKlAo3Tx_2Dg zkXxeZG^Gu)=^V`fx~@oOhp=i@Q&vQzsJXsPL5Xs_Zowg({oE7sZoQMCCDy;Wi_&vv z-x@7OUPoh?_>8%>q~)J5J<4v0{vd_^apOhwN^pbJH)@t@_O8X$o)s)4p9J&yuryNO0hQg`q6RU$(7K$Ia<%)&PV<`Z3VZeaN`4kiFx!!4HT99?{Qhy&i`z$F)kE2_`8Zp(ix)7cmY1OIQpO19Ra2LouGuTey3i zSnA}u5<_x=>eM+ezpL02%75xB=Z~8LVF-Y)^z*IvfUV@AS$FQENS_<;q8^D^z(oD$ z9dldoC&7KX-$g3}tXIPG>*}I}bC=<{yn?BHS6NI~gZBBve zgBE$aR0?vg3)1ru)K1EvdmV|cDL-UEF8)I#0JBP#qtr*nBVG9_t+vyAlE4h0DG_u7EQ#ZCv4Wyk z91@GeBsMaJZsTLlk>{}cK?0C%F-kyaXxh?k9Q+g@djvE!#`5<061Q}OeEevmG9_lD zCxRg!==c-->-TKs05!SkSJ|)Q26&tD3Le@mQHD?*8%vfE>b z9e~}?FcWmhIA~j(?Uf$)YeN0|3QebWj_q>&<;T!V!z_#N?8x2g99c-Usz6TvI_VmN zu{?$Fwp5*)g)m2b>LMQ#ENXeE9bENKlhXR_T=GR(hK1$H!iEaXV(hw@QWahLg0vFd zAz}H=<-OXxSaCOtU%})f04u^|Fl9=WjDFBtz*(SIz^LEsS4b6X-QwkdP?OVmSHozB z6&HUtS>r=cTlw_Enaf<-OtCr zshx(cit!ThXd!c~lp<*?OONDjxyJN1A6Yopz@$(LgGOF#4?}{sygQxuWx^Pfc~-#& zQ?^rtXl*W&5~ibt>$&Din*VcVu2Z))2L;d8X(bv`LdG^cx<1WpKrLabW0_5yb6Oq(3B&4{ z=A<55w~lquo{dVuTBO!EXcXJwDiiyTY?0uya>E^D zpj}yDC}j2GltdrwFrQC&qIILvQLLvo#`!7qzcI(uCPfDF^|`IIn{G!p6&^`t>ILNG z_EA?kb5@I=BCXC0$zXUJ8*Q|(3W15MY?%PF()PgP)LF5c&IT&0m;xvNTmpGF+nVD3 zFnehBXD}CK)dT$;v`R|>lDJvYE$0&t27g!UX;|xi=GzK&@m$`4AlEm(1`h32u_f)J zxXB^itBExlO|SGW#CnYf#!>+Cqxu9D)~_IK`Kr3yR+sYaTTSx;;EdaV#d#R@C^K(f{1Yw!4x%0is%C@uDrHG4 z*2VP(5^^u440_GTu&JlKPiC1<+S;_q3(DJ|+Ma+UrO<5=zY3re5U+P*{ETp_Q5!h) zrr{7TKP ziTNd^kg;!T`9%WKE8}Z1W1p1lBctpfqnzdb`8i~$p%%``q>|lDSY4pyF8*1~JRQa$ z%b^NWpRs&B#KdTEgNr#aPPdQHk}S*fEk^?h@0zu9nDJ7X9RvHuOr#_q&q+YWMw)yF z%u*@ayr-{=b;3j`b(rdeqA)?Sw;pvYL9?jPK}&R?C>?DMTF>jY2w~hNt6ZBVhI|e- zHf_?0!eVcE97l7bOp5DvAJ@%~a56saioQ%)hBys;q7u5Z4PA8~lcv}lXmCmvY$c4# zIV-M>I9c7s{Q1sUS?IXCR?)~K!OfngZf?1!rFoMMC?{yY`Q?DVqdKBg(TF;ilam$$ zl5AFt&9?W|OegWda?}WBY$zjTe&y@x*=uCXy|kuu3hWNB-CamoH4QLo5Z^*lO!4%M zLaj_vmQ{iuy>UYbBcExTM5n;NyGj|02_P zZfRQ~i{SocqE=0(qhrEIJM?sRzo<^lek619?E2|_=b2<8vaJKZHd;4HHk%FP_U6|U zrBWk(Ep?;>?4m*?6FSl&)9F<&1tL^_6^UcB;Dv>@f?mBHgNxmSvZXbv=Kx&k>1y(x ztkN#b$|=ckIBjM6l;!>{P`7o0Nq9tf@kFqyCf&w)jsFiM+fw5jpn_i#K3X|e-WAY-q0ZC-acDi?R$j9(6OANIdh|Z+Na`5_`tM#A@BK<`B z%odVtb@hIOKwZL3!E)#cv8@r)A6j6Y3G^vKP(`gpoDAj51abAUc*^B>xuvPl{tw|^ zagn!CD{Y$I?)O#fHOiH$6Sgp}m*w7Yu5?2R&q58Dka@IRrLWU;yK&r5M%`|p z>8Z~1!mQ0oR9#ELYDmF!l>_p;_g1L3xpygGfm>=rb3iFUz8r5EW(>JGpzFGA(Pb2V zhHV_0-!EQHC6{P8m=;U;!A}JUeoLKIrmLXqRo#LAfr;-SY#?{AESuDk~FTyi(ttZ%~TPY_B158Nv?icYQb+?QispBgH|c_jfgSVXG|08XE|FPzDU zJ+78Oe7}fFAFDH0UeFGed}QA?v47veXJvjtO@rl8D0S(o{s~WD?(HpiqiP9_IYzSx zvj>ew5!Y}rO-+q38#^UXYAwq;J(PFa{AMf6NW;!8SHGXcI|~;}ZY=mu?fPA4eMQI9 zijP#5zjuF}ipbHAZtNw@N7c9&Cqf7VQVn@gP6Il&mUg*C{!_8^`YctsjQ-c)!DV5K z(RylgPj#>OKoi2^wzP95P-o1fPA9#fzx!}~ezv(s?FHP@0V!Tlbax<~Zd9Ul`>-h& z4;nYise|sSg&cILWy<9)H0e3yB@wqYRoz(}zG?U|8Nux;`%XyXj<;A7EKURESzekF z`bQuyTl*C^o)RV_DLIQhx{}-xZQcfqKM10-{q3S?=pPQJ^L13s(9_Fb7q^XmyCvt| zZqub;Sv%LT)tn%GJviDVnquRpU;XGLn8=@l%AZ>vT~&E9YvIujELfykJj~vB^#M4} zAq{P|qmnB_Z|Hi^`Ss};=JnEuWk@=Uk!H+6Y(7E%kBTvZUvPoaiWlWKIl8@wfGoq$ zRldsAPOFsRD9)9qoq0jqH~M9fc5|)gXg{@Q-hC-1wL-LsG9)gincWGk?Gg08^OB4F zp@Tay0NQuy#H3f`^tU&{1U0sSg8SKzVS)}TRj=$QZ_itc$@X`PK8TATQ+{W}MBBO3 z(w-S00}h5U+>#&BN8;H=y#17B}r7gTtx) zc4L%kFELIvcH&ECl8sHP;5ew4Fg~rKt(riIWPLvMOn;Ht^ux*EkD_;SO8T|E74_dE zS&{QpFQTf*{SE!y-Jf^+v8ET#1Tw=1*|GA!mU2Ld8S#qk|K9xoeeH41lxTINhh;}& zvjba8H7;C-hOM8&$=-@PaV_ayQOIsPh!^ggf`8_Xmg^E~YVAc4iyxs|lB zyfiQevy0f&SlyV-FlVIKt{ono;@e20Pgm<`<1EB+p?+6!q7aU)MdnzmcHAcJBFPYU zUXgY{h#GL`2=0@oFv}*54ExYb_Sd7E7Ds2gz?AF*=zVcAusUQ^Qv3iElWfkTu`o9*5;&-^D~t1^$QZlqH2Toiv#ZV;WLlpK{L70Qq~lb)dj&zvUV)`8A-JW4Ps zIf_!nxU9uwPiv@E2dZkmQ3lVnc)l^FiP=HMquPn}6g{+I&Cs=~FawxvOSDNl=&yIV zTB}@!_<5;$b?Q-h!T6E;UcxoxeF;5k$;2N2>CUm7vRBzO?WCMtYH?r1Hx;rkGXfFmQGIhKDhyZH9o*79PB}6`=cx-RnTZmg*XOYw1{fh~a!l!2Y z8%clK>%cxKq~#zaI{SF@@)MM`0M722!`v69aX@?XRN&}Hx4%k|Jy@lEYq)$S;)w+#Wi<2$D`w|-jZK`2IdrvDd$j20VG?CynyJ`T4m3ZE6d{oB86 zaHM4>t1-4J1hFK0%94`B;){tM@_K9_- zXC=E0n3|9S{Dx`{ZF12=lzHluDkvD%maf}ODEke7if^?HgvtiON6n#Xr}@6o875zu zs?mb~QM(%c@C!*F@jEi8sy04KWkPdOWZv2B*@DG$=(d6k+jsJGUc~l%7DXR0k4^f9 zFp`~&7jQwangd78lFUg9=g@ZCWQjK3_DXKw?PmyiZBdFtgqp06ECH5qGm1QDMh+-h zA{*q?8`UNtl%m>;t4lIKO0r1j5t<7>nd8Gq3>Ke-Kpl9Ax41aKlD$_9^VE(9SfoH< zpnm|HM}*MS;E~XH*WIL7Zz0xUt&Ib^q7GYffqko4R_^tFC>uZMU*sj$9paD{qo?G2 z553&kNQ^3t_B^Zw>ZmFoe^tu?WVFlX*dBOrwHjy1JfQN4M>xH{@yU5!Cev5(2IyiO z#G^7>JLliHj*VnEmHzH0S8fq9G0rHPXXAtmQ#Lv26c9dMmfExkfNVMJzp3gTnr%;y z8+vu$%Z=8%pzZZE@n7~iYRAuElMNpQ-eQZI|15XD3;peB%*}zACj5(`x=xOkPzvX? zBI26yUBupjyyU3ZnxWk>9B8>i>6Y;`C^(bDKNOzvTQEzmSO^Za7Lq_L2is~OWrf(J zVsE6XW!=|7kZoO#5TfTk_)yJeyN+ej5&MxX`TpO)K890TsVu`3;bFSI2O|=ZJ2z6^_-7=*qrh$Ey|wV_1zD;L<+eEP$^eDCWLQYGM0opr1kFic>Z7fl zN{wkcAu?el$02&fpQL$Xa7+%nW>Kn!9K(lkiUz!|_p62b5cIC1=Hm%`$IIXinMHS;#?zYovu{lyX0 zk%pPNkF_fT8`J%rK7iA?6$VQ|FfZV1?x_Rhl*zogK2^85yUNK!Ydy$6g<{XWr8SH> zoXTkc=b@fo;7QW_Np&FH>u5rVlj&N;Yp*Va<|xao-_H1`f-d7hXYZ(HEtF)9iaJRX2o;qwAK(+)8H3Ry^fC4+9O$-i*VO0Ac(tOP$JMgZr z(mdmyPp^2U3D%Ate^EPUfq*&@1N3tEPkB~}XkS|^H0s49#YU(Z{WSF{VdT_CQ5}>y zuJgeG9)+;DtKTZA^NuxQQgI6&Beg;t({gMfqczc5Qby)&fUIdjMISshm87#XICL(~Y3utq!V?Ny)@pi4d= z(83s)|5M!4;wR&O3oQV0=v}Cj(oNZdX&m}|G_b?X9DCYwLkK0-7N)A*;qWE+6{U1kpurpH?r|AUnlsp=zlL7*?8&IQ2y8YM=|naIQ}t| z*%%1$-~Y?~bN~QXoyd=ucmLV$hP|w7`vf8LXl#

|Bc(eBNUY+X`LnS}EO%0va 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 UaK$ida4|eTSfKZ#pQ3*I8z(7`h5!Hn literal 0 HcmV?d00001 From f4517af8819dd82b23bb36ea1fbcb49e35a33235 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 29 May 2020 12:50:11 -0700 Subject: [PATCH 18/61] Fix links --- doc/continuous_integration/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md index c688b01658..bf69354e18 100644 --- a/doc/continuous_integration/README.md +++ b/doc/continuous_integration/README.md @@ -20,7 +20,7 @@ GitHub is used for hosting the source repo, tickets and PRs, as well for managin Dockerfiles are used for generating the docker images for building and testing the project. They also self document the setup and configuration of upstream dependencies, ensuring contributors have a reproducible and repeatable development environment for collaboration. -### [DockerHub](dockerfile.md) +### [DockerHub](dockerhub.md) DockerHub is used to build and host the repo of tagged docker images, so that downstream services in the CI pipeline can quickly download and bootstrap the latest up-to-date development environment. From 2f95535bef6fb98efdbce237aeb1b442ff716541 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 29 May 2020 12:56:01 -0700 Subject: [PATCH 19/61] Fix formating --- doc/continuous_integration/dockerhub.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerhub.md b/doc/continuous_integration/dockerhub.md index 8ce7df3907..9e24d7dd2a 100644 --- a/doc/continuous_integration/dockerhub.md +++ b/doc/continuous_integration/dockerhub.md @@ -40,7 +40,7 @@ Rather than configuring the build rules on DockerHub, a build trigger URL can be * Legacy docs on using build triggers * [Example GitHub Action](https://github.com/osrf/docker_images/blob/master/.github/workflows/trigger_nightly.yaml) * Scheduled cron job used to rebuild a nightly image -[Example Build Hook](https://github.com/osrf/docker_images/blob/master/ros2/nightly/nightly/hooks/post_push) +* [Example Build Hook](https://github.com/osrf/docker_images/blob/master/ros2/nightly/nightly/hooks/post_push) * A hook to rebuild a child image post push or parent tag However, triggering builds via API rather than relying on the DockerHub build rules also means forgoing the convenience of repository linking, where a repo's image can be sure to be rebuilt as soon as a new version of the parent image tag is pushed to the registry without needing to monitor the parent image repos oneself. This helps keep the CI environment uptodate and in sync with upstream development. From f7ca00805f1e6d806b789a7ca86bf9eac1047d2c Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 10 Jul 2020 02:49:41 -0700 Subject: [PATCH 20/61] Update CIrcleCI docs --- doc/continuous_integration/circleci.md | 78 ++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index 15891514e2..a74668eb8b 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -1,34 +1,100 @@ -https://circleci.com/gh/ros-planning/navigation2 +# CircleCI Documentation -CircleCI is configured via the [config.yml](/.circleci/config.yml) yaml file within the `.circleci/` folder at the root of the GitHub repo. Further references on configuring CircleCI, such as syntax and structure can be found here: +CircleCI is a service used to build and test the project's codebase to catch regressions as well as to check pull request submissions. Using continuous integration helps maintainers sustain high code quality while providing external contributors a well defined evaluation method with which to polish contributions, without even needing to stand up entire development environment locally. More info on CircleCI can be found here: -* https://circleci.com/docs/2.0/writing-yaml -* https://circleci.com/docs/2.0/configuration-reference +* [CircleCI](https://circleci.com/) +* [Navigation2 on CircleCI](https://circleci.com/gh/ros-planning/navigation2) -The config file for this project is self contained and thus densely structured, yet written in a functional style to remain DRY and modular. This keeps it easily generalizable for other ROS packages or for adjusting overlayed workspace. Given the anchors and references in yaml, it's consequently best approached by reading the config file from bottom to top in order of abstraction hierarchy. +For this particular CI, Docker is used to build and test the project within containers derived from images pulled from DockerHub, bootstrapping the CI with a development environment including pre configured dependencies and warm workspace build caches. View the accompanying DockerFile and DockerHub documentation for more info on this accompanying CI setup. + +* [Dockerfile](dockerfile.md) +* [DockerHub](dockerhub.md) + +CircleCI is configured via the [config.yml](/.circleci/config.yml) yaml file within the `.circleci/` folder at the root of the GitHub repo. The config file for this project is self-contained and thus densely structured, yet written in a functional style to remain DRY and modular. This keeps it easily generalizable for other ROS packages or for adjusting overlayed workspaces. Given the anchors and references in yaml, it's consequently best approached by reading the config file from bottom to top in order of abstraction hierarchy. Further references on configuring CircleCI, such as syntax and structure can be found here: + +* [Writing YAML](https://circleci.com/docs/2.0/writing-yaml) +* [Configuring CircleCI](https://circleci.com/docs/2.0/configuration-reference) ## Workflows +The CI config consists of two main [workflows](https://circleci.com/docs/2.0/configuration-reference/#workflows). One workflow is for checking PR events, essentially triggered by any pushed commits towards the repo, by building and testing the project both in release and debug mode for accurate performance benchmarking or generating test coverage results. The second is cron scheduled to check the main repo branches daily, while additionally testing a matrix of supported RMW vendors not normally tested within day-to-day PRs. This helps prioritize CI to quickly check new contributions, while simultaneously keeping tabs on the health of existing code. + +The order in which jobs are executed is conditional upon the completion of those is [requares](https://circleci.com/docs/2.0/configuration-reference/#requires), forming a conventional direct acyclic graph of dependent jobs. Unrelated jobs may of course be parallelized in the CI pipeline; so by splitting the build and test jobs in two, multiple jobs such as the matrix of RMW tests may commence as soon as the dependent build job completes, avoiding unnecessarily re-building the same codebase for each RMW vendor. + ## Jobs +The list of [jobs](https://circleci.com/docs/2.0/configuration-reference/#jobs) referenced within the workflows consist of either release or debug build/test jobs. These jobs are largely similar with the exception of using different executors, and that debug test jobs include additional command steps for reporting code coverage analytics. The build jobs simply checkout the project, set up the build environment, and compile the project. The test jobs in turn pick up from where the build job left off by restoring the build, and then running the test on that build. + +In addition to enabling the parallelization of different types of test jobs, the bifurcation build and test jobs enables efficiently controlling the [parallelism](https://circleci.com/docs/2.0/configuration-reference/#parallelism) within each job itself, leveraged later for test splitting. However, given the workspace caching and principled builds, parallelism within build jobs is not as easily applied nor justified, thus parallelism here is applied only to testing. + ## Executors +Two different [executors](https://circleci.com/docs/2.0/configuration-reference/#executors-requires-version-21) are used to define the environment in which the steps of a job will be run, one for debug and one for release builds. Given only the release executor is used in testing the full matrix of RMW vendors, the docker images for the debug executor merely include the default RMW; sparing debug jobs the time in compiling unused RMW vendors in debug testing. + +The executors also differ by a few environment variables. These include appropriate mixin flags for the workspace builds and an additional nonce string, unique to that executor, used in deriving the hash key for saving and restoring caches. This prevents cache key collisions or cross talk between parallel jobs using different executors in the same workflow. + ## Commands +To reuse sequences of steps across multiple jobs, a number of [commands](https://circleci.com/docs/2.0/configuration-reference/#commands-requires-version-21) are defined. In addition to a few common commands for abstracting lower level tasks as a function, a number of higher level commands are also recursively composed of smaller formulaic steps. + +When checking our source code from the repo, additional pre and post checkout steps are performed to prepare the file system. When setting up dependencies, the build is prepared much the same way as in the project Dockerfile, by first setting up the underlay and then the overlay workspace. Additional steps are included for restoring and resetting previous ccache files and statistics, including a few diagnostic steps that can be used for debugging the CI itself, e.g. investigating as to why the hit rate for ccache may be abnormally low. Once the overlay setup is finished, more ccache diagnostics and files are saved for inspection or later restoration. A restore build command is also defined for test jobs, operating under the condition that a workspace with the same checksum can be restored from a previous build job in the workflow. Additional commands are also defined for steps in testing overlay workspace and reporting coverage results. + ## References +Per the YAML syntax, a reference must proceed any anchor that it links back to. As a formality, all references are merely prefaced and organized under the key titled `references`. + ### Common Environment +For environment variables common among the executors, workspace paths and specific config options are listed here. While the workspace paths are parameterized to avoid hardcoding paths in common command functions, they may also be hardcoded as fields among a few high level steps given a limitation of the config syntax. The additional config options help optimize our project build given CI resource limits: + +* Capping ccache size/location given CI storage limits, speeding up cache restoration +* Limiting parallel make and linker jobs as to avoid exhausting all un-allocated RAM +* Further adjustments for changing robust test behavior and sequential test stdout. + ### Common Commands +Common commands for low level, repeated, and formulaic tasks are defined for saving and restoring CI caches, as well as for installing, building, and testing workspaces. + #### Caching +Multiple caches may be saved and restored over the completion of a single workflow. To appropriately save and restore cache in a deterministic manner, these steps are abstracted as commands. For this project, caching is done with respect to a given workspace. As such, a specified string and checksum from the workspace are combined with workflow specifics to ensure the [restored cache](https://circleci.com/docs/2.0/configuration-reference/#restore_cache) is uniquely identifiable and won't collide with other concurrent PRs. + +For saving a cache, the command is similar, aside from specifying the path to directory or file to be stored in the [saved cache](https://circleci.com/docs/2.0/configuration-reference/#save_cache). Given CI cache are conventionally read only, meaning a cache key can not be reused or updated to point to a newer cache, the current unix epoch is appended to the cache key to ensure key uniqueness. Because CircleCI key lookup behavior for cache restoration is performed via the most recent longest matching prefix, the latest matching cache is always restored. + +These workspace checksums are uploaded as [stored artifacts](https://circleci.com/docs/2.0/configuration-reference/#store_artifacts) throughout other commands to help introspect to debug caching behavior when needed. + #### Building +For installing and building workspaces, the process resembles that within the project Dockerfile. Additional bookkeeping is performed to update the workspace checksum file by piping stdout that deterministically describes the state of the build environment. This is done by seeding from the checksum of the underlay workspace and then appending info about source code checked out into the overlay workspace, as well as the list of required dependencies installed. When setting up the workspace, this checksum will first be used to check if the workspace can be restored from a prior workflow build. If the source code or required dependencies change, resulting in a missed cache hit, the unfinished workspace is then built. If the workspace build is successful then it will be cached. Regardless however, the build logs are always uploaded as stored artifacts for review or debugging. The odd shuffling of symbolic directories is done as a workaround given a limitation of the S3 SDK: + +* [Failing to upload artifacts from symbolic link directories](https://discuss.circleci.com/t/failing-to-upload-artifacts-from-symbolic-link-directories/28000) + #### Testing +For testing workspaces, the list of packages within the workspace are [tested in parallel](https://circleci.com/docs/2.0/parallelism-faster-jobs/) across the number of replicated containers for the given test job as denoted by the `parallelism` option. Here packages are split by anticipated test timing; the heuristic derived from the reported duration and classname of prior recent test results. The logs and results from the tests are then always [reported](https://circleci.com/docs/2.0/configuration-reference/#store_test_results) and uploaded. + ### Checkout +Checking out code consists of three stages, including pre and post checkout steps. To simplify the formulaic common commands above, the pre-checkout step replicates a synthetic workspace from the installed ROS distro directory by symbolically linking an install folder, and bootstrapping the checksum from the timestamp of an expected file in ROS docker images. This is a measure to ensure if the nightly docker image is changed/rebuilt, then all CI caches should also be busted. Ideally, the docker image sha/hash should be used for this instead, but as of writing there does not seem to be a reliable method for acquiring this image digest from within the same derived container: + +* [Introspect image info from inside docker executor](https://discuss.circleci.com/t/introspect-image-info-from-inside-docker-executor/31620) + +The overlay workspace is then cleaned prior to checking out the project. The post checkout step simply checks to see if the underlay has changed to determine whether it should also be cleaned, recloned, and thus rebuilt as well. + ### Workspaces -### Code Coverage \ No newline at end of file +The rest of the high level commands serve as references to repeatedly define workspace specific commands, such as install, building and testing either the underlay or overlay workspace. Some point of note however include: + +* The CI cache for ccache is intentionally linked with the underlay rather than the overlay workspace + * so that consecutive commits to the same PR are more likely to retain a warm and recent ccache +* CCache Stats is intentionally used to zero stats before building a workspace + * so the next consecutive run of the CCache Stats reflects only upon that given workspace +* Restore workspace command intentionally sets the `build` filed to `false` + * to avoid unnecessary duplication of the same workspace cache and build logs + +### Code Coverage + +A custom script within the repo is reused to collect and post process the generated code coverage results from debug test jobs. This always runs regardless if the tests fail so that failed code coverage reports may still be reviewed. The final report is uploaded to CodeCov via the third party orb. Note that the use of a third party orb requires the enabling of a permission in CircleCI settings for the repo. So if you would like to upload code coverage results for your own fork, you'll have to explicitly allow it. + +* [CodeCov Orb](https://circleci.com/orbs/registry/orb/codecov/codecov) +* [Orbs Introduction](https://circleci.com/docs/2.0/orb-intro) From 6112532b95e868b081e94e4cce48a072c4764889 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 10 Jul 2020 13:28:14 -0700 Subject: [PATCH 21/61] Note why caches are used instead of workspaces --- doc/continuous_integration/circleci.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index a74668eb8b..4077180b65 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -57,7 +57,9 @@ Common commands for low level, repeated, and formulaic tasks are defined for sav #### Caching -Multiple caches may be saved and restored over the completion of a single workflow. To appropriately save and restore cache in a deterministic manner, these steps are abstracted as commands. For this project, caching is done with respect to a given workspace. As such, a specified string and checksum from the workspace are combined with workflow specifics to ensure the [restored cache](https://circleci.com/docs/2.0/configuration-reference/#restore_cache) is uniquely identifiable and won't collide with other concurrent PRs. +Multiple forms of [caching](https://circleci.com/docs/2.0/caching/) is done over the completion of a single workflow. To appropriately save and restore caches in a deterministic manner, these steps are abstracted as commands. Although CircleCI does provide an explicit step for persisting temporary files across jobs in the same workflow, i.e. a [workspace](https://circleci.com/docs/2.0/configuration-reference/#persist_to_workspace), caches are used instead for a few reasons. First there is only one workspace per workflow, thus avoiding cross talk between executors or release/debug job types is not as easily achievable. Secondly, unlike workspaces, caches can persist across workflows, permitting repeated workflows for the same PR to pull from the cache of prior runs; e.g. in order to keep the ccache as fresh as possible for that specific PR. + +For this project, caching is done with respect to a given workspace. As such, a specified string and checksum from the workspace are combined with workflow specifics to ensure the [restored cache](https://circleci.com/docs/2.0/configuration-reference/#restore_cache) is uniquely identifiable and won't collide with other concurrent PRs. For saving a cache, the command is similar, aside from specifying the path to directory or file to be stored in the [saved cache](https://circleci.com/docs/2.0/configuration-reference/#save_cache). Given CI cache are conventionally read only, meaning a cache key can not be reused or updated to point to a newer cache, the current unix epoch is appended to the cache key to ensure key uniqueness. Because CircleCI key lookup behavior for cache restoration is performed via the most recent longest matching prefix, the latest matching cache is always restored. From 0371a47ea566129265ac5bff8563631aa7f5e176 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Wed, 23 Sep 2020 21:33:30 -0700 Subject: [PATCH 22/61] Stage multistage diagram --- .../figs/multistage.drawio | 258 ++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 doc/continuous_integration/figs/multistage.drawio diff --git a/doc/continuous_integration/figs/multistage.drawio b/doc/continuous_integration/figs/multistage.drawio new file mode 100644 index 0000000000..e6ac3bf8b8 --- /dev/null +++ b/doc/continuous_integration/figs/multistage.drawio @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 6124ec0b75a8b8d07315ac7088010c7c0a46af81 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Wed, 23 Sep 2020 21:33:48 -0700 Subject: [PATCH 23/61] stage multistage svg --- doc/continuous_integration/figs/multistage.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/continuous_integration/figs/multistage.svg diff --git a/doc/continuous_integration/figs/multistage.svg b/doc/continuous_integration/figs/multistage.svg new file mode 100644 index 0000000000..614938e399 --- /dev/null +++ b/doc/continuous_integration/figs/multistage.svg @@ -0,0 +1 @@ +cacherros2_dependerunderlay_dependeroverlay_dependerros2_builderunderlay_builderoverlay_builderros2_testerunderlay_testeroverlay_testeroverlay_shipperworkspaces_testerLegend
FROM

COPY
FROM...
Viewer does not support full SVG 1.1
\ No newline at end of file From ae3444addf2cc4090ea0cdba1b6a55cc5e742a99 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 24 Sep 2020 13:02:17 -0700 Subject: [PATCH 24/61] Annotate multistage figure --- .../figs/multistage.drawio | 177 +++++++++++------- .../figs/multistage.svg | 2 +- 2 files changed, 114 insertions(+), 65 deletions(-) diff --git a/doc/continuous_integration/figs/multistage.drawio b/doc/continuous_integration/figs/multistage.drawio index e6ac3bf8b8..7b34cf99d6 100644 --- a/doc/continuous_integration/figs/multistage.drawio +++ b/doc/continuous_integration/figs/multistage.drawio @@ -1,24 +1,24 @@ - + - + - + - + - - + + - + @@ -26,18 +26,21 @@ - + - + - + + + + - + @@ -45,12 +48,12 @@ - + - + @@ -58,68 +61,74 @@ - + - + - + - + - + - - + + + + + + + + - + - + - + - + - + - + - + - + - + - + @@ -127,7 +136,7 @@ - + @@ -135,50 +144,47 @@ - - + + - + - + - - + - + - - + - + - - + - + @@ -187,68 +193,111 @@ - + + - + + - + + - + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - - - - + - + + + + + + + + + - - + + - - + + diff --git a/doc/continuous_integration/figs/multistage.svg b/doc/continuous_integration/figs/multistage.svg index 614938e399..6c0d8aa7fa 100644 --- a/doc/continuous_integration/figs/multistage.svg +++ b/doc/continuous_integration/figs/multistage.svg @@ -1 +1 @@ -cacherros2_dependerunderlay_dependeroverlay_dependerros2_builderunderlay_builderoverlay_builderros2_testerunderlay_testeroverlay_testeroverlay_shipperworkspaces_testerLegend
FROM

COPY
FROM...
Viewer does not support full SVG 1.1
\ No newline at end of file +cacherros2_dependerunderlay_dependeroverlay_dependerros2_builderunderlay_builderoverlay_builderros2_testerunderlay_testeroverlay_testerworkspace_shipperworkspace_testerLegend
FROM

COPY
FROM...
package manifests
package manifests
source code
source code
test logs
test logs
workspace
workspace
workspace
workspace
osrf/ros2:devel
packages.ros.org

colcon
rosdep
vcstool

ros_entrypoint.sh
packages.ros.org...
Viewer does not support full SVG 1.1
\ No newline at end of file From f20f228fff35513be890445a17c824b4ade1e253 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 24 Sep 2020 13:04:27 -0700 Subject: [PATCH 25/61] Tweek final stage names --- .dockerhub/source.Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.dockerhub/source.Dockerfile b/.dockerhub/source.Dockerfile index 149bc7c949..c17e65a8de 100644 --- a/.dockerhub/source.Dockerfile +++ b/.dockerhub/source.Dockerfile @@ -223,16 +223,16 @@ RUN if [ -n "$RUN_TESTS" ]; then \ || ([ -z "$FAIL_ON_TEST_FAILURE" ] || exit 1) \ fi -# multi-stage for testing workspaces -FROM overlay_builder AS workspaces_tester +# multi-stage for testing workspace +FROM overlay_builder AS workspace_tester # copy workspace test results COPY --from=ros2_tester $ROS2_WS/log $ROS2_WS/log COPY --from=underlay_tester $UNDERLAY_WS/log $UNDERLAY_WS/log COPY --from=overlay_tester $OVERLAY_WS/log $OVERLAY_WS/log -# multi-stage for shipping overlay -FROM overlay_builder AS overlay_shipper +# multi-stage for shipping workspace +FROM overlay_builder AS workspace_shipper # restore apt for docker RUN mv /etc/apt/docker-clean /etc/apt/apt.conf.d/ && \ From 66f74cd5810243b278b2caa05ebcbecd2072e882 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 9 Oct 2020 16:57:23 -0700 Subject: [PATCH 26/61] Update Future Work with alterative pros and cons --- doc/continuous_integration/README.md | 41 ++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md index bf69354e18..1451399719 100644 --- a/doc/continuous_integration/README.md +++ b/doc/continuous_integration/README.md @@ -2,11 +2,11 @@ Documentation on the existing CI for the project is resides here. ## Overview -The existing CI is composed of multiple integration services that together help provide maintainers a fast and scalable testing environment. To help detect upstream breakages quickly as well, the existing CI allows for changes to be evaluated using the latest development dependencies. In light of the large dependency footprint a high-level ROS2 navigation stack necessitates, the use of each integration service is optimized to maximize caching of environmental setup and increase workflow throughput. As these optimizations add complexity to the CI configuration, this documentation provides further explanations and resigning behind each configuration. +The existing CI is composed of multiple integration services that together help provide maintainers a fast and scalable testing environment. To help detect upstream breakages quickly as well, the existing CI allows for changes to be evaluated using the latest development dependencies. In light of the large dependency footprint a high-level ROS2 navigation stack necessitates, the use of each integration service is optimized to maximize caching of environmental setup and increase workflow throughput. As these optimizations add complexity to the CI configuration, this documentation provides further explanations and reasoning behind each configuration. ![pipeline](figs/pipeline.png) -The figure above is an high level diagram on how the integration services described below are composed. +The figure above is a high level diagram on how the integration services described below are composed. ## Integrations @@ -34,9 +34,34 @@ CodeCov is used to help monitor code quality by rendering test artifacts from th ## Future Work -The CI has some room for improvement and streamlining and may evolve over time. The following notes alterative integration options, as the current pros and cons for each. - -### GitHub Actions -* test result reports -* workspace caching -* uploading artifacts \ No newline at end of file +The CI has room for improvement and may still evolve over time. The following notes alterative integration options, including current pros and cons for each. + +### [GitHub Actions](https://github.com/features/actions) + +Github actions is an emerging container based CI service that tightly integrates with the rest of GitHub's service offerings. With a growing ecosystem of official and federated 3rd party actions available, one can compose custom and extensive CI/CD workflows. + +#### Pros: + +* Self hosted runners + * Optionally run workflows form on site, not just cloud VMs + * https://docs.github.com/en/free-pro-team@latest/actions/hosting-your-own-runners + * Leverage local hardware, e.g: GPUs, persistent storage, robot sensors, etc. + +#### Cons: + +* No test introspection + * One must still roll there own test result reporting + * https://github.community/t/publishing-test-results/16215/12 + * Xunit test results are not rendered, aggregated, nor summarized +* Restricted caching + * Caching with runners is less ergonomic than other CI providers + * https://github.com/microsoft/azure-pipelines-agent/issues/2043 + * Implementation inherits same limitation from azure-pipelines-agent +* No job level parallelism + * No equivalent parallelism for splitting tests via timing data + * https://circleci.com/docs/2.0/parallelism-faster-jobs + * Parameterizable parallelism without adding jobs to workflow +* No RAM Disk access + * Useful to improve file IO performance + * https://circleci.com/docs/2.0/executor-types/#ram-disks + * Applicable for frequent reads/writes, e.g. ccache From 74d88164faf6ef468224927015065bd5e4292c0c Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 9 Oct 2020 23:57:45 -0700 Subject: [PATCH 27/61] Update pipeline figure --- doc/continuous_integration/README.md | 2 +- .../figs/pipeline.drawio | 50 ++++++++++-------- doc/continuous_integration/figs/pipeline.png | Bin 120366 -> 0 bytes doc/continuous_integration/figs/pipeline.svg | 1 + 4 files changed, 31 insertions(+), 22 deletions(-) delete mode 100644 doc/continuous_integration/figs/pipeline.png create mode 100644 doc/continuous_integration/figs/pipeline.svg diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md index 1451399719..8d03d06665 100644 --- a/doc/continuous_integration/README.md +++ b/doc/continuous_integration/README.md @@ -4,7 +4,7 @@ Documentation on the existing CI for the project is resides here. ## Overview The existing CI is composed of multiple integration services that together help provide maintainers a fast and scalable testing environment. To help detect upstream breakages quickly as well, the existing CI allows for changes to be evaluated using the latest development dependencies. In light of the large dependency footprint a high-level ROS2 navigation stack necessitates, the use of each integration service is optimized to maximize caching of environmental setup and increase workflow throughput. As these optimizations add complexity to the CI configuration, this documentation provides further explanations and reasoning behind each configuration. -![pipeline](figs/pipeline.png) +![pipeline](figs/pipeline.svg) The figure above is a high level diagram on how the integration services described below are composed. diff --git a/doc/continuous_integration/figs/pipeline.drawio b/doc/continuous_integration/figs/pipeline.drawio index 173764f25a..c17b258c28 100644 --- a/doc/continuous_integration/figs/pipeline.drawio +++ b/doc/continuous_integration/figs/pipeline.drawio @@ -1,6 +1,6 @@ - + - + @@ -30,17 +30,28 @@ - - + + + + - - + + + + - - + + + + - - + + + + + + + @@ -64,7 +75,7 @@ - + @@ -82,7 +93,7 @@ - + @@ -235,8 +246,10 @@ - - + + + + @@ -247,13 +260,8 @@ - - - - - - - + + diff --git a/doc/continuous_integration/figs/pipeline.png b/doc/continuous_integration/figs/pipeline.png deleted file mode 100644 index e64750ad1bc94d965094850997edf2cc8ba929cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120366 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 z 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ℑF(drV@JE1f`U;3VzlWu32fDsY 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≦E#xlv)`7*N2@>w@JiPcd|?a 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

Dockerfile
Dockerfile
osrf/docker_images
Nightly Build
osrf/docker_images...
.dockerhub/
.dockerhub/
rosplanning/
navigation2:
<tag>
rosplanning/...
osrf/
ros2:
nightly
osrf/...
ros-planning/
navigation2
Nightly Build
ros-planning/...
GitHubCache Busting Filesunderlay.repospackage.xmlCOLCON_IGNOREBranchesmain*-devel
Commit Pushed
to Pull Request
Commit Pushed...
Commit Pushed
to Main Branch
Commit Pushed...
.dockerignore
.dockerignore
CircleCI
Workflow #N
Workflow #N
Build Job
Build Job
Test Job
Test Job
Workflow #N+1
Workflow #N+1
Build Job
Build Job
Test Job
Test Job
Artifact
Artifact
Artifact
Artifact
Cache
Cache
Cache
Cache
Cache
Cache
Cache
Cache
.circleci/
.circleci/
ros-planning/
navigation2
Build Trigger
ros-planning/...
CodeCov
Post Proccess
Code Coverage
Post Proccess...
codecov      
.yml
codecov...
Code Coverage Results
Code Coverage...
Viewer does not support full SVG 1.1 \ No newline at end of file From 45ecd7b66b9b13028e1555dbdc7111ecd01100aa Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sat, 10 Oct 2020 01:04:31 -0700 Subject: [PATCH 28/61] Add section on Advanced Optimizations --- doc/continuous_integration/dockerfile.md | 29 +++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 937d3b9275..9c2f4a9003 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -13,7 +13,7 @@ The Dockerfiles for this project are built upon parent images from upstream repo * GitHub repo for OSRF Dockerfiles * [Official Images on Docker Hub](https://docs.docker.com/docker-hub/official_images) -While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a released ROS2 distro using available pre-built binary dependencies. We'll walk through the main Dockerfile here, although all of them follow the same basic pattern. +While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a released ROS2 distro using available pre-built binary dependencies. These are particularly helpful when needing to build/test the project using a custom branch of ROS2 or rolling distro release. We'll walk through the main Dockerfile here, although all of them follow the same basic pattern. ## Global Arguments @@ -91,3 +91,30 @@ The [`distro.Dockerfile`](/.dockerhub/distro.Dockerfile) provides once such exam * [cache apt packages](https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#example-cache-apt-packages) * avoid unnecessarily re-downloading the same packages over the network, even if the docker image layer cache for that `RUN` directive in the Dockerfile is busted + +### Advanced Optimizations + +With Buildkit's concurrent dependency resolution, multistage builds become parallelizable, assisting in shorter over all image build times. Granular expansion of the Directed Acyclic Graph (DAG) of workspace build steps into septate stages can be used to exploit this parallelism further, as well to maximize caching. This is exemplified in [`source.Dockerfile`](/.dockerhub/source.Dockerfile). The figure bellow depicts how the multiple stages are composed to exploit the DAG of workspaces. + +![pipeline](figs/multistage.svg) + +This composition of stages follows a few basic principles: + +* Enforce Determinism + * Filter workspace source files down to what's essential + * E.g. `cacher` stage prunes underlay packages irrelevant for overlays +* Maximize Caching + * Leverage dependency build order when forming DAG + * E.g. prevent `builder` stages from invalidating `depender` stages +* Optimize Layers + * Lazily COPY and build FROM other stages as by-need + * E.g. Avoid dependencies between `tester` stages to build in parallel + +The table below is compares the finish build times between sequential (one stage one at a time) and multistage (many stages at once) builds, with and without caching (a warm and valid cache available). + +| | w/o Caching | w/ Caching | +|---|---|---| +| Sequential Build | 1h:22m:38s | 0h:49m:30s | +| Multistage Build | 0h:53m:49s | 0h:27m:44s | + +For reference, Sequential Build without Caching is equivalent to building a dockerfile without the use of multistages nor Buildkit. From 6ff1edcf07357c4cd42629897841406b281e23b0 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sat, 10 Oct 2020 01:31:24 -0700 Subject: [PATCH 29/61] Update pipline figure to include encap workflow pattern inside build cloud proccess, and relable outputs --- .../figs/pipeline.drawio | 108 ++++++++++-------- doc/continuous_integration/figs/pipeline.svg | 2 +- 2 files changed, 64 insertions(+), 46 deletions(-) diff --git a/doc/continuous_integration/figs/pipeline.drawio b/doc/continuous_integration/figs/pipeline.drawio index c17b258c28..4dcacdf857 100644 --- a/doc/continuous_integration/figs/pipeline.drawio +++ b/doc/continuous_integration/figs/pipeline.drawio @@ -1,9 +1,12 @@ - + - + + + + @@ -45,10 +48,10 @@ - + - + @@ -118,10 +121,13 @@ - + - + + + + @@ -130,7 +136,7 @@ - + @@ -144,41 +150,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + @@ -186,7 +165,7 @@ - + @@ -194,25 +173,25 @@ - + - + - + - + - + @@ -228,6 +207,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -260,9 +275,12 @@ - + + + + diff --git a/doc/continuous_integration/figs/pipeline.svg b/doc/continuous_integration/figs/pipeline.svg index cf4be6abee..cf26a99a04 100644 --- a/doc/continuous_integration/figs/pipeline.svg +++ b/doc/continuous_integration/figs/pipeline.svg @@ -1 +1 @@ -DockerHub
Dockerfile
Dockerfile
osrf/docker_images
Nightly Build
osrf/docker_images...
.dockerhub/
.dockerhub/
rosplanning/
navigation2:
<tag>
rosplanning/...
osrf/
ros2:
nightly
osrf/...
ros-planning/
navigation2
Nightly Build
ros-planning/...
GitHubCache Busting Filesunderlay.repospackage.xmlCOLCON_IGNOREBranchesmain*-devel
Commit Pushed
to Pull Request
Commit Pushed...
Commit Pushed
to Main Branch
Commit Pushed...
.dockerignore
.dockerignore
CircleCI
Workflow #N
Workflow #N
Build Job
Build Job
Test Job
Test Job
Workflow #N+1
Workflow #N+1
Build Job
Build Job
Test Job
Test Job
Artifact
Artifact
Artifact
Artifact
Cache
Cache
Cache
Cache
Cache
Cache
Cache
Cache
.circleci/
.circleci/
ros-planning/
navigation2
Build Trigger
ros-planning/...
CodeCov
Post Proccess
Code Coverage
Post Proccess...
codecov      
.yml
codecov...
Code Coverage Results
Code Coverage...
Viewer does not support full SVG 1.1
\ No newline at end of file +DockerHub
Dockerfile
Dockerfile
osrf/docker_images
Nightly Build
osrf/docker_images...
.dockerhub/
.dockerhub/
rosplanning/
navigation2:
<tag>
rosplanning/...
osrf/
ros2:
nightly
osrf/...
ros-planning/
navigation2
Nightly Build
ros-planning/...
GitHubCache Busting Filesunderlay.repospackage.xmlCOLCON_IGNOREBranchesmain*-devel
Commit Pushed
to Pull Request
Commit Pushed...
Commit Pushed
to Main Branch
Commit Pushed...
.dockerignore
.dockerignore
CircleCI
Workflow #N
Workflow #N
Build Job
Build Job
Release
Debug
Release...
Test Job
Test Job
Test
Results
Test...
Test
Results
Test...
Cache
Cache
Cache
Cache
Cache
Cache
Cache
Cache
.circleci/
.circleci/
ros-planning/
navigation2
Build Trigger
ros-planning/...
Debug
Coverage
Debug...
Workflow #N+1
Workflow #N+1
Build Job
Build Job
Release
Debug
Release...
Test Job
Test Job
Release
Debug
rmw
Release...
CodeCov
Post Proccess
Code Coverage
Post Proccess...
codecov      
.yml
codecov...
Code Coverage Results
Code Coverage...
Release
Debug
rmw
Release...
Viewer does not support full SVG 1.1
\ No newline at end of file From a3372b4f57d97ea34d3dac5041465e48afe980b7 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sat, 10 Oct 2020 01:48:56 -0700 Subject: [PATCH 30/61] Add more comment on tags and image purpose --- doc/continuous_integration/dockerfile.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 9c2f4a9003..6719cf5d3a 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -1,11 +1,11 @@ # Dockerfile Documentation -Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide repeatable and reproducible means to build and test the project. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: +Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide repeatable and reproducible means to build and test the project, as well as pre configured environment for container based services further downstream the CI pipeline. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: * [Dockerfile reference](https://docs.docker.com/engine/reference/builder) * [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) -The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub, thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. More info on upstream repos on DockerHub can be found here: +The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub, thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. When choosing the parent image, a tradeoff may persist between choosing a larger tag with more than what you need pre-installed, saving time building the image locally, vs. choosing a smaller tag without anything you don't need, saving time pulling or pushing the image remotely. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. More info on upstream repos on DockerHub can be found here: * [ROS Docker Images](https://hub.docker.com/_/ros) * DockerHub repo for official images From 452382c3925e2b017c5d510ceba1a2e07462af8c Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sat, 10 Oct 2020 01:59:00 -0700 Subject: [PATCH 31/61] Clarify dockerifle in .dockerhub folder --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 6719cf5d3a..074413de1e 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -13,7 +13,7 @@ The Dockerfiles for this project are built upon parent images from upstream repo * GitHub repo for OSRF Dockerfiles * [Official Images on Docker Hub](https://docs.docker.com/docker-hub/official_images) -While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a released ROS2 distro using available pre-built binary dependencies. These are particularly helpful when needing to build/test the project using a custom branch of ROS2 or rolling distro release. We'll walk through the main Dockerfile here, although all of them follow the same basic pattern. +While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for development and continuous integration, the [`.dockerhub/`](/.dockerhub) directory contains additional Dockerfiles that can be used for building the project entirely from scratch, include the minimal spanning set of recursive ROS2 dependencies from source, or building the project from a released ROS2 distro using available pre-built binary dependencies. These are particularly helpful for developers needing to build/test the project using a custom ROS2 branch, or for a users building with an alternate ROS2 base image, but are not used for the CI pipeline. We'll walk through the main Dockerfile here, although all of them follow the same basic pattern. ## Global Arguments From b26ceddcc046a090201b9efed44cfcd20be5c4c5 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 11 Oct 2020 20:43:02 -0700 Subject: [PATCH 32/61] Update DockerHub docs now using api rather than autobuild for triggering build rules --- doc/continuous_integration/dockerhub.md | 35 +++++++++++++++---------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/doc/continuous_integration/dockerhub.md b/doc/continuous_integration/dockerhub.md index 9e24d7dd2a..d94c051b6b 100644 --- a/doc/continuous_integration/dockerhub.md +++ b/doc/continuous_integration/dockerhub.md @@ -5,7 +5,7 @@ DockerHub is a service used to build docker images from the project's Dockerfile * [DockerHub](https://hub.docker.com/) * [Docker Hub Quickstart](https://docs.docker.com/docker-hub) -The tagged images on the project's repo in the registry are used by the CI pipeline to spawn containers to build and test the project. The advantage of hosting such images in a registry to readly pull from rather than merely re-building the Dockerfiles in CI tests enables frontloading much of the principled environmental setup prior to the start of CI jobs. This saves build time, spares resources/credits for other jobs, and helps to accelerate the development cycle. The project's DockerHub repo can be found here: +The tagged images in the project's registry repo are eventually used by the CI pipeline to spawn containers to build and test the project. The advantage of hosting branch specific image tags in a registry to pull from, rather than merely re-building the Dockerfiles at CI runtime, enables frontloading much of the principled environmental setup prior to the start of CI jobs. This saves CI time, spares resources/credits for other jobs, and helps to accelerate the development cycle. The project's DockerHub repo can be found here: * [Navigation2 on DockerHub](https://hub.docker.com/r/rosplanning/navigation2) @@ -14,27 +14,21 @@ While DockerHub does not require the use of configuration files in the source re * [How Automated Builds work](https://docs.docker.com/docker-hub/builds) * [Advanced options for Autobuild and Autotest](https://docs.docker.com/docker-hub/builds/advanced) -Automated Builds must be enabled via the build configurations menu within the repo's administrative console on DockerHub. For reference, a figure of the project's build configurations is shown here: +Automated Builds are controlled via the build configurations menu within the repo's administrative console on DockerHub. For reference, a figure of the project's build configurations is shown here: ![DockerHub Build Configurations](figs/dockerhub_build_configurations.png) -Here the repo's source repository is linked to the project's GitHub repo, while Autotest is disabled given a dedicated CI service is separately used to run test jobs. Repository linking is enabled so that whenever the base image is updated on DockerHub, it will also trigger a build for the project's DockerHub repository. Note that this only works for non-official images. Two build rules are added for the master branch, providing both a release and debug tag for CI to pull from. The paths to the relative Dockerfiles are designated, while the build context is intentionally left empty. This ensures that the build phase hooks within the same paths are used appropriately. Build caching is also enabled to shorten image turnaround time if multiple rebuilds a day are triggered. +Here the repo's source repository is linked to the project's GitHub repo, while Autotest is disabled given a dedicated CI service is separately used to run test jobs. Repository linking can be used so that whenever a parent image repo is updated on DockerHub, it will also trigger a build for the project's DockerHub repository. Note that this only works for non-official library images, and only for build rules where Autobuild is is enabled. Two build rules are added for the main branch, providing both a release and debug tag for CI to pull from. The relative Dockerfiles paths are designated, while the build context is intentionally left empty, ensuring the build phase hooks within the same paths are used appropriately. Build caching is also enabled to shorten image turnaround time if multiple rebuilds a day are triggered. -The build hooks, e.g. [build](/.dockerhub/debug/hooks/build) , serve a few purposes. The first being to customize docker commands to override build arguments denoted in the Dockerfile via the `ARG` directives, such as adjusting the colcon mixins for each workspace to enable code coverage, or disabling fail on build failure so the breakages in master don't block the building of CI images for master. +The build hooks, e.g. [build](/.dockerhub/debug/hooks/build) , are for customizing docker build arguments in the Dockerfile via the `ARG` directives; such as changing the base `FROM_IMAGE` between release or debug tags, adjusting the colcon mixins for each workspace to enable code coverage, or disabling fail on build failure, preventing source build breakages from blocking CI image tag updates. This also allows the slower debug CI to build and test only using the default RMW, while allowing the faster release CI jobs to build and test from an image with more RMWs installed. -The build hooks secondly allow for the redirection of target Dockerfile and build context, given the use of `ARG` to parameterize the parent image to build `FROM` inhibits the normal use of repository links. This is a limitation of the Dockerfile parsing used by DockerHub to infer what repo/tag the build rule should trigger from. +## Autobuild -As a workaround, the build rule points to a dummy Docker file that includes the desired parent image tag to build `FROM`, while the build hook then uses the main Dockerfile with the same `FROM_IMAGE`. This allows the slower debug CI to build and test only using the default RMW, while allowing the faster release CI jobs to build and test from an image with more RMWs installed. - -## Alternatives - -While the free registry for hosting is great, allowing project gigabytes of free storage/bandwidth to cache pre-configured images for various branches or CI scenario, that would otherwise take free tier CI instances far longer to rebuild from scratch rather than pull from registry, the automated build integration isn't as easily configurable for advance use cases. Also, given that automated build rules are configured out-of-band of the source repo for example, forking the project would not self contain all the configuration needed to simply mirror the CI setup. - -There are a few alternatives such as triggering builds via APIs or building the images remotely from different CI providers and pushing them back to docker registry. Although each has its pros and cons. +While the free registry for hosting is great, allowing projects gigabytes of free storage/bandwidth to cache pre-configured images for various branches or CI scenarios, that would otherwise take CI instances far longer to rebuild from scratch rather than pull from the registry, the automated build integration for DockerHub is basic. Rather than trigging build rules via pushed commits to matching GitHub branches, Autobuild is left disabled and the Build Trigger API is used instead. This Build Trigger API is evoked from scheduled cron jobs to rate limit DockerHub rebuilds; e.g. preventing hourly merge commits from needlessly churning CI image tags. ### Build Trigger API -Rather than configuring the build rules on DockerHub, a build trigger URL can be generated for the linked repo and used to programmatically specify build parameters such as: tag names, context path, source branch or version, etc. Although it seems this API is now less documented. More info on Build Trigger can be found here: +Rather than configuring the build rules on DockerHub, a build trigger URL can be generated for the linked repo and used to programmatically specify build parameters such as: tag names, context path, source branch or version, etc. More info on Build Trigger can be found here: * [Remote Build Triggers](https://github.com/docker/docker.github.io/blob/v17.06-release/docker-hub/builds.md#remote-build-triggers) * Legacy docs on using build triggers @@ -43,7 +37,9 @@ Rather than configuring the build rules on DockerHub, a build trigger URL can be * [Example Build Hook](https://github.com/osrf/docker_images/blob/master/ros2/nightly/nightly/hooks/post_push) * A hook to rebuild a child image post push or parent tag -However, triggering builds via API rather than relying on the DockerHub build rules also means forgoing the convenience of repository linking, where a repo's image can be sure to be rebuilt as soon as a new version of the parent image tag is pushed to the registry without needing to monitor the parent image repos oneself. This helps keep the CI environment uptodate and in sync with upstream development. +However, triggering builds via the API rather than relying on the DockerHub build rules also means forgoing the convenience of repository linking, where a repo's image can be sure to be rebuilt as soon as a new version of the parent image tag is pushed to the registry without needing to monitor the parent image repos oneself. This helps keep the CI environment uptodate and in sync with upstream development. However, for finer control flow when triggering DockerHub build rules, this API can be called from any scheduled cron job to periodically update images when a project is least active. + +## Alternatives ### Outsource Image Builds @@ -55,3 +51,14 @@ Instead of using DockerHub as the remote builder, any CI that supports Docker ca * [Docker + Azure Tasks](https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/docker?view=azure-devops#build-and-push) Additionally, local build caching is often a premium feature for most other services, thus to benefit from docker build caching, one must manage a build agent for docker builds, or pony up to upgrade from a conventional open source free tier CI plan. + +### Alternate Docker Registry + +In addition to DockerHub, one can also self host a docker registry, or use alternate Docker Registry providers. This may be helpful if you anticipate exceeding DockerHub's free tier limits or would like co-locate the docker registry and CI runners within the same service provider or local network. + +* [DockerHub Download rate limit](https://docs.docker.com/docker-hub/download-rate-limit/) +* [Self Hosted Registry](https://docs.docker.com/registry/) +* [GitHub Cloud Registry](https://github.com/features/packages) +* [AWS Elastic Container Registry](https://aws.amazon.com/ecr/) +* [Google Cloud Registry](https://cloud.google.com/container-registry) +* [GitLab Container Registry](https://about.gitlab.com/blog/2016/05/23/gitlab-container-registry/) From 5ee07086caa490ae4101ec0925b5318126278cd0 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 11 Oct 2020 20:43:47 -0700 Subject: [PATCH 33/61] Re-Wording --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 074413de1e..d3aef7cb1a 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -1,6 +1,6 @@ # Dockerfile Documentation -Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide repeatable and reproducible means to build and test the project, as well as pre configured environment for container based services further downstream the CI pipeline. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: +Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provides repeatable and reproducible means to build and test the project, as well as build images for running container based CI services. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: * [Dockerfile reference](https://docs.docker.com/engine/reference/builder) * [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) From bdba1c202eddf15a5504d0497b05b29e10155607 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 11 Oct 2020 20:44:35 -0700 Subject: [PATCH 34/61] Update DockerHub screencap --- .../figs/dockerhub_build_configurations.png | Bin 184321 -> 166934 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/continuous_integration/figs/dockerhub_build_configurations.png b/doc/continuous_integration/figs/dockerhub_build_configurations.png index e48736fd61f7f6ec095c21c3609a28e592f65584..34023d63dadcce9b07221a2a2e4fdd0e751fa403 100644 GIT binary patch literal 166934 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 z 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

btC~#B! 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 literal 184321 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

|Bc(eBNUY+X`LnS}EO%0va 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 UaK$ida4|eTSfKZ#pQ3*I8z(7`h5!Hn From 937c4fe92fbc9cbdc99340330e1df45141a3eb5f Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 11 Oct 2020 22:53:57 -0700 Subject: [PATCH 35/61] Update circleci to reflect latest changes --- doc/continuous_integration/circleci.md | 27 ++++++++++++-------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index 4077180b65..04590418ab 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -1,6 +1,6 @@ # CircleCI Documentation -CircleCI is a service used to build and test the project's codebase to catch regressions as well as to check pull request submissions. Using continuous integration helps maintainers sustain high code quality while providing external contributors a well defined evaluation method with which to polish contributions, without even needing to stand up entire development environment locally. More info on CircleCI can be found here: +CircleCI is a service used to build and test the project's codebase to catch regressions as well as to check pull request submissions. Using continuous integration helps maintainers sustain high code quality while providing external contributors a well defined evaluation method with which to validate contributions, even without having to setup a local development environment. More info on CircleCI can be found here: * [CircleCI](https://circleci.com/) * [Navigation2 on CircleCI](https://circleci.com/gh/ros-planning/navigation2) @@ -10,22 +10,22 @@ For this particular CI, Docker is used to build and test the project within cont * [Dockerfile](dockerfile.md) * [DockerHub](dockerhub.md) -CircleCI is configured via the [config.yml](/.circleci/config.yml) yaml file within the `.circleci/` folder at the root of the GitHub repo. The config file for this project is self-contained and thus densely structured, yet written in a functional style to remain DRY and modular. This keeps it easily generalizable for other ROS packages or for adjusting overlayed workspaces. Given the anchors and references in yaml, it's consequently best approached by reading the config file from bottom to top in order of abstraction hierarchy. Further references on configuring CircleCI, such as syntax and structure can be found here: +CircleCI is configured via the [config.yml](/.circleci/config.yml) yaml file within the `.circleci/` folder at the root of the GitHub repo. The config file for this project is self-contained and thus densely structured, yet written in a functional style to remain DRY and modular. This keeps it easily generalizable for other ROS packages or for adjusting overlayed workspaces. Despite the anchors and references in yaml, the config file is best approached in reverse, from bottom to top in order of abstraction hierarchy, while reading this accompanied document. Further references on CircleCI configurations, such as syntax and structure can be found here: * [Writing YAML](https://circleci.com/docs/2.0/writing-yaml) * [Configuring CircleCI](https://circleci.com/docs/2.0/configuration-reference) ## Workflows -The CI config consists of two main [workflows](https://circleci.com/docs/2.0/configuration-reference/#workflows). One workflow is for checking PR events, essentially triggered by any pushed commits towards the repo, by building and testing the project both in release and debug mode for accurate performance benchmarking or generating test coverage results. The second is cron scheduled to check the main repo branches daily, while additionally testing a matrix of supported RMW vendors not normally tested within day-to-day PRs. This helps prioritize CI to quickly check new contributions, while simultaneously keeping tabs on the health of existing code. +The CI config consists of three main [workflows](https://circleci.com/docs/2.0/configuration-reference/#workflows). One workflow is for checking PR events, essentially triggered by any pushed commits targeting the main branch, by building and testing the project both in release and debug mode for accurate performance benchmarking or generating test coverage results. The second is nightly cron scheduled to check the main branch, while additionally testing a matrix of supported RMW vendors not tested on normal PRs. This helps prioritize CI to quickly check new contributions, while simultaneously keeping tabs on the health of existing code. The third is another cron for updating CI image builds on DockerHub, and is scheduled to finish prior to the nightly workflow. This reduces the chance of updating CI images while a CI workflow is in progress. -The order in which jobs are executed is conditional upon the completion of those is [requares](https://circleci.com/docs/2.0/configuration-reference/#requires), forming a conventional direct acyclic graph of dependent jobs. Unrelated jobs may of course be parallelized in the CI pipeline; so by splitting the build and test jobs in two, multiple jobs such as the matrix of RMW tests may commence as soon as the dependent build job completes, avoiding unnecessarily re-building the same codebase for each RMW vendor. +The order in which jobs are executed is conditional upon the completion of those it [requires](https://circleci.com/docs/2.0/configuration-reference/#requires), forming a conventional directed acyclic graph of dependent jobs. Independent jobs may of course be parallelized in the CI pipeline; so by splitting the build and test jobs in two, multiple test jobs, such as the matrix of RMW tests, may commence as soon as the dependent build job completes, avoiding unnecessarily re-building the same codebase for each RMW vendor. ## Jobs The list of [jobs](https://circleci.com/docs/2.0/configuration-reference/#jobs) referenced within the workflows consist of either release or debug build/test jobs. These jobs are largely similar with the exception of using different executors, and that debug test jobs include additional command steps for reporting code coverage analytics. The build jobs simply checkout the project, set up the build environment, and compile the project. The test jobs in turn pick up from where the build job left off by restoring the build, and then running the test on that build. -In addition to enabling the parallelization of different types of test jobs, the bifurcation build and test jobs enables efficiently controlling the [parallelism](https://circleci.com/docs/2.0/configuration-reference/#parallelism) within each job itself, leveraged later for test splitting. However, given the workspace caching and principled builds, parallelism within build jobs is not as easily applied nor justified, thus parallelism here is applied only to testing. +In addition to enabling parallelism between independent jobs, the bifurcation build and test job types enables [parallelism](https://circleci.com/docs/2.0/configuration-reference/#parallelism) within each test job, leveraged later for splitting longer tests across multiple containers for that job. Given packages independencies, container parallelism for build jobs is not as easily applicable, and thus only used for testing. ## Executors @@ -37,19 +37,19 @@ The executors also differ by a few environment variables. These include appropri To reuse sequences of steps across multiple jobs, a number of [commands](https://circleci.com/docs/2.0/configuration-reference/#commands-requires-version-21) are defined. In addition to a few common commands for abstracting lower level tasks as a function, a number of higher level commands are also recursively composed of smaller formulaic steps. -When checking our source code from the repo, additional pre and post checkout steps are performed to prepare the file system. When setting up dependencies, the build is prepared much the same way as in the project Dockerfile, by first setting up the underlay and then the overlay workspace. Additional steps are included for restoring and resetting previous ccache files and statistics, including a few diagnostic steps that can be used for debugging the CI itself, e.g. investigating as to why the hit rate for ccache may be abnormally low. Once the overlay setup is finished, more ccache diagnostics and files are saved for inspection or later restoration. A restore build command is also defined for test jobs, operating under the condition that a workspace with the same checksum can be restored from a previous build job in the workflow. Additional commands are also defined for steps in testing overlay workspace and reporting coverage results. +When checking our source code from the repo, additional pre and post checkout steps are performed to prepare the file system. When setting up dependencies, the build is prepared much the same way as in the project Dockerfile, by first setting up the underlay and then the overlay workspace. Additional steps are included for restoring and resetting previous ccache files and statistics, including a few diagnostic steps that can be used for debugging the CI itself, e.g. investigating as to why the hit rate for ccache may be abnormally low. Once the overlay setup is finished, more ccache diagnostics and files are saved for inspection or later restoration. A restore build command is also defined for test jobs, operating under the condition that a workspace with the same checksum can be restored from a previous build job in the workflow. Additional commands are also defined for steps in testing the overlay workspace and reporting coverage results. ## References -Per the YAML syntax, a reference must proceed any anchor that it links back to. As a formality, all references are merely prefaced and organized under the key titled `references`. +Per the YAML syntax, a reference must proceed any anchor that it links back to. Stylistically, any root level keys declared that only include references are denoted with an underscore (`_`) prefixed to help distinguish them from keys expected by the CircleCI config schema. ### Common Environment For environment variables common among the executors, workspace paths and specific config options are listed here. While the workspace paths are parameterized to avoid hardcoding paths in common command functions, they may also be hardcoded as fields among a few high level steps given a limitation of the config syntax. The additional config options help optimize our project build given CI resource limits: * Capping ccache size/location given CI storage limits, speeding up cache restoration -* Limiting parallel make and linker jobs as to avoid exhausting all un-allocated RAM -* Further adjustments for changing robust test behavior and sequential test stdout. +* Limiting parallel make and linker jobs as to avoid exhausting container's RAM +* Further adjustments for changing test behavior and sequential test stdout. ### Common Commands @@ -85,18 +85,15 @@ The overlay workspace is then cleaned prior to checking out the project. The pos ### Workspaces -The rest of the high level commands serve as references to repeatedly define workspace specific commands, such as install, building and testing either the underlay or overlay workspace. Some point of note however include: +The rest of the high level commands serve as references to repeatedly define workspace specific commands, such as install, building and testing either the underlay or overlay workspace. Some points of note however include: * The CI cache for ccache is intentionally linked with the underlay rather than the overlay workspace * so that consecutive commits to the same PR are more likely to retain a warm and recent ccache * CCache Stats is intentionally used to zero stats before building a workspace * so the next consecutive run of the CCache Stats reflects only upon that given workspace -* Restore workspace command intentionally sets the `build` filed to `false` +* Restore workspace command intentionally sets the `build` parameter to `false` * to avoid unnecessary duplication of the same workspace cache and build logs ### Code Coverage -A custom script within the repo is reused to collect and post process the generated code coverage results from debug test jobs. This always runs regardless if the tests fail so that failed code coverage reports may still be reviewed. The final report is uploaded to CodeCov via the third party orb. Note that the use of a third party orb requires the enabling of a permission in CircleCI settings for the repo. So if you would like to upload code coverage results for your own fork, you'll have to explicitly allow it. - -* [CodeCov Orb](https://circleci.com/orbs/registry/orb/codecov/codecov) -* [Orbs Introduction](https://circleci.com/docs/2.0/orb-intro) +A custom script within the repo is reused to collect and post process the generated code coverage results from debug test jobs. This always runs regardless if the tests fail so that failed code coverage reports may still be reviewed. The final report is uploaded to CodeCov. From 11cbe2686ab7d5d119c9c3476f830645e7788b64 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 11 Oct 2020 23:25:57 -0700 Subject: [PATCH 36/61] Reorder steps and commands refrences to match config --- doc/continuous_integration/circleci.md | 38 ++++++++++++++------------ 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index 04590418ab..cc656a5cae 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -35,15 +35,15 @@ The executors also differ by a few environment variables. These include appropri ## Commands -To reuse sequences of steps across multiple jobs, a number of [commands](https://circleci.com/docs/2.0/configuration-reference/#commands-requires-version-21) are defined. In addition to a few common commands for abstracting lower level tasks as a function, a number of higher level commands are also recursively composed of smaller formulaic steps. +To reuse sequences of steps across multiple jobs, a number of [commands](https://circleci.com/docs/2.0/configuration-reference/#commands-requires-version-21) are defined. When checking our source code from the repo, additional pre and post checkout steps are performed to prepare the file system. When setting up dependencies, the build is prepared much the same way as in the project Dockerfile, by first setting up the underlay and then the overlay workspace. Additional steps are included for restoring and resetting previous ccache files and statistics, including a few diagnostic steps that can be used for debugging the CI itself, e.g. investigating as to why the hit rate for ccache may be abnormally low. Once the overlay setup is finished, more ccache diagnostics and files are saved for inspection or later restoration. A restore build command is also defined for test jobs, operating under the condition that a workspace with the same checksum can be restored from a previous build job in the workflow. Additional commands are also defined for steps in testing the overlay workspace and reporting coverage results. -## References +# References Per the YAML syntax, a reference must proceed any anchor that it links back to. Stylistically, any root level keys declared that only include references are denoted with an underscore (`_`) prefixed to help distinguish them from keys expected by the CircleCI config schema. -### Common Environment +## Common Environment For environment variables common among the executors, workspace paths and specific config options are listed here. While the workspace paths are parameterized to avoid hardcoding paths in common command functions, they may also be hardcoded as fields among a few high level steps given a limitation of the config syntax. The additional config options help optimize our project build given CI resource limits: @@ -51,11 +51,23 @@ For environment variables common among the executors, workspace paths and specif * Limiting parallel make and linker jobs as to avoid exhausting container's RAM * Further adjustments for changing test behavior and sequential test stdout. -### Common Commands +## Steps + +Low level steps, defined prior to the job commands where they are used, are recursively defined from more functional common commands. + +### Checkout + +Checking out code consists of three stages, including pre and post checkout steps. To simplify the formulaic common commands above, the pre-checkout step replicates a synthetic workspace from the installed ROS distro directory by symbolically linking an install folder, and bootstrapping the checksum from the timestamp of an expected file in ROS docker images. This is a measure to ensure if the nightly docker image is changed/rebuilt, then all CI caches should also be busted. Ideally, the docker image sha/hash should be used for this instead, but as of writing there does not seem to be a reliable method for acquiring this image digest from within the same derived container: + +* [Introspect image info from inside docker executor](https://discuss.circleci.com/t/introspect-image-info-from-inside-docker-executor/31620) + +The overlay workspace is then cleaned prior to checking out the project. The post checkout step simply checks to see if the underlay has changed to determine whether it should also be cleaned, recloned, and thus rebuilt as well. + +## Common Commands Common commands for low level, repeated, and formulaic tasks are defined for saving and restoring CI caches, as well as for installing, building, and testing workspaces. -#### Caching +### Caching Multiple forms of [caching](https://circleci.com/docs/2.0/caching/) is done over the completion of a single workflow. To appropriately save and restore caches in a deterministic manner, these steps are abstracted as commands. Although CircleCI does provide an explicit step for persisting temporary files across jobs in the same workflow, i.e. a [workspace](https://circleci.com/docs/2.0/configuration-reference/#persist_to_workspace), caches are used instead for a few reasons. First there is only one workspace per workflow, thus avoiding cross talk between executors or release/debug job types is not as easily achievable. Secondly, unlike workspaces, caches can persist across workflows, permitting repeated workflows for the same PR to pull from the cache of prior runs; e.g. in order to keep the ccache as fresh as possible for that specific PR. @@ -65,25 +77,17 @@ For saving a cache, the command is similar, aside from specifying the path to di These workspace checksums are uploaded as [stored artifacts](https://circleci.com/docs/2.0/configuration-reference/#store_artifacts) throughout other commands to help introspect to debug caching behavior when needed. -#### Building +### Building For installing and building workspaces, the process resembles that within the project Dockerfile. Additional bookkeeping is performed to update the workspace checksum file by piping stdout that deterministically describes the state of the build environment. This is done by seeding from the checksum of the underlay workspace and then appending info about source code checked out into the overlay workspace, as well as the list of required dependencies installed. When setting up the workspace, this checksum will first be used to check if the workspace can be restored from a prior workflow build. If the source code or required dependencies change, resulting in a missed cache hit, the unfinished workspace is then built. If the workspace build is successful then it will be cached. Regardless however, the build logs are always uploaded as stored artifacts for review or debugging. The odd shuffling of symbolic directories is done as a workaround given a limitation of the S3 SDK: * [Failing to upload artifacts from symbolic link directories](https://discuss.circleci.com/t/failing-to-upload-artifacts-from-symbolic-link-directories/28000) -#### Testing +### Testing For testing workspaces, the list of packages within the workspace are [tested in parallel](https://circleci.com/docs/2.0/parallelism-faster-jobs/) across the number of replicated containers for the given test job as denoted by the `parallelism` option. Here packages are split by anticipated test timing; the heuristic derived from the reported duration and classname of prior recent test results. The logs and results from the tests are then always [reported](https://circleci.com/docs/2.0/configuration-reference/#store_test_results) and uploaded. -### Checkout - -Checking out code consists of three stages, including pre and post checkout steps. To simplify the formulaic common commands above, the pre-checkout step replicates a synthetic workspace from the installed ROS distro directory by symbolically linking an install folder, and bootstrapping the checksum from the timestamp of an expected file in ROS docker images. This is a measure to ensure if the nightly docker image is changed/rebuilt, then all CI caches should also be busted. Ideally, the docker image sha/hash should be used for this instead, but as of writing there does not seem to be a reliable method for acquiring this image digest from within the same derived container: - -* [Introspect image info from inside docker executor](https://discuss.circleci.com/t/introspect-image-info-from-inside-docker-executor/31620) - -The overlay workspace is then cleaned prior to checking out the project. The post checkout step simply checks to see if the underlay has changed to determine whether it should also be cleaned, recloned, and thus rebuilt as well. - -### Workspaces +## Workspaces The rest of the high level commands serve as references to repeatedly define workspace specific commands, such as install, building and testing either the underlay or overlay workspace. Some points of note however include: @@ -94,6 +98,6 @@ The rest of the high level commands serve as references to repeatedly define wor * Restore workspace command intentionally sets the `build` parameter to `false` * to avoid unnecessary duplication of the same workspace cache and build logs -### Code Coverage +## Code Coverage A custom script within the repo is reused to collect and post process the generated code coverage results from debug test jobs. This always runs regardless if the tests fail so that failed code coverage reports may still be reviewed. The final report is uploaded to CodeCov. From a7e67498b1c69847902ab871804439a7820a3eca Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 11 Oct 2020 23:29:54 -0700 Subject: [PATCH 37/61] Move morkspaces back under steps --- doc/continuous_integration/circleci.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index cc656a5cae..31f3b74e7f 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -63,6 +63,17 @@ Checking out code consists of three stages, including pre and post checkout step The overlay workspace is then cleaned prior to checking out the project. The post checkout step simply checks to see if the underlay has changed to determine whether it should also be cleaned, recloned, and thus rebuilt as well. +## Workspaces + +The rest of the steps are references to repeatedly define workspace specific commands, such as install, building and testing either the underlay or overlay workspace. Some points of note however include: + +* The CI cache for ccache is intentionally linked with the underlay rather than the overlay workspace + * so that consecutive commits to the same PR are more likely to retain a warm and recent ccache +* CCache Stats is intentionally used to zero stats before building a workspace + * so the next consecutive run of the CCache Stats reflects only upon that given workspace +* Restore workspace command intentionally sets the `build` parameter to `false` + * to avoid unnecessary duplication of the same workspace cache and build logs + ## Common Commands Common commands for low level, repeated, and formulaic tasks are defined for saving and restoring CI caches, as well as for installing, building, and testing workspaces. @@ -87,17 +98,6 @@ For installing and building workspaces, the process resembles that within the pr For testing workspaces, the list of packages within the workspace are [tested in parallel](https://circleci.com/docs/2.0/parallelism-faster-jobs/) across the number of replicated containers for the given test job as denoted by the `parallelism` option. Here packages are split by anticipated test timing; the heuristic derived from the reported duration and classname of prior recent test results. The logs and results from the tests are then always [reported](https://circleci.com/docs/2.0/configuration-reference/#store_test_results) and uploaded. -## Workspaces - -The rest of the high level commands serve as references to repeatedly define workspace specific commands, such as install, building and testing either the underlay or overlay workspace. Some points of note however include: - -* The CI cache for ccache is intentionally linked with the underlay rather than the overlay workspace - * so that consecutive commits to the same PR are more likely to retain a warm and recent ccache -* CCache Stats is intentionally used to zero stats before building a workspace - * so the next consecutive run of the CCache Stats reflects only upon that given workspace -* Restore workspace command intentionally sets the `build` parameter to `false` - * to avoid unnecessary duplication of the same workspace cache and build logs - ## Code Coverage A custom script within the repo is reused to collect and post process the generated code coverage results from debug test jobs. This always runs regardless if the tests fail so that failed code coverage reports may still be reviewed. The final report is uploaded to CodeCov. From b583d1d9899a26f9a3dffe9ab2320e618e0b25b1 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 11 Oct 2020 23:37:00 -0700 Subject: [PATCH 38/61] Move code coverage back under steps --- doc/continuous_integration/circleci.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index 31f3b74e7f..7c169266ec 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -74,6 +74,10 @@ The rest of the steps are references to repeatedly define workspace specific com * Restore workspace command intentionally sets the `build` parameter to `false` * to avoid unnecessary duplication of the same workspace cache and build logs +## Code Coverage + +The last few steps invoke a custom script to collect and post process the generated code coverage results from debug test jobs. This always runs regardless if the tests fail so that failed code coverage reports may still be reviewed. The final report is uploaded to CodeCov. + ## Common Commands Common commands for low level, repeated, and formulaic tasks are defined for saving and restoring CI caches, as well as for installing, building, and testing workspaces. @@ -97,7 +101,3 @@ For installing and building workspaces, the process resembles that within the pr ### Testing For testing workspaces, the list of packages within the workspace are [tested in parallel](https://circleci.com/docs/2.0/parallelism-faster-jobs/) across the number of replicated containers for the given test job as denoted by the `parallelism` option. Here packages are split by anticipated test timing; the heuristic derived from the reported duration and classname of prior recent test results. The logs and results from the tests are then always [reported](https://circleci.com/docs/2.0/configuration-reference/#store_test_results) and uploaded. - -## Code Coverage - -A custom script within the repo is reused to collect and post process the generated code coverage results from debug test jobs. This always runs regardless if the tests fail so that failed code coverage reports may still be reviewed. The final report is uploaded to CodeCov. From 49a0015ef537050e2d9e244ddae491db08bb379c Mon Sep 17 00:00:00 2001 From: ruffsl Date: Mon, 12 Oct 2020 00:18:28 -0700 Subject: [PATCH 39/61] Update codecov doc --- doc/continuous_integration/codecov.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/doc/continuous_integration/codecov.md b/doc/continuous_integration/codecov.md index 0179de6ffe..f1c7057539 100644 --- a/doc/continuous_integration/codecov.md +++ b/doc/continuous_integration/codecov.md @@ -1,3 +1,18 @@ -https://codecov.io/gh/ros-planning/navigation2 +### Codecov -https://docs.codecov.io/docs/codecov-yaml \ No newline at end of file +Codecov is a service used to aggregate and monitor code coverage results, rendering test statistics generated by CI pipelines into interactive analytics, improving the visibility of the project's health and providing feedback for potential contributions. More info on Codecov can be found here: + +* [Codecov](https://codecov.io/) +* [Navigation2 on Codecov](https://codecov.io/gh/ros-planning/navigation2) + +Codecov is configured + +* [About the Codecov yaml](https://docs.codecov.io/docs/codecov-yaml) +* [codecov.yml Reference](https://docs.codecov.io/docs/codecovyml-reference) +* [codecov.yml](/codecov.yml) + +A custom script within the repo is reused to collect and post process the generated code coverage results from debug test jobs. This scrip simply invokes lcov on the overlay workspace to output `full_coverage.info`, and then filter this down to `workspace_coverage.info` by removing and irrelevant subdirectories, e.g. for message or test packages. + +* [code_coverage_report.bash](/tools/code_coverage_report.bash) + +After the coverage info is uploaded, the project `codecov.yml` is used to further ignore any source test directories, as well as fix the project root path from when the repo was cloned into the relative workspace's src directory. From d8096616b877bf05f20b54ba346b385fc9647962 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Mon, 12 Oct 2020 00:26:49 -0700 Subject: [PATCH 40/61] Comment that ccache uses ram disk --- doc/continuous_integration/circleci.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index 7c169266ec..8d1eb9e429 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -47,7 +47,8 @@ Per the YAML syntax, a reference must proceed any anchor that it links back to. For environment variables common among the executors, workspace paths and specific config options are listed here. While the workspace paths are parameterized to avoid hardcoding paths in common command functions, they may also be hardcoded as fields among a few high level steps given a limitation of the config syntax. The additional config options help optimize our project build given CI resource limits: -* Capping ccache size/location given CI storage limits, speeding up cache restoration +* Capping ccache size given CI storage limits, speeding up cache restoration +* Setting ccache location to use RAM disk to improve file IO performance * Limiting parallel make and linker jobs as to avoid exhausting container's RAM * Further adjustments for changing test behavior and sequential test stdout. From 2fd049db1f01ab25c5e1aeaa7e72f1cdf87c6504 Mon Sep 17 00:00:00 2001 From: Ruffin Date: Fri, 6 Nov 2020 12:03:54 -0800 Subject: [PATCH 41/61] Fix typo --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index d3aef7cb1a..c640a1be68 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -94,7 +94,7 @@ The [`distro.Dockerfile`](/.dockerhub/distro.Dockerfile) provides once such exam ### Advanced Optimizations -With Buildkit's concurrent dependency resolution, multistage builds become parallelizable, assisting in shorter over all image build times. Granular expansion of the Directed Acyclic Graph (DAG) of workspace build steps into septate stages can be used to exploit this parallelism further, as well to maximize caching. This is exemplified in [`source.Dockerfile`](/.dockerhub/source.Dockerfile). The figure bellow depicts how the multiple stages are composed to exploit the DAG of workspaces. +With Buildkit's concurrent dependency resolution, multistage builds become parallelizable, assisting in shorter over all image build times. Granular expansion of the Directed Acyclic Graph (DAG) of workspace build steps into separate stages can be used to exploit this parallelism further, as well to maximize caching. This is exemplified in [`source.Dockerfile`](/.dockerhub/source.Dockerfile). The figure bellow depicts how the multiple stages are composed to exploit the DAG of workspaces. ![pipeline](figs/multistage.svg) From ff1bca09ee2b6c2088a5aafe282d6038aeb2c845 Mon Sep 17 00:00:00 2001 From: Ruffin Date: Fri, 6 Nov 2020 12:09:23 -0800 Subject: [PATCH 42/61] Complete sentence on codecov.yml --- doc/continuous_integration/codecov.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/continuous_integration/codecov.md b/doc/continuous_integration/codecov.md index f1c7057539..e21aec9258 100644 --- a/doc/continuous_integration/codecov.md +++ b/doc/continuous_integration/codecov.md @@ -5,11 +5,10 @@ Codecov is a service used to aggregate and monitor code coverage results, render * [Codecov](https://codecov.io/) * [Navigation2 on Codecov](https://codecov.io/gh/ros-planning/navigation2) -Codecov is configured +Codecov is configured via the [`codecov.yml`](/codecov.yml) file. More info on this can be found here: * [About the Codecov yaml](https://docs.codecov.io/docs/codecov-yaml) * [codecov.yml Reference](https://docs.codecov.io/docs/codecovyml-reference) -* [codecov.yml](/codecov.yml) A custom script within the repo is reused to collect and post process the generated code coverage results from debug test jobs. This scrip simply invokes lcov on the overlay workspace to output `full_coverage.info`, and then filter this down to `workspace_coverage.info` by removing and irrelevant subdirectories, e.g. for message or test packages. From 112178dec8dc1c01d45b8e4166e990f8b9a8910d Mon Sep 17 00:00:00 2001 From: Ruffin Date: Fri, 6 Nov 2020 12:44:31 -0800 Subject: [PATCH 43/61] Update doc/continuous_integration/README.md Co-authored-by: Steve Macenski --- doc/continuous_integration/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md index 8d03d06665..0df95d9dbd 100644 --- a/doc/continuous_integration/README.md +++ b/doc/continuous_integration/README.md @@ -2,7 +2,7 @@ Documentation on the existing CI for the project is resides here. ## Overview -The existing CI is composed of multiple integration services that together help provide maintainers a fast and scalable testing environment. To help detect upstream breakages quickly as well, the existing CI allows for changes to be evaluated using the latest development dependencies. In light of the large dependency footprint a high-level ROS2 navigation stack necessitates, the use of each integration service is optimized to maximize caching of environmental setup and increase workflow throughput. As these optimizations add complexity to the CI configuration, this documentation provides further explanations and reasoning behind each configuration. +The existing CI is composed of multiple integration services that together help provide maintainers a fast and scalable testing environment. To help detect upstream breakages quickly as well, the existing CI allows for changes to be evaluated using the latest development dependencies (e.g. using ROS2 master branches). In light of the large dependency footprint a high-level ROS2 navigation stack necessitates, the use of each integration service is optimized to maximize caching of environmental setup and increase workflow throughput. As these optimizations add complexity to the CI configuration, this documentation provides further explanations and reasoning behind each configuration. ![pipeline](figs/pipeline.svg) From bd630b61202d663a3c226a4b3bce1a530afc7c67 Mon Sep 17 00:00:00 2001 From: Ruffin Date: Fri, 6 Nov 2020 12:55:06 -0800 Subject: [PATCH 44/61] Update doc/continuous_integration/dockerfile.md Co-authored-by: Steve Macenski --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index c640a1be68..1105203989 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -33,7 +33,7 @@ A `cacher` stage is then started to gather together the necessary source files t The `.repos` file is not copied directly into the `src` folder to avoid any restructuring of the yaml data from unintentionally busting the docker build cache in later stages. The ephemeral files within `.git` repo folders are similarly removed and help bolster deterministic builds. -The overlay workspace is then also created and populated using all the files in the docker build context, i.e. the [root](/) directory of the repo. This is done after the underlay is cloned to avoid having to re-download underlay source files if the `.repos` files are unchanged. However, if the `.repos` file is changed, and different source files are cloned, this can then bust the docker build cache. Other ephemeral or unessential project files are safely ignored using the [`.dockerignore`](/.dockerignore) config. If ever the docker build cache is cache is somehow stale, using the docker build flag `--no-cache` may be used to freshly build anew. +The overlay workspace is then also created and populated using all the files in the docker build context, (e.g. the root directory of the branch being built). This is done after the underlay is cloned to avoid re-downloading underlay dependency source files if the `.repos` file is unchanged in the branch. However, if the `.repos` file is changed, and different source files are cloned, this will bust the docker build cache and clean rebuild. Other project files are safely ignored using the [`.dockerignore`](/.dockerignore) config. If the docker build's cache is somehow stale, using the docker build flag `--no-cache` may be used to freshly build anew. Finally the `cacher` stage copies all manifest related files in place within the `/opt` directory into a temporary mirrored directory that later stages can copy from without unnecessarily busting it's docker build cache. The [`source.Dockerfile`](/.dockerhub/source.Dockerfile) provides an advance example of avoiding ignored packages, or packages that are unnecessary as overlay dependencies. From 9fba827e1b02cc95f4667b374f35aa071aa6f5ba Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sat, 7 Nov 2020 13:48:44 -0800 Subject: [PATCH 45/61] Update doc/continuous_integration/circleci.md Co-authored-by: Steve Macenski --- doc/continuous_integration/circleci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index 8d1eb9e429..403defe25a 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -5,7 +5,7 @@ CircleCI is a service used to build and test the project's codebase to catch reg * [CircleCI](https://circleci.com/) * [Navigation2 on CircleCI](https://circleci.com/gh/ros-planning/navigation2) -For this particular CI, Docker is used to build and test the project within containers derived from images pulled from DockerHub, bootstrapping the CI with a development environment including pre configured dependencies and warm workspace build caches. View the accompanying DockerFile and DockerHub documentation for more info on this accompanying CI setup. +For this particular CI, Docker is used to build and test the project within containers derived from images pulled from DockerHub, bootstrapping the CI with a development environment including pre-configured dependencies and warm workspace build caches. View the accompanying DockerFile and DockerHub documentation for more info on this accompanying CI setup. * [Dockerfile](dockerfile.md) * [DockerHub](dockerhub.md) From 62f8ac8cb82c1363c3a7a0ec7f35cafeeb1b1f81 Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sat, 7 Nov 2020 13:49:12 -0800 Subject: [PATCH 46/61] Update doc/continuous_integration/dockerfile.md Co-authored-by: Steve Macenski --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 1105203989..7cc3e3f751 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -70,7 +70,7 @@ The addition of the `ccache` mixin is used to pre-bake a warm ccache directory i ## Overlay Workspace -The overlay workspace is then set up in a similar manner where the same steps are repeated, only now sourcing the underlay setup file, and by building within the overlay directory. The separation of underlay vs overlay workspace helps split caching of compilation across the two major points of change; that of external dependencies that change infrequently upon new releases vs local project source files that perpetually change during development. The overlay mixins are parameterized via `ARG` as well to allow the underlay and overlay to be independently configured by CI or local developers. This pattern can be repeated to chain together workspaces in one or multiple Dockerfiles; practically useful when working with a stack of related projects with deep recursive dependencies. +The overlay workspace is then set up in a similar manner where the same steps are repeated, only now sourcing the underlay setup file, and by building the overlay directory. The separation of underlay vs overlay workspace helps split caching of compilation across the two major points of change; that of external dependencies that change infrequently upon new releases vs local project source files that perpetually change during development. The overlay mixins are parameterized via `ARG` as well to allow the underlay and overlay to be independently configured by CI or local developers. This pattern can be repeated to chain together workspaces in one or multiple Dockerfiles; practically useful when working with a stack of related projects with deep recursive dependencies. ### Setup Entrypoint From 5755076bc5967911569f4cfa9ee6266100da4bbc Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sat, 7 Nov 2020 13:50:11 -0800 Subject: [PATCH 47/61] Update doc/continuous_integration/README.md --- doc/continuous_integration/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md index 0df95d9dbd..b5d6529b52 100644 --- a/doc/continuous_integration/README.md +++ b/doc/continuous_integration/README.md @@ -12,7 +12,7 @@ The figure above is a high level diagram on how the integration services describ The following links document each integration and are best approached in the same order presented. -### [GitHub](github.md) +### GitHub GitHub is used for hosting the source repo, tickets and PRs, as well for managing the OAuth and configs for the rest of the other integration services in the CI pipeline. From 65ae4c6c0d58a11457933c927f4e24f7cf322a75 Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sat, 7 Nov 2020 13:50:56 -0800 Subject: [PATCH 48/61] Update doc/continuous_integration/dockerfile.md Co-authored-by: Steve Macenski --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 7cc3e3f751..eb13c2a649 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -39,7 +39,7 @@ Finally the `cacher` stage copies all manifest related files in place within the ## Builder Stage -A `builder` stage is then started to install external dependencies and compile the respective workspaces. Static CI dependencies are first installed before any later potential cache busting directives. These include: +A `builder` stage is then started to install external dependencies and compile the respective workspaces. Static CI dependencies are first installed before any later potential cache busting directives to optimize rebuilds. These include: * [ccache](https://ccache.dev) * Compiler cache for speeding up recompilation From 8aadf997ffaee80a43a5a991b992575dac55acff Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sat, 7 Nov 2020 13:52:00 -0800 Subject: [PATCH 49/61] Update doc/continuous_integration/dockerfile.md Co-authored-by: Steve Macenski --- doc/continuous_integration/dockerfile.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index eb13c2a649..01bbb0b727 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -1,6 +1,11 @@ # Dockerfile Documentation -Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provides repeatable and reproducible means to build and test the project, as well as build images for running container based CI services. Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: +Dockerfiles, denoted via the `(.)Dockerfile` file name extension, provide: +- Repeatable and reproducible means to build and test the project +- Build images for running container based CI services +- Identical images to scalably deploy onto robot systems + +Further references on writing and building Dockerfiles, such as syntax and tooling can be found here: * [Dockerfile reference](https://docs.docker.com/engine/reference/builder) * [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) From 1074b191430f73cd1c6f3ea5b643e964b0579ad7 Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sat, 7 Nov 2020 13:53:05 -0800 Subject: [PATCH 50/61] Update doc/continuous_integration/dockerfile.md Co-authored-by: Steve Macenski --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 01bbb0b727..23e866f40a 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -83,7 +83,7 @@ The default entrypoint `ros_entrypoint.sh` inherited from the parent image is th ### Testing Overlay -The overlay may then be optionaly tested using the same additional mixins. The results of the test may also be used to optionaly fail the entire build; useful if the return code from `docker build` command itself is used as a primitive form of CI, or demonstrating to new contributors on how to locally test pull requests by invoking the colcon CLI. +The overlay may then be optionally tested using the same additional mixins. The results of the test may also be used to optionally fail the entire build; useful if the return code from `docker build` command itself is used as a primitive form of CI, or demonstrating to new contributors on how to locally test pull requests by invoking the colcon CLI. In other terms, failing on test failure may be good for a production system, but practically speaking, CI may be broken on occasionally and these images will still be required for fixing those issues so they must still be deployed. ## Buildkit From 900535c535a1b14350c04230922a1365de890bb2 Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sat, 7 Nov 2020 13:54:23 -0800 Subject: [PATCH 51/61] Update doc/continuous_integration/dockerhub.md Co-authored-by: Steve Macenski --- doc/continuous_integration/dockerhub.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerhub.md b/doc/continuous_integration/dockerhub.md index d94c051b6b..4728f3ce3e 100644 --- a/doc/continuous_integration/dockerhub.md +++ b/doc/continuous_integration/dockerhub.md @@ -20,7 +20,7 @@ Automated Builds are controlled via the build configurations menu within the rep Here the repo's source repository is linked to the project's GitHub repo, while Autotest is disabled given a dedicated CI service is separately used to run test jobs. Repository linking can be used so that whenever a parent image repo is updated on DockerHub, it will also trigger a build for the project's DockerHub repository. Note that this only works for non-official library images, and only for build rules where Autobuild is is enabled. Two build rules are added for the main branch, providing both a release and debug tag for CI to pull from. The relative Dockerfiles paths are designated, while the build context is intentionally left empty, ensuring the build phase hooks within the same paths are used appropriately. Build caching is also enabled to shorten image turnaround time if multiple rebuilds a day are triggered. -The build hooks, e.g. [build](/.dockerhub/debug/hooks/build) , are for customizing docker build arguments in the Dockerfile via the `ARG` directives; such as changing the base `FROM_IMAGE` between release or debug tags, adjusting the colcon mixins for each workspace to enable code coverage, or disabling fail on build failure, preventing source build breakages from blocking CI image tag updates. This also allows the slower debug CI to build and test only using the default RMW, while allowing the faster release CI jobs to build and test from an image with more RMWs installed. +The build hooks, e.g. [build](/.dockerhub/debug/hooks/build), are for customizing docker build `ARG`s in the Dockerfile; such as changing the base `FROM_IMAGE` between release or debug tags, adjusting the colcon mixins for each workspace to enable code coverage, or disabling fail on build failure, preventing source build breakages from blocking CI image tag updates. This also allows the slower debug CI to build and test only using the default RMW, while allowing the faster release CI jobs to build and test from an image with more RMWs installed. ## Autobuild From 94a468cc2652db684060915200220457e7b813b4 Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sat, 7 Nov 2020 13:55:25 -0800 Subject: [PATCH 52/61] Update doc/continuous_integration/circleci.md Co-authored-by: Steve Macenski --- doc/continuous_integration/circleci.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/circleci.md b/doc/continuous_integration/circleci.md index 403defe25a..fcf4ccbed5 100644 --- a/doc/continuous_integration/circleci.md +++ b/doc/continuous_integration/circleci.md @@ -10,7 +10,7 @@ For this particular CI, Docker is used to build and test the project within cont * [Dockerfile](dockerfile.md) * [DockerHub](dockerhub.md) -CircleCI is configured via the [config.yml](/.circleci/config.yml) yaml file within the `.circleci/` folder at the root of the GitHub repo. The config file for this project is self-contained and thus densely structured, yet written in a functional style to remain DRY and modular. This keeps it easily generalizable for other ROS packages or for adjusting overlayed workspaces. Despite the anchors and references in yaml, the config file is best approached in reverse, from bottom to top in order of abstraction hierarchy, while reading this accompanied document. Further references on CircleCI configurations, such as syntax and structure can be found here: +CircleCI is configured via the [config.yml](/.circleci/config.yml) yaml file within the `.circleci/` folder at the root of the GitHub repo. The config file for this project is self-contained and thus densely structured, yet written in a functional style to remain DRY and modular. This keeps it easily generalizable for other ROS packages or for adjusting overlayed workspaces. Despite the anchors and references in yaml, the config file is best understood read in reverse, from bottom to top, in order of abstraction hierarchy, while reading this accompanied document. Further references on CircleCI configurations, such as syntax and structure can be found here: * [Writing YAML](https://circleci.com/docs/2.0/writing-yaml) * [Configuring CircleCI](https://circleci.com/docs/2.0/configuration-reference) From ce8da8335c1635653164c4ca7766dd1df6677f48 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 8 Nov 2020 12:15:11 -0800 Subject: [PATCH 53/61] Break-out Future Work to separate file --- doc/continuous_integration/README.md | 36 ++--------------------- doc/continuous_integration/future_work.md | 33 +++++++++++++++++++++ 2 files changed, 36 insertions(+), 33 deletions(-) create mode 100644 doc/continuous_integration/future_work.md diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md index b5d6529b52..86551ae9f7 100644 --- a/doc/continuous_integration/README.md +++ b/doc/continuous_integration/README.md @@ -32,36 +32,6 @@ CircleCI is used to checkout, build, and test the project via docker containers CodeCov is used to help monitor code quality by rendering test artifacts from the upstream pipeline into interactive analytics, improving the visibility of the project's health and feedback for contributions. -## Future Work - -The CI has room for improvement and may still evolve over time. The following notes alterative integration options, including current pros and cons for each. - -### [GitHub Actions](https://github.com/features/actions) - -Github actions is an emerging container based CI service that tightly integrates with the rest of GitHub's service offerings. With a growing ecosystem of official and federated 3rd party actions available, one can compose custom and extensive CI/CD workflows. - -#### Pros: - -* Self hosted runners - * Optionally run workflows form on site, not just cloud VMs - * https://docs.github.com/en/free-pro-team@latest/actions/hosting-your-own-runners - * Leverage local hardware, e.g: GPUs, persistent storage, robot sensors, etc. - -#### Cons: - -* No test introspection - * One must still roll there own test result reporting - * https://github.community/t/publishing-test-results/16215/12 - * Xunit test results are not rendered, aggregated, nor summarized -* Restricted caching - * Caching with runners is less ergonomic than other CI providers - * https://github.com/microsoft/azure-pipelines-agent/issues/2043 - * Implementation inherits same limitation from azure-pipelines-agent -* No job level parallelism - * No equivalent parallelism for splitting tests via timing data - * https://circleci.com/docs/2.0/parallelism-faster-jobs - * Parameterizable parallelism without adding jobs to workflow -* No RAM Disk access - * Useful to improve file IO performance - * https://circleci.com/docs/2.0/executor-types/#ram-disks - * Applicable for frequent reads/writes, e.g. ccache +### [Future Work](future_work.md) + +The CI has room for improvement and may still evolve over time, as alternate integration options become more viable, and the pros and cons of each shift. diff --git a/doc/continuous_integration/future_work.md b/doc/continuous_integration/future_work.md new file mode 100644 index 0000000000..49d5819326 --- /dev/null +++ b/doc/continuous_integration/future_work.md @@ -0,0 +1,33 @@ +# Future Work + +The CI has room for improvement and may still evolve over time. The following notes alterative integration options, including current pros and cons for each. + +## [GitHub Actions](https://github.com/features/actions) + +Github actions is an emerging container based CI service that tightly integrates with the rest of GitHub's service offerings. With a growing ecosystem of official and federated 3rd party actions available, one can compose custom and extensive CI/CD workflows. + +### Pros: + +* Self hosted runners + * Optionally run workflows form on site, not just cloud VMs + * https://docs.github.com/en/free-pro-team@latest/actions/hosting-your-own-runners + * Leverage local hardware, e.g: GPUs, persistent storage, robot sensors, etc. + +### Cons: + +* No test introspection + * One must still roll there own test result reporting + * https://github.community/t/publishing-test-results/16215/12 + * Xunit test results are not rendered, aggregated, nor summarized +* Restricted caching + * Caching with runners is less ergonomic than other CI providers + * https://github.com/microsoft/azure-pipelines-agent/issues/2043 + * Implementation inherits same limitation from azure-pipelines-agent +* No job level parallelism + * No equivalent parallelism for splitting tests via timing data + * https://circleci.com/docs/2.0/parallelism-faster-jobs + * Parameterizable parallelism without adding jobs to workflow +* No RAM Disk access + * Useful to improve file IO performance + * https://circleci.com/docs/2.0/executor-types/#ram-disks + * Applicable for frequent reads/writes, e.g. ccache \ No newline at end of file From 3b2906ebe0588c19017484467d8fb225ecf63430 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 8 Nov 2020 13:20:08 -0800 Subject: [PATCH 54/61] Update figure now that `Autobuild` is disabled for the build rules on Dockerhub The caches for release and debug jobs in the same workflow don't collide thanks to the different prefix in the cache key names. Add two arrows to make that separation more apparent. Also, correct the fact that test jobs don't reuse caches from prior test jobs, only from build jobs in the same workflow. --- .../figs/pipeline.drawio | 63 ++++++++----------- doc/continuous_integration/figs/pipeline.svg | 2 +- 2 files changed, 28 insertions(+), 37 deletions(-) diff --git a/doc/continuous_integration/figs/pipeline.drawio b/doc/continuous_integration/figs/pipeline.drawio index 4dcacdf857..9a7dfdedd8 100644 --- a/doc/continuous_integration/figs/pipeline.drawio +++ b/doc/continuous_integration/figs/pipeline.drawio @@ -1,10 +1,10 @@ - + - + - + @@ -126,7 +126,7 @@ - + @@ -159,39 +159,23 @@ - + - - - - - - - - - + + - + - - - - - - - - - - - + + - + @@ -207,7 +191,7 @@ - + @@ -216,7 +200,7 @@ - + @@ -228,7 +212,7 @@ - + @@ -261,11 +245,6 @@ - - - - - @@ -278,9 +257,21 @@ - + + + + + + + + + + + + + diff --git a/doc/continuous_integration/figs/pipeline.svg b/doc/continuous_integration/figs/pipeline.svg index cf26a99a04..7cfff7beb5 100644 --- a/doc/continuous_integration/figs/pipeline.svg +++ b/doc/continuous_integration/figs/pipeline.svg @@ -1 +1 @@ -DockerHub
Dockerfile
Dockerfile
osrf/docker_images
Nightly Build
osrf/docker_images...
.dockerhub/
.dockerhub/
rosplanning/
navigation2:
<tag>
rosplanning/...
osrf/
ros2:
nightly
osrf/...
ros-planning/
navigation2
Nightly Build
ros-planning/...
GitHubCache Busting Filesunderlay.repospackage.xmlCOLCON_IGNOREBranchesmain*-devel
Commit Pushed
to Pull Request
Commit Pushed...
Commit Pushed
to Main Branch
Commit Pushed...
.dockerignore
.dockerignore
CircleCI
Workflow #N
Workflow #N
Build Job
Build Job
Release
Debug
Release...
Test Job
Test Job
Test
Results
Test...
Test
Results
Test...
Cache
Cache
Cache
Cache
Cache
Cache
Cache
Cache
.circleci/
.circleci/
ros-planning/
navigation2
Build Trigger
ros-planning/...
Debug
Coverage
Debug...
Workflow #N+1
Workflow #N+1
Build Job
Build Job
Release
Debug
Release...
Test Job
Test Job
Release
Debug
rmw
Release...
CodeCov
Post Proccess
Code Coverage
Post Proccess...
codecov      
.yml
codecov...
Code Coverage Results
Code Coverage...
Release
Debug
rmw
Release...
Viewer does not support full SVG 1.1
\ No newline at end of file +DockerHub
Dockerfile
Dockerfile
osrf/docker_images
Nightly Build
osrf/docker_images...
.dockerhub/
.dockerhub/
rosplanning/
navigation2:
<tag>
rosplanning/...
osrf/
ros2:
nightly
osrf/...
ros-planning/
navigation2
Nightly Build
ros-planning/...
GitHubCache Busting Filesunderlay.repospackage.xmlCOLCON_IGNOREBranchesmain*-devel
Commit Pushed
to Pull Request
Commit Pushed...
Commit Pushed
to Main Branch
Commit Pushed...
.dockerignore
.dockerignore
CircleCI
Workflow #N
Workflow #N
Build Job
Build Job
Release
Debug
Release...
Test Job
Test Job
Test
Results
Test...
Test
Results
Test...
Cache
Cache
Cache
Cache
.circleci/
.circleci/
ros-planning/
navigation2
Build Trigger
ros-planning/...
Debug
Coverage
Debug...
Workflow #N+1
Workflow #N+1
Build Job
Build Job
Release
Debug
Release...
Test Job
Test Job
Release
Debug
rmw
Release...
CodeCov
Post Proccess
Code Coverage
Post Proccess...
codecov      
.yml
codecov...
Code Coverage Results
Code Coverage...
Release
Debug
rmw
Release...
Viewer does not support full SVG 1.1
\ No newline at end of file From ae16809f98e00e7eb80a2f405976a4589b3760e3 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 8 Nov 2020 13:24:17 -0800 Subject: [PATCH 55/61] repo -> regestry --- doc/continuous_integration/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/README.md b/doc/continuous_integration/README.md index 86551ae9f7..92e5fe81ee 100644 --- a/doc/continuous_integration/README.md +++ b/doc/continuous_integration/README.md @@ -22,7 +22,7 @@ Dockerfiles are used for generating the docker images for building and testing t ### [DockerHub](dockerhub.md) -DockerHub is used to build and host the repo of tagged docker images, so that downstream services in the CI pipeline can quickly download and bootstrap the latest up-to-date development environment. +DockerHub is used to build and host the regestry of tagged docker images, so that downstream services in the CI pipeline can quickly download and bootstrap the latest up-to-date development environment. ### [CircleCI](circleci.md) From fc8b92b8b601310570a22d62013c482c43fb942c Mon Sep 17 00:00:00 2001 From: Ruffin Date: Sun, 8 Nov 2020 13:33:08 -0800 Subject: [PATCH 56/61] Update doc/continuous_integration/dockerfile.md Co-authored-by: Steve Macenski --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 23e866f40a..9fff215f0c 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -10,7 +10,7 @@ Further references on writing and building Dockerfiles, such as syntax and tooli * [Dockerfile reference](https://docs.docker.com/engine/reference/builder) * [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) -The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub, thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. When choosing the parent image, a tradeoff may persist between choosing a larger tag with more than what you need pre-installed, saving time building the image locally, vs. choosing a smaller tag without anything you don't need, saving time pulling or pushing the image remotely. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. More info on upstream repos on DockerHub can be found here: +The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub (e.g. osrf/ros2:nightly, osrf/ros2:foxy), thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. When choosing the parent image, a tradeoff may persist between choosing a larger tag with more than what you need pre-installed (e.g. desktop images), saving time building the image locally, vs. choosing a smaller tag without anything you don't need (e.g. core images), saving time pulling or pushing the image remotely. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. More info on upstream repos on DockerHub can be found here: * [ROS Docker Images](https://hub.docker.com/_/ros) * DockerHub repo for official images From f811edfe3825f90066bf78ab36272074b7d51987 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 8 Nov 2020 13:34:24 -0800 Subject: [PATCH 57/61] Correct tag name --- doc/continuous_integration/dockerfile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 9fff215f0c..fa9c281754 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -10,7 +10,7 @@ Further references on writing and building Dockerfiles, such as syntax and tooli * [Dockerfile reference](https://docs.docker.com/engine/reference/builder) * [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) -The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub (e.g. osrf/ros2:nightly, osrf/ros2:foxy), thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. When choosing the parent image, a tradeoff may persist between choosing a larger tag with more than what you need pre-installed (e.g. desktop images), saving time building the image locally, vs. choosing a smaller tag without anything you don't need (e.g. core images), saving time pulling or pushing the image remotely. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. More info on upstream repos on DockerHub can be found here: +The Dockerfiles for this project are built upon parent images from upstream repos on DockerHub (e.g. osrf/ros2:nightly, library/ros2:foxy), thus abbreviating environmental setup and build time, yet written in a parameterized style to remain ROS2 distro agnostic. This keeps them easily generalizable for future ROS2 releases or for switching between custom parent images. When choosing the parent image, a tradeoff may persist between choosing a larger tag with more than what you need pre-installed (e.g. desktop images), saving time building the image locally, vs. choosing a smaller tag without anything you don't need (e.g. core images), saving time pulling or pushing the image remotely. Given the use of multiple build stages, they're consequently best approached by reading from top to bottom in the order in which image layers are appended. More info on upstream repos on DockerHub can be found here: * [ROS Docker Images](https://hub.docker.com/_/ros) * DockerHub repo for official images From e4677ef949cb3b28dda6ca74ead3ab83cb9ec087 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Sun, 8 Nov 2020 14:10:15 -0800 Subject: [PATCH 58/61] Update remarks on ARGs --- doc/continuous_integration/dockerfile.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index fa9c281754..776d2ff69b 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -22,7 +22,7 @@ While the main [`Dockerfile`](/Dockerfile) at the root of the repo is used for d ## Global Arguments -The Dockerfile first declares a number of optional `ARG` values and respective defaults to specify the parent image to build `FROM` and workspace paths. Here the Dockerfiles assume all workspaces are nested within the `/opt` directory. These `ARG`s can be accessed similarly to `ENV`s, but must be declared in a stage's scope before they can be used, and unlike `ENV` only exist at build time of that stage and do not persist in the resulting image. For multi-stage builds, the last stage is what is tagged as the final image. More info on multi-stage builds can be found here: +The Dockerfile first declares a number of optional `ARG` values and respective defaults to specify the parent image to build `FROM` and workspace paths. Here the Dockerfiles assume all workspaces are nested within the `/opt` directory. These `ARG`s can be accessed similarly to `ENV`s, but must be declared in a stage's scope before they can be used, and unlike `ENV` only exist at build time of that stage and do not persist in the resulting image. Despite this scope behavior, we can keep the Dockerfile DRY by specifying default values of `ARG`s only where the are first declared. For multi-stage builds, the last stage is what is tagged as the final image. More info on multi-stage builds can be found here: * [Use multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build) * Optimize while keeping Dockerfiles readable and maintainable @@ -83,7 +83,7 @@ The default entrypoint `ros_entrypoint.sh` inherited from the parent image is th ### Testing Overlay -The overlay may then be optionally tested using the same additional mixins. The results of the test may also be used to optionally fail the entire build; useful if the return code from `docker build` command itself is used as a primitive form of CI, or demonstrating to new contributors on how to locally test pull requests by invoking the colcon CLI. In other terms, failing on test failure may be good for a production system, but practically speaking, CI may be broken on occasionally and these images will still be required for fixing those issues so they must still be deployed. +The overlay may then be optionally tested using the test related `ARG`s. The results of the test may also be used to optionally fail the entire build; useful if the return code from `docker build` command itself is used as a primitive form of CI, or demonstrating to new contributors on how to locally test pull requests by invoking the colcon CLI. In other terms, failing on test failure may be good for a production system, but practically speaking, CI may be broken on occasionally and these images will still be required for fixing those issues so they must still be deployed. ## Buildkit From 62be61161658044788b93d25e08699922bdfc67f Mon Sep 17 00:00:00 2001 From: ruffsl Date: Mon, 9 Nov 2020 11:18:05 -0800 Subject: [PATCH 59/61] Clarify purpose of cacher stage --- doc/continuous_integration/dockerfile.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 776d2ff69b..d60a4a1d2a 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -31,7 +31,9 @@ Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, ## Cacher Stage -A `cacher` stage is then started to gather together the necessary source files to eventually build. A directory for the underlay workspace is then created and populated using `vcs` with the respective `.repos` file that defines the relevant repositories to pull and particular versions to checkout into the source directory. More info on vcstool can be found here: +A `cacher` stage is then declared to gather together the necessary source files to eventually build. This stage deterministically pre-processes input source files to help preserve the docker image layer build cache for subsequent stages. This is achieved by strategically filtering and splitting input artifacts with different degrees of volatility so they may be independently copied from bit-for-bit. + +A directory for the underlay workspace is then created and populated using `vcs` with the respective `.repos` file that defines the relevant repositories to pull and particular versions to checkout into the source directory. More info on vcstool can be found here: * [vcstool](https://github.com/dirk-thomas/vcstool) * CLI for working with multiple repositories easier @@ -44,7 +46,7 @@ Finally the `cacher` stage copies all manifest related files in place within the ## Builder Stage -A `builder` stage is then started to install external dependencies and compile the respective workspaces. Static CI dependencies are first installed before any later potential cache busting directives to optimize rebuilds. These include: +A `builder` stage is then declared to install external dependencies and compile the respective workspaces. Static CI dependencies are first installed before any later potential cache busting directives to optimize rebuilds. These include: * [ccache](https://ccache.dev) * Compiler cache for speeding up recompilation From 2f6504ffa46c941886073ae4e9864a27ab2a0748 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Mon, 9 Nov 2020 11:26:49 -0800 Subject: [PATCH 60/61] Add code snippets --- doc/continuous_integration/dockerfile.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index d60a4a1d2a..603b57e3c8 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -31,6 +31,11 @@ Here the parent image to build `FROM` is set to `osrf/ros2:nightly` by default, ## Cacher Stage +``` Dockerfile +# multi-stage for caching +FROM $FROM_IMAGE AS cacher +``` + A `cacher` stage is then declared to gather together the necessary source files to eventually build. This stage deterministically pre-processes input source files to help preserve the docker image layer build cache for subsequent stages. This is achieved by strategically filtering and splitting input artifacts with different degrees of volatility so they may be independently copied from bit-for-bit. A directory for the underlay workspace is then created and populated using `vcs` with the respective `.repos` file that defines the relevant repositories to pull and particular versions to checkout into the source directory. More info on vcstool can be found here: @@ -46,6 +51,11 @@ Finally the `cacher` stage copies all manifest related files in place within the ## Builder Stage +``` Dockerfile +# multi-stage for building +FROM $FROM_IMAGE AS builder +``` + A `builder` stage is then declared to install external dependencies and compile the respective workspaces. Static CI dependencies are first installed before any later potential cache busting directives to optimize rebuilds. These include: * [ccache](https://ccache.dev) From 643bc089bbd7d8f64a68330543f6871361f50def Mon Sep 17 00:00:00 2001 From: ruffsl Date: Mon, 9 Nov 2020 12:00:18 -0800 Subject: [PATCH 61/61] Expand comments on multistage figure --- doc/continuous_integration/dockerfile.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/continuous_integration/dockerfile.md b/doc/continuous_integration/dockerfile.md index 603b57e3c8..e960456bdb 100644 --- a/doc/continuous_integration/dockerfile.md +++ b/doc/continuous_integration/dockerfile.md @@ -115,6 +115,8 @@ With Buildkit's concurrent dependency resolution, multistage builds become paral ![pipeline](figs/multistage.svg) +Note that stages independent of one another within the DAG represent opportunities where each may be executed in parallel; the colors of which simply denote it's functional purpose, wether it be for installing dependencies, building, or testing a given workspace. Depending upon the build `ARG`s provided or target stage selected when running docker build, the parent image the `cacher` stage builds from can be swapped out, and testing stages can be executed or bypassed as desired. + This composition of stages follows a few basic principles: * Enforce Determinism