1 dinobuildr Architecture
Vanessa White редактировал(а) эту страницу 2018-12-26 14:15:31 -08:00

In this document we'll try to explain how dinobuildr operates.

Basics: dinobuildr files

dinobuildr's key components are the following:

  • dinobuildr.sh
  • dino_engine.py
  • /resources/
  • *_manifest.json

dinobuildr.sh

The dinobuildr.sh shell script is the one file that is required at build time on an end system. Running the shell script will curl down dino_engine.py file from Github and will default to the "master" branch and the production_manifest.json file, then run dino_engine.py. It can accept parameters for the Github branch that should be used and the *_manifest file that should be referenced by dino_engine.py.

dino_engine.py

dino_engine.py is the main workhorse behind dinobuildr. It contains all of the definitions for how to handle the various specified actions contained within the *_manifest.json file, and performs those operations in the order specified by the manifest. It also prints the status/results to stdout.

In its current state it understands how to handle the following operations:

  • downloading files from Github and the Internet
  • running bash scripts
  • installing pkg files
  • installing files from dmg files
  • installing mobileconfig files
  • verifying file hashes

/resources/

The /resources/ folder contains scripts, config files, and other supplementary files that are specified within the *_manifest.json file associated with a specific build.

*_manifest.json

The *_manifest.json files contain the operating instructions that dino_enine.py uses to build out dinobuildr. The operations listed in the manifest are run in order by dino_engine.py which can be extremely critical to ensuring that the build finishes without errors.