Skip to content

CorvidLabs/fledge-lanes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fledge-lanes

A collection of example fledge lane configurations for common project types.

Each directory contains a fledge.toml with fully-documented tasks, lanes, parallel groups, dependencies, and fail-fast settings.

Available Lanes

Path Description
rust-ci/ Rust CI — fmt, clippy, test, release build with parallel fmt+lint
node-ci/ Node.js / TypeScript CI — lint, typecheck, test, production build
release/ Release lane — version bump, changelog, git tag, npm publish, push
docker/ Docker build + push — lint Dockerfile, build, test image, push to registry
python/ Python — lint (ruff), format (ruff), typecheck (mypy), test (pytest)
node-typescript/ Node/TypeScript — build (tsc), lint (eslint), format (prettier), test (vitest)
rust/ Rust — clippy, test, fmt, build, release
go/ Go — vet, test, build, staticcheck

Importing Lanes

Search for lanes

fledge lane --search

This searches GitHub for repos tagged with the fledge-lane topic and lists available lane collections.

Import a specific lane

# Import by repo and path
fledge lane --import CorvidLabs/fledge-lanes/rust

# Import into current project's fledge.toml
fledge lane --import CorvidLabs/fledge-lanes/python

Imported lanes are merged into your project's fledge.toml. Existing tasks/lanes with the same name are not overwritten unless you pass --force.

Manual import

Copy the relevant fledge.toml into your project and adjust commands to match your toolchain:

curl -sL https://raw.githubusercontent.com/CorvidLabs/fledge-lanes/main/rust/fledge.toml \
  >> fledge.toml

Lane Concepts

Tasks

Tasks are the building blocks — named shell commands with optional dependencies, environment variables, and working directories:

[tasks.test]
cmd = "cargo test"
description = "Run test suite"

[tasks.build]
cmd = "cargo build --release"
deps = ["test"]  # test runs before build

Short-form tasks (just a command string) are also supported:

[tasks]
fmt  = "cargo fmt --check"
lint = "cargo clippy -- -D warnings"

Lanes

Lanes compose tasks into pipelines:

[lanes.ci]
description = "Full CI pipeline"
fail_fast = true
steps = [
  { parallel = ["fmt", "lint"] },  # run concurrently
  "test",                            # sequential step
  "build",
]

Parallel groups

Wrap multiple task names in { parallel = [...] } to run them concurrently on separate threads:

steps = [
  { parallel = ["lint", "typecheck", "fmt"] },  # all run at the same time
  "test",                                          # waits for the group to finish
]

Fail-fast

  • fail_fast = true (default) — stop at first failure
  • fail_fast = false — run all steps, collect and report all failures at the end
[lanes.audit]
description = "Surface all issues, not just the first one"
fail_fast = false
steps = ["security-check", "license-audit", "dependency-scan"]

Inline commands

For one-off commands that don't need a named task:

steps = [
  { run = "echo Running CI..." },
  "test",
  { run = "echo Done!" },
]

Task dependencies

Dependencies are declared on tasks, not lanes. When a lane runs a task, its deps run first automatically:

[tasks.publish]
cmd  = "cargo publish"
deps = ["build-release"]  # build-release runs before publish, always

[lanes.release]
steps = ["publish"]  # fledge resolves: build-release -> publish

Contributing

PRs welcome for other languages or frameworks. Tag your repo with fledge-lane to make it discoverable via fledge lane --search.

About

Example fledge lanes for Python, Node/TypeScript, Rust, and Go projects

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors