Add OIDC release automation, grouped Dependabot, and CI coverage#23
Merged
jackparnell merged 1 commit intomainfrom Apr 9, 2026
Merged
Add OIDC release automation, grouped Dependabot, and CI coverage#23jackparnell merged 1 commit intomainfrom
jackparnell merged 1 commit intomainfrom
Conversation
Ports the same release infra we set up on colony-sdk-python and
crewai-colony, plus adds Codecov coverage reporting which langchain-
colony's previous CI lacked entirely.
git tag vX.Y.Z && git push origin vX.Y.Z
triggers .github/workflows/release.yml, which runs the test suite
(via pip install -e .[dev,async]), builds wheel + sdist, publishes
to PyPI via short-lived OIDC tokens (no API token stored anywhere),
and creates a GitHub Release with the matching CHANGELOG section as
release notes.
Differences from the colony-sdk-python and crewai-colony versions:
- Test job uses `pip install -e ".[dev,async]"` so it picks up the
langchain ecosystem deps, dev tooling, AND the async extra (which
brings httpx so test_async_native.py can exercise the full stack).
- Version-tag check verifies ONLY pyproject.toml (langchain-colony
uses `importlib.metadata.version("langchain-colony")` to derive
__version__ at import time, so pyproject.toml is the single source
of truth — no second file to keep in sync, unlike crewai-colony
which had to verify both pyproject.toml AND src/.../__init__.py).
- The CHANGELOG-section awk extractor matches the langchain-colony
heading format `## X.Y.Z (YYYY-MM-DD)` (with parens), not the
`## X.Y.Z — YYYY-MM-DD` format used by the other two repos.
CI changes:
- Test job now installs with `[dev,async]` extras + `pytest-cov`.
- 3.12 job runs `pytest --cov=langchain_colony --cov-report=xml` and
uploads to Codecov via `codecov-action@v6`.
- Other Python versions still run plain `pytest -v`.
- `test_async_native.py` now runs on every CI build (it requires
httpx, which the [async] extra brings).
dependabot.yml: pip + github-actions, weekly Monday, grouped into
single PRs per ecosystem (verbatim from colony-sdk-python).
Configuring the PyPI Trusted Publisher for langchain-colony is a
separate one-time external step that happens before the first tag
push. The PR description tracks the steps.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ports the same release infra we set up on
colony-sdk-pythonandcrewai-colony, plus adds Codecov coverage reporting which langchain-colony's previous CI lacked entirely.After this PR + a one-time PyPI Trusted Publisher configuration, cutting a release is:
The release workflow then:
pip install -e ".[dev,async]"+ruff check+ruff format --check+pytestpython -m buildpyproject.toml(fails the build if they disagree)dist/*Files
.github/workflows/release.yml(new) — tag-triggered, four jobs (test → build → publish → github-release). Adapted from colony-sdk-python:[dev,async]extras (so it picks up langchain + httpx)pyproject.toml(langchain-colony usesimportlib.metadatafor__version__, so there's no second file to keep in sync — unlike crewai-colony which had to verify both)## X.Y.Z (YYYY-MM-DD)heading format with parens, not the—form used by the other two repos.github/dependabot.yml(new) — pip + github-actions, weekly Monday, grouped into single PRs per ecosystem (verbatim from colony-sdk-python).github/workflows/ci.yml(modified) — now installs with[dev,async]extras, runspytest-covon the 3.12 job, and uploads coverage viacodecov-action@v6. Other Python versions still run plainpytest -v.test_async_native.pynow runs on every CI build (it requireshttpx, which the[async]extra brings — previously CI didn't install it).Out of band: PyPI Trusted Publisher
PyPI Trusted Publishers must be configured on the PyPI side before the first tag push. I'll do that immediately after this PR merges (Playwright web automation against pypi.org, same flow we used for
colony-sdk-pythonandcrewai-colony):langchain-colonyTheColonyCClangchain-colonyrelease.ymlpypiIf the publisher isn't configured, the
publishjob will fail with a clear error frompypa/gh-action-pypi-publishand the release stops there — nothing else is harmed.Test plan
python3 -c \"import yaml; yaml.safe_load(...)\"— all three YAML files validpyproject.toml(0.5.0)## 0.5.0 (2026-04-08)heading — extracts the correct sectionThis is the last infra PR before v0.6.0. Once it's merged + the PyPI publisher is configured, I'll bump pyproject.toml to 0.6.0, finalise CHANGELOG, and tag.
🤖 Generated with Claude Code