Skip to main content

Python DSL for programmatically building Concourse CI/CD pipelines

Project description

ol-concourse-lib

A Python DSL for programmatically building Concourse CI/CD pipelines.

Instead of writing YAML files by hand, use typed Python classes to construct type-safe pipeline definitions that serialize to valid Concourse pipeline YAML.

Installation

pip install ol-concourse-lib
# or with Pulumi job builder support:
pip install "ol-concourse-lib[pulumi]"

Quick Start

from ol_concourse.lib.models.pipeline import Identifier
from ol_concourse.lib.resources import git_repo, registry_image
from ol_concourse.lib.resource_types import packer_build
from ol_concourse.lib.jobs.infrastructure import packer_jobs
import yaml, json

# Build a pipeline fragment for packer AMI builds
code = git_repo(
    name=Identifier("packer-templates"),
    uri="https://github.com/myorg/packer-templates",
    branch="main",
)

fragment = packer_jobs(
    dependencies=[],
    image_code=code,
    node_types=["web", "worker"],
)

pipeline = fragment.to_pipeline()
print(yaml.dump(json.loads(pipeline.model_dump_json())))

API

Models (ol_concourse.lib.models)

  • Pipeline — root pipeline definition
  • Job, Resource, ResourceType — core pipeline components
  • GetStep, PutStep, TaskStep, InParallelStep — step types
  • TaskConfig, Command, Input, Output — task configuration
  • PipelineFragment — composable pipeline unit

Builder Functions

Module Functions
ol_concourse.lib.resources git_repo, registry_image, github_issues, schedule, s3_object, …
ol_concourse.lib.resource_types packer_build, packer_validate, pulumi_provisioner_resource, github_issues_resource, github_deployments_resource, release_resource_type, …
ol_concourse.lib.jobs.infrastructure packer_jobs, pulumi_jobs_chain, pulumi_job
ol_concourse.lib.containers container_build_task
ol_concourse.lib.notifications notification (Slack)
ol_concourse.lib.tasks instance_refresh_task, block_for_instance_refresh_task

Regenerating Pipeline Models

models/pipeline.py is generated from the Concourse pipeline JSON schema:

pip install datamodel-code-generator
datamodel-codegen \
    --url https://raw.githubusercontent.com/nicholasdille/concourse-jsonschema/main/concourse.json \
    --output src/ol_concourse/lib/models/pipeline.py \
    --output-model-type pydantic_v2.BaseModel

License

BSD-3-Clause — Copyright MIT Open Learning

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ol_concourse-0.8.10.tar.gz (47.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ol_concourse-0.8.10-py3-none-any.whl (48.8 kB view details)

Uploaded Python 3

File details

Details for the file ol_concourse-0.8.10.tar.gz.

File metadata

  • Download URL: ol_concourse-0.8.10.tar.gz
  • Upload date:
  • Size: 47.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for ol_concourse-0.8.10.tar.gz
Algorithm Hash digest
SHA256 2a0b2618da34ea400dc68ec57241844f00b446f0ada1ed983e0a076928c8b6fe
MD5 4239cc72e409e77c7b1751862e7a0cf5
BLAKE2b-256 69d2a211c3a06d1916d08d88a4311be62acc9eeba9ea4f3797bcc9e75022981d

See more details on using hashes here.

File details

Details for the file ol_concourse-0.8.10-py3-none-any.whl.

File metadata

  • Download URL: ol_concourse-0.8.10-py3-none-any.whl
  • Upload date:
  • Size: 48.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for ol_concourse-0.8.10-py3-none-any.whl
Algorithm Hash digest
SHA256 1c256a6943c99a136d2aa9b51c68fb3d2156b905b89f2b8ba39b4b4e749af6dc
MD5 b2a0998fca5d7a27c8cd8ceb5fcc8d39
BLAKE2b-256 fd76f8cfe31a5abcf8b0265a229815600de6b8c45a54a5c3497be642ccd053b8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page