Migrate CI to new-generation compas-actions - #849
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This pull request migrates compas_timber’s CI/CD configuration to the new-generation compas-dev/compas-actions workflows/actions, aligning build, docs, coverage, PR checks, and release automation with the newer monorepo-based setup.
Changes:
- Replaced legacy COMPAS actions and the changelog checker with
compas-dev/compas-actions/*@v1equivalents across CI workflows. - Updated the release process to be PR-driven (
prepare release-> merge tomaintriggers release), and switched PyPI publishing to OIDC Trusted Publishing. - Adjusted invoke/release tooling (
bumpversionno longer commits/tags; removed invoke tasks from the default task collection).
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tasks.py | Removes release/changelog invoke tasks from the default Invoke collection and keeps pre_build. |
| pyproject.toml | Updates bumpversion behavior to avoid commit/tag side effects in the new release flow. |
| CHANGELOG.md | Documents CI/release migration details and the removal of invoke release-related tasks. |
| .github/workflows/build.yml | Migrates PR/push build/test execution to compas-actions/ci@v1 and adds release-merge detection gating. |
| .github/workflows/coverage.yml | Migrates coverage environment setup to compas-actions/setup-python@v1 and updates coverage reporting format. |
| .github/workflows/docs.yml | Migrates docs build to compas-actions/docs@v1 with updated parameters. |
| .github/workflows/pr-checks.yml | Replaces changelog checker with compas-actions/pr-checks@v1 and adds release metadata validation. |
| .github/workflows/release.yml | Reworks release trigger/flow to release-merge detection + prepare/publish/docs via new actions and OIDC PyPI publish. |
| .github/workflows/prepare-release.yml | Adds manual dispatch workflow to open a release PR via compas-actions/release-pr@v1. |
| .github/workflows/yak_publish.yml | Stubs publish_yak on main to preserve dispatchability while preventing incorrect-branch publishing. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
33
to
+35
| - name: Run tests collecting coverage reports | ||
| run: | | ||
| pytest --cov src/compas_timber --cov-report=html | ||
| - name: Run tests collecting coverage reports | ||
| run: pytest --cov src/compas_timber --cov-report=xml --cov-report=term |
Replace compas-actions.build / .docs / .publish and the legacy changelog-checker with the narrow actions from the compas-dev/compas-actions monorepo, following compas_pb. - build/coverage/docs/pr-checks now use ci, setup-python, docs, pr-checks and release-check. - Releases move to the release-PR flow: prepare-release.yml opens a release/vX.Y.Z pull request, and merging it to main drives release.yml (release-check, ci, prepare-release, OIDC publish, github-release, versioned docs deploy). Tag pushes no longer publish. - bump-my-version no longer commits or tags and no longer parses pre-release versions; the release actions accept stable semver only. - Drop the release and prepare-changelog invoke tasks, now owned by the release actions. - Python 3.9 is Rhino 8's Python and stays in the matrix, minus the macos-latest cell: the ci action installs interpreters with actions/setup-python, which has no darwin-arm64 build for 3.9. - publish_yak becomes a guarded stub. Its components and invoke tasks moved to timber_design, but a workflow_dispatch workflow must exist on the default branch to be runnable, and LTS-1.x.x still dispatches it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
compas_timber owns the .proto files under src/compas_timber/proto, which makes it a domain model owner in the compas_pb architecture: the schemas are the source of truth for downstream consumers, and every release is expected to ship them alongside generated bindings for the languages that cannot regenerate them locally. Register compas_pb's create-proto-bundle and create-class-assets tasks and add a release-assets job that runs them. Each release now attaches the schema bundle plus bindings for C++, C#, Java, Objective-C, PHP, Ruby and TypeScript. Python bindings are deliberately absent -- the generated modules already ship inside the wheel. The tasks take their package name and output folder from the invoke configuration, so `package_name` is set to compas_timber (otherwise the assets would be named after compas_pb) and `generated_folder` points at dist/ so the throwaway per-language output never lands in src/. Asset generation gets a job of its own rather than prepare-release's release-assets input. That input ties generation to `invoke pre-build`, which every lint, test and wheel job runs; pre-build stays Python-only so those jobs do not have to provision protoc plugins and node for languages they never build. `publish` now waits on that job too. Publishing to PyPI cannot be undone, so failing to build the assets should stop the release rather than leave a published wheel with no GitHub release beside it. And create-release passes release-assets-artifact-name explicitly: the action defaults it to empty and silently skips the download, so without it the assets would be built and then dropped. Require compas_pb >= 1.2.0, where the asset tasks became reusable. On an older version the create_proto_bundle import fails at module scope and takes every invoke task down with it. Note that the generated bindings reference compas_pb's own bindings by relative path rather than embedding them, so a consumer unpacks both bundles into one tree at matching versions. Co-Authored-By: Claude Opus 5 <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.
Migrates compas_timber to the new generation of CI actions added in https://github.com/compas-dev/compas-actions
What type of change is this?
Checklist
Put an
xin the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.CHANGELOG.mdfile in theUnreleasedsection under the most fitting heading (e.g.Added,Changed,Removed).invoke test).invoke lint).compas_timber.datastructures.Beam.class_diagrams.rst(if appropriate).