Skip to content

Migrate CI to new-generation compas-actions - #849

Merged
chenkasirer merged 2 commits into
mainfrom
newgen_ci
Aug 19, 2026
Merged

Migrate CI to new-generation compas-actions#849
chenkasirer merged 2 commits into
mainfrom
newgen_ci

Conversation

@chenkasirer

Copy link
Copy Markdown
Contributor

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?

  • Bug fix in a backwards-compatible manner.
  • New feature in a backwards-compatible manner.
  • Breaking change: bug fix or new feature that involve incompatible API changes.
  • Other (e.g. doc update, configuration, etc)

Checklist

Put an x in 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.

  • I added a line to the CHANGELOG.md file in the Unreleased section under the most fitting heading (e.g. Added, Changed, Removed).
  • I ran all tests on my computer and it's all green (i.e. invoke test).
  • I ran lint on my computer and there are no errors (i.e. invoke lint).
  • I added new functions/classes and made them available on a second-level import, e.g. compas_timber.datastructures.Beam.
  • I have added tests that prove my fix is effective or that my feature works.
  • I have added necessary documentation, including updating class_diagrams.rst (if appropriate).

Copilot AI lite review requested due to automatic review settings August 18, 2026 15:08

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/*@v1 equivalents across CI workflows.
  • Updated the release process to be PR-driven (prepare release -> merge to main triggers release), and switched PyPI publishing to OIDC Trusted Publishing.
  • Adjusted invoke/release tooling (bumpversion no 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

@gonzalocasas gonzalocasas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Base automatically changed from merge_pb to main August 19, 2026 14:34
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>
@chenkasirer
chenkasirer merged commit ab12122 into main Aug 19, 2026
9 checks passed
@chenkasirer
chenkasirer deleted the newgen_ci branch August 19, 2026 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants