From f7386ad375212a406dc11cd4050b10cbd77f7a42 Mon Sep 17 00:00:00 2001 From: Vikram Karve <85881329+vkarve-chef@users.noreply.github.com> Date: Tue, 27 Dec 2022 13:01:04 +0530 Subject: [PATCH] Initial diagram and developer doc (#1093) * Sequence diagram for build process * Developer overview of build process Co-authored-by: Kanad Kumar Signed-off-by: Vikram Karve --- docs/Overview.md | 30 ++++++++++++++++++++++ docs/Sequence Diagram - Omnibus Build.pdf | Bin 0 -> 43956 bytes 2 files changed, 30 insertions(+) create mode 100644 docs/Overview.md create mode 100644 docs/Sequence Diagram - Omnibus Build.pdf diff --git a/docs/Overview.md b/docs/Overview.md new file mode 100644 index 000000000..25640af14 --- /dev/null +++ b/docs/Overview.md @@ -0,0 +1,30 @@ +# Developer's Guide to Omnibus + +## Overview + +Omnibus is a command-line tool that helps you define and create trusted OS native packages for software that you want to distribute. Read more about omnibus [here](https://github.com/chef/omnibus/blob/main/README.md). + +## Development setup + +To setup omnibus for development- +1. Fork and clone the [omnibus repository](https://github.com/chef/omnibus) in GitHub. +1. Ensure you have a recent version of Ruby installed on your system. +1. Run `bundle install` in the repository directory. +1. You will now have the `omnibus` command available in the `./bin` directory. + +## Execution Flow + +When `omnibus build ` is run, the execution sequence is as illustrated [here](./Sequence%20Diagram%20-%20Omnibus%20Build.pdf). An omnibus project typically includes one or more dependency software definitions. Common reusable software definitions can be referred from the [omnibus-sotware](https://github.com/chef/omnibus-software) repository. The project specific build steps are defined in a counterpart software definition of the same name, in a `build do ... end` block. + +A summary of steps run during project build +1. The client (typically the CLI) loads the project +1. Project 'load' involves loading all software dependency definitions. +1. The 'load' step parses necessary metadata to help determine software source, license information and to apply project specific overrides. +1. Once all software dependencies are successfully loaded for the current OS, the 'build' step commences. +1. The 'build' step is composed of these sub-steps + * Based on software definition parsed in the 'load' step, license check is run to ensure that the build adheres to relevant terms in dependencies used. + * After license check is successful, the software source is downloaded or pulled from cache. + * Each software dependency is built in the order specified across all the definitions. Pre-built binaries may be pulled from cache. + * Apart from Windows, on Linux, macOS and other OSes, a health check is run to verify no external or system libraries are linked. + * Once all binaries are ready as part of the payload, the OS native installer package is created and signed. + * An optional compression step optimizes and 'beautifies' the installer package. diff --git a/docs/Sequence Diagram - Omnibus Build.pdf b/docs/Sequence Diagram - Omnibus Build.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ce4182b4023258aa2756606a1c038c7e676c50fb GIT binary patch literal 43956 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 MQpsv-v#Xo`0%OFd`v3p{ literal 0 HcmV?d00001