Skip to content

Latest commit

 

History

History
89 lines (69 loc) · 3.47 KB

development.md

File metadata and controls

89 lines (69 loc) · 3.47 KB

Development

The module requires Go 1.27.2 or newer. Build all four executables with:

make build
bin/livepeer version
bin/livepeer orchestrator --help
bin/livepeer completion orchestrator bash

Releases

Set the VERSION file to the next MAJOR.MINOR.PATCH number without a v prefix, leading zeroes, prerelease suffix, or build metadata. Commit it, then run the release helper with the Git remote name:

./release.sh github

The helper creates and pushes a vMAJOR.MINOR.PATCH tag. Release tags cannot be updated or deleted, and published releases are immutable. The Release workflow on GitHub publishes bundles after CI and packaging tests pass. To test packaging before tagging, run Release manually from GitHub Actions; manual runs save artifacts without publishing a release.

Checks

go test -race ./...
go vet ./...
go build ./...

CI also runs Staticcheck and Govulncheck, provisions the SDK fixtures below, and saves test artifacts. Import boundaries are checked by TestImportLattice in cmd/livepeer/imports_test.go.

SDK integration fixtures

Integration tests use these pinned revisions:

SDK Revision Environment variable
Go: livepeer/golang-runner c3be5a14a91f8a3437133419becaced324d804fe GO_RUNNER_SDK_DIR
Python: livepeer/livepeer-python-gateway 44df06157fcdb864e37d971e8caba86b2a7dc92e PYTHON_RUNNER_SDK_DIR

Use clean checkouts at those revisions. To provision fresh fixtures in a temporary directory (requires Git, Python 3.12, and uv):

livepeer_fixture_dir=$(mktemp -d)
export GO_RUNNER_SDK_DIR="$livepeer_fixture_dir/golang-runner"
export PYTHON_RUNNER_SDK_DIR="$livepeer_fixture_dir/livepeer-python-gateway"
git clone https://github.com/livepeer/golang-runner.git "$GO_RUNNER_SDK_DIR"
git -C "$GO_RUNNER_SDK_DIR" checkout --detach c3be5a14a91f8a3437133419becaced324d804fe
git clone https://github.com/livepeer/livepeer-python-gateway.git "$PYTHON_RUNNER_SDK_DIR"
git -C "$PYTHON_RUNNER_SDK_DIR" checkout --detach 44df06157fcdb864e37d971e8caba86b2a7dc92e
uv sync --project "$PYTHON_RUNNER_SDK_DIR" --locked --no-dev --python 3.12
export PYTHON_RUNNER_PYTHON="$PYTHON_RUNNER_SDK_DIR/.venv/bin/python"
go test -race ./...

Without explicit paths, tests look for sibling golang-runner and python-runner checkouts and the Python checkout's .venv/bin/python. SDK coverage can be skipped when the checkouts or dependencies are absent, so read the test logs before reporting a compatibility result. Python fixtures normally export the committed SDK tree. Set PYTHON_RUNNER_USE_WORKING_TREE=1 to exercise local SDK edits.

The fixtures cover persistent and single-shot sessions, proxy modes, discovery, runner callbacks, Trickle, and Python media/control round trips. Payment tests cover live/fixed calls, sustained refresh, payer exposure, concurrent liability, and crash/reorg/finality handling with deterministic Ethereum interfaces. These do not replace staging against real contracts.

CLI and wire snapshots

Refresh CLI help and completion snapshots after an intentional interface change:

UPDATE_CLI_GOLDENS=1 go test ./cmd/livepeer -run TestRealBinaryOffchainFlow

Review the resulting diff. Payment Protobuf fixtures are produced by the pinned Python SDK; codec tests compare selected-field decoding with the generated runtime. See the HTTP API reference.