Revision 8173e6b531889badd2fdcc88ad9eb9317ced9e3a authored by Thomas Letan on 07 July 2023, 08:37:14 UTC, committed by Thomas Letan on 02 August 2023, 18:25:35 UTC
Octogram is an abstraction layer on top of Tezt’s amazing orchestration
features whose purpose is to provide a scriptable interface to run complex and
large scale scenarios on remote runners.

Scenarios are written in a Yaml file whose structure takes heavy inspiration
from Ansible. As of now, Octogram supports the following features:

  - Define stages expected to run on a subset of the known agents defined by
    regular expressions. These regular expressions can capture part of the
    agent name to personalize each jobs. By default, agents run a stage
    concurrently, but it is also possible to run a stage sequentially on each
    agent.

  - Stages are defined as a collection of jobs which can either be run
    concurrently or sequentially. These jobs consists in executing a specific
    command. As of now, three commands are executed: (1) copy a file from the
    orchestrator to the agent, start a new Octez node on the agent, and (2)
    originate a new smart rollup from within the agent.

    Jobs have access to global variables. They get a copy of them when they are
    started, and they update the latest version of the global variables once
    they have finished to execute.

  - One job can be run several time using the `with_items' field. Each item in
    the list is derived into a unique job, when the `item' variable is
    accordingly set. By default, jobs derived fro a `with_items' field are run
    sequentially, but they can also be run concurrently if necessary. For
    instance, it is possible to concurrently deploy a list of files to an agent
    by listing them in a `with_items' field.

  - Jobs can update the global variables once they have completed. This is
    useful to transfer information over one job to the subsequent ones.

  - Allow cross-agent requests thanks to a global scheme of URI. As of now, it
    is possible to prefix the name of an Octez node chosen by Tezt by the name
    of the agent which manages them. So for instance, if the agent `node' has
    spawn an Octez node whose assigned name is `node1', then `node://node1' can
    be used whenever a node’s endpoint is expected.
1 parent da37bc4
History
File Mode Size
.github
.gitlab
_coverage_output
contrib
devtools
docs
emacs
manifest
michelson_test_scripts
nix
opam
script-inputs
scripts
src
tezt
vendors
.dockerignore -rw-r--r-- 1.2 KB
.gitattributes -rw-r--r-- 369 bytes
.gitignore -rw-r--r-- 1.6 KB
.gitlab-ci.yml -rw-r--r-- 7.6 KB
.npmrc -rw-r--r-- 62 bytes
.ocamlformat -rw-r--r-- 388 bytes
.pylintrc -rw-r--r-- 17.4 KB
CHANGES.rst -rw-r--r-- 16.1 KB
CODEOWNERS -rw-r--r-- 4.7 KB
Dockerfile -rw-r--r-- 4.3 KB
LICENSE -rw-r--r-- 1.3 KB
Makefile -rw-r--r-- 17.6 KB
README.md -rw-r--r-- 3.5 KB
build.Dockerfile -rw-r--r-- 2.8 KB
contributing.md -rw-r--r-- 2.2 KB
default.nix -rw-r--r-- 3.4 KB
dune -rw-r--r-- 903 bytes
dune-project -rw-r--r-- 11.6 KB
dune-workspace -rw-r--r-- 509 bytes
kernels.mk -rw-r--r-- 1.9 KB
package-lock.json -rw-r--r-- 1.7 KB
package.json -rw-r--r-- 345 bytes
poetry.lock -rw-r--r-- 35.9 KB
pyproject.toml -rw-r--r-- 1.0 KB
rust-toolchain -rw-r--r-- 7 bytes
shell.nix -rw-r--r-- 2.9 KB

README.md

back to top