JiggyPlaybookLinter
Description
Use Jiggy? Want to validate your playbook before deploying a pipeline?
jpl or the JiggyPlaybookLinter allows you to validate your JiggyPlaybook outside of an execution.
Installation
From Source
$ git clone https://github.com/thejig/jpl.git
$ cd jpl
$ python3.7 -m venv venv
$ source venv/bin/activate
$ pip install -e .
From Build
$ pip install jpl
Usage
Via CLI
jplhas a CLI for easy usage
$ jpl --help
Usage: jpl [OPTIONS]
Click CLI entrypoint to run JiggyPlaybookLint.
CLI Args:
-v --verbose: Run `jpl` with verbosity.
-s --skip: Skip "PASSED" rules in JiggyPlaybookLint Report.
-p --playbook: Location of JiggyPlaybook to lint.
Returns:
click.echo - `with style`
Options:
-v, --verbose Run `jpl` with verbosity.
-s, --skip Skip `PASSED` rules in jpl report
-p, --playbook TEXT Filepath to Jiggy Playbook [required]
--help Show this message and exit.
A minimal test case
$ jpl -v -p examples/jiggy-playbook.yml
__ ______ __
/\ \ /\ == \ /\ \
_\_\ \ \ \ _-/ \ \ \____
/\_____\ \ \_\ \ \_____\
\/_____/iggy \/_/laybook \/_____/inter
[F01] FunctionSourceExists - get-weekday: FAILED Declared path to function: `examples.utils.dates.GetWeekdayTask` does not exist.
Via python client with .validate()
import jpl
>>> client = jpl.JiggyPlaybookLint(path="path/to/playbook")
>>> result = client.validate()
The validate() method will return a tuple
The tuple denotes the validity of the playbook and the failing rules as JiggyRule objects
(False, [<JiggyRule: F01>, <JiggyRule: F01>, <JiggyRule: F01>, <JiggyRule: F01>, <JiggyRule: F01>, <JiggyRule: F01>])
Overview
A JiggyPlaybook is broken down into chunks
-
Playbook
- The entire
.ymlconstitutes the "playbook"
- The entire
-
Pipeline
- The key
pipelineincluding alltasksconstitutes the "pipeline"
- The key
-
Task
- Tasks are chunks of a pipeline having the below attributes:
namedescriptionfunctionwhich containssource,params,outputrequires
- Tasks are chunks of a pipeline having the below attributes:
name: Hello, world!
author: me@jiggy.dev
description: Show off the usage of jpl
version: 0.0.1
pipeline:
runner: sequential
secrets:
location: examples/secrets/.env-example
source: jiggy.EnvSecrets
tasks:
- name: print-something
description: Print something
function:
source: examples.utils.string_manipulation.PrintThis
params:
- type: str
value: 'THIS PIPELINE IS GREAT'
output: null
requires: null
Rules
Etymology:
JiggyRule - JiggyRule.rule consists of 3 characters (i.e.) X01
-
X: (char) - letter describes corresponding ruleset
-
0: (digit) - incrementing based on third digit
-
0: (digit) - incrementing
Examples:
Rule: PlaybookHasName
- rule.rule = I (info) 0 (base 10) 1 (rule number 1)
Rule: PipelineHasDescription
- rule.rule = P (pipeline) 0 (base 10) 1 (rule number 1)
Release files for jpl 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jpl-0.0.3.tar.gz | 10.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jpl-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.9 kB
Release files / jpl-0.0.3.tar.gz
| Download URL | jpl-0.0.3.tar.gz |
|---|---|
| Size | 10.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3b9e6b6bb8cea4a7f12aec6ada6a44145a42be0d4439626548f808f0f21fd9ed
|
|
BLAKE2b-256 checksum How to use checksums |
f2fe9d31e5afc9616bee11cdbfda0a29a2d38451173b46b27ff41146ee74216f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.0
|
Release files / jpl-0.0.3-py3-none-any.whl
| Download URL | jpl-0.0.3-py3-none-any.whl |
|---|---|
| Size | 12.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d23b83f3c34b0530c2404f7002bf3b8e71ce840f4547f47fed8abe8fab8ffb8
|
|
BLAKE2b-256 checksum How to use checksums |
d1aeb6b1031a6cba5b683c2df092c396e58ade9314a67beffdaf6d44e6cfdf00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.0
|