Flight plan - Plan your Concourse Pipeline with ease
AWS CDK like tool to code Concourse pipelines (with autocompletion.)
Why not stick with YAML
Writing YAML files feels not as heavy as XML, but still lacks the comfort of autocompletion and some kind of structuring (Beside anchors or tools like YTT).
The vision of Flightplan does not stop with replacing YAML, the real benefit starts with component libraries, which ease the setup of pipelines.
Furthermore these components can be updated, which make all improvements automatically available to all pipelines.
Features
- Convert:
- YAML -> Python
- Python -> YAML
- Fly integration
- Set pipeline
- Get pipeline
- Shiped examples
- Hello world
- more to come
Disclaimer - Alpha
The package is still in alpha. Upcoming versions may include breaking changes.
Upcoming
- Provide high level components that handle common use cases
Setup
Flightplan requires Python 3.8 and higher.
Install FlightPlan
Flightplan requires fly to be installed on path.
pip3 install flightplan
Usage
If you start with Flightplan it is recommended to have a look on the quickstart examples, which are shipped within the cli.
If you want to migrate an existing pipeline you can use
fp import- to convert YAML to Pythonfp get ...- to get and convert a running pipeline
Quickstart
Generate a basic pipeline example.
fp quickstart
Import existing pipeline file
Convert a pipeline yaml and render a flightplan .py file.
fp import <src.yaml> <target.py>
Import existing pipeline from fly
Convert a pipeline from fly and render a flightplan .py file.
fp get <fly_target> <pipeline_name> <target.py>
Static and dynamic vars will be imported as
Var(str), if the type of the field is limited to an int or Enum type.
Synthesize yaml from flightplan .py file
fp synth <src.py> <target.yaml>
Direct Fly Set Pipeline
fp set <fly-target> <pipeline_name> <src.py>
Examples
Quickstart hello world example:
from flightplan.render import *
pipe = Pipeline(
resource_types=[],
resources=[],
jobs=[
Job(
name="job-hello-world",
public=True,
plan=[
Task(
task="hello-world",
config=TaskConfig(
platform="linux",
image_resource=ImageResource(
type="docker-image",
source=dict(repository="busybox", tag="latest"),
),
run=Command(path="echo", args=["hello world"]),
inputs=[],
outputs=[],
),
)
],
)
],
)
if __name__ == "__main__":
print(pipe.synth())
Metadata
Release files for flightplan 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| flightplan-0.1.2.tar.gz | 9.5 kB | Without provenance | Details for flightplan-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| flightplan-0.1.2-py3-none-any.whl | Python 3 | none | any | Details for flightplan-0.1.2-py3-none-any.whl |
Total release size: 20.3 kB
Release files / flightplan-0.1.2.tar.gz
| Download URL | flightplan-0.1.2.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
90d94540c50e126e994d84027959381d36c486eb536e42d9c4d6a1d881f26633
|
|
BLAKE2b-256 checksum How to use checksums |
f319bcb788d967d2647709e49a6c24aa6a63db73b43d3a1b70ae45d36845b5b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.4 CPython/3.9.1 Darwin/19.6.0
|
Release files / flightplan-0.1.2-py3-none-any.whl
| Download URL | flightplan-0.1.2-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c16f3a90fb68eb90579f9ec3d7e29c51a3e97fbe5d871e8fc6f8cc74d767ac08
|
|
BLAKE2b-256 checksum How to use checksums |
3289ce03eea6a5eb07f830ebc97e21741ba66fca135cfd0075b35308176c49b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.4 CPython/3.9.1 Darwin/19.6.0
|
Security for flightplan 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.