Skip to main content

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 Python
  • fp 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)

Source distribution for flightplan 0.1.2
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)

Table of built distributions (wheels) for flightplan 0.1.2
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page