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 definitionJob,Resource,ResourceType— core pipeline componentsGetStep,PutStep,TaskStep,InParallelStep— step typesTaskConfig,Command,Input,Output— task configurationPipelineFragment— 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, … |
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
Release history Release notifications | RSS feed
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.6.0.tar.gz
(38.1 kB
view details)
File details
Details for the file ol_concourse-0.6.0.tar.gz.
File metadata
- Download URL: ol_concourse-0.6.0.tar.gz
- Upload date:
- Size: 38.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
688d7509810dcda0d1c588e1065462f5bac03a73a4e3ad4b882483aee17a3ef5
|
|
| MD5 |
aa54118020a23fcd892e12dcf7edee3a
|
|
| BLAKE2b-256 |
959fe361c4e8379ed963da837930313df47ad3115b3ef563191b0690c9e7d7b5
|