Skip to content

ci: shared CI checks across the SDK repositories #11

Open

Description

@pimlock

Tracking issue for CI checks that every SDK repository (sdk-go, sdk-python, sdk-typescript) should run the same way. Each item below gets its own issue or PR when we pick it up. When a check changes, it changes in all SDK repositories.

License headers

Decision (from the discussion on #3): new files need only the license identifier, in the file's comment syntax:

# SPDX-License-Identifier: Apache-2.0
  • New files don't need SPDX-FileCopyrightText. Downstream pipelines read the identifier, so we keep that line. The copyright line isn't required.
  • Existing headers keep their SPDX-FileCopyrightText line. Don't remove or rewrite it, including in files imported from core.
  • Files that can't hold comments, such as JSON, get a REUSE-style <file>.license sidecar with the same line. tests/fixtures/oauth-client-credentials.json.license already does this.
  • Generated code is excluded, for example src/openshell/_proto here and the generated Go bindings in sdk-go.

Today:

  • Neither sdk-go nor sdk-python checks headers. The imported files all carry both lines.
  • Core's checker (scripts/update_license_headers.py, mise run license:check) requires and writes the copyright line too, so we can't reuse it as-is.
  • reuse lint also requires a copyright notice for every file, so it doesn't fit this policy without changes.

Proposal: add a small license:check task to each repository, run from mise run ci. It fails when a tracked source file has no SPDX-License-Identifier: Apache-2.0 line in its first few lines or in a sidecar. It neither requires nor rejects SPDX-FileCopyrightText. Document the rule in each repository's contributing notes.

  • sdk-python
  • sdk-go
  • sdk-typescript

Other candidates

Each needs a decision on whether it belongs here.

Where shared pieces live

For now each repository keeps its own copy, as with the core sync automation. If the copies start drifting, move them to reusable workflows or a composite action in one org repository, and track that here.

Activity

  1. self-assigned this
    on Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions