Skip to content

ci/cd: modernize release pipeline and switch project versioning to setuptools_scm#299

Open
mxamin wants to merge 1 commit intolericson:masterfrom
mxamin:improve-ci-cd
Open

ci/cd: modernize release pipeline and switch project versioning to setuptools_scm#299
mxamin wants to merge 1 commit intolericson:masterfrom
mxamin:improve-ci-cd

Conversation

@mxamin
Copy link
Copy Markdown

@mxamin mxamin commented Feb 18, 2026

  • Reworked CD workflow in .github/workflows/cd.yml:

    • Added workflow concurrency controls and default least-privilege permissions.
    • Added a dedicated sdist build job using Python 3.14 with memcached service validation.
    • Added dynamic wheel matrix generation using cibuildwheel build identifiers.
    • Switched wheel builds to pypa/cibuildwheel action and per-target artifact naming.
    • Updated checkout/setup actions and Linux QEMU setup for broader architecture support.
    • Ran tests using generated wheel artificat
    • Reworked release job to download merged wheel/sdist artifacts and publish draft GitHub releases.
    • Removed legacy artifact zip packaging flow and old action versions.
  • Updated CI workflow in .github/workflows/ci.yml:

    • Normalized trigger syntax for push and pull_request events.
    • Extended test matrix with Python 3.14.
    • Upgraded checkout/setup-python action versions and enabled tag fetching.
    • Removed obsolete LIBMEMCACHED_VERSION environment usage.
  • Introduced pyproject.toml build configuration:

    • Added setuptools build-system metadata with setuptools_scm integration.
    • Configured setuptools_scm to write src/pylibmc/_version.py and disable local version suffixes.
    • Added cibuildwheel global config, per-platform arch settings, and platform-specific dependency install overrides.
  • Updated packaging/runtime integration:

    • setup.py now uses SCM-derived versions (use_scm_version + setup_requires).
    • src/pylibmc/init.py now prefers generated package version with extension version fallback.
    • Added setuptools_scm to requirements_test.txt.
    • Added src/pylibmc/_version.py to .gitignore.
    • Made bin/runtests.py shebang interpreter-agnostic by using "python" instead of "python3".

…tuptools_scm

- Reworked CD workflow in .github/workflows/cd.yml:
  - Added workflow concurrency controls and default least-privilege permissions.
  - Added a dedicated sdist build job using Python 3.14 with memcached service validation.
  - Added dynamic wheel matrix generation using cibuildwheel build identifiers.
  - Switched wheel builds to pypa/cibuildwheel action and per-target artifact naming.
  - Updated checkout/setup actions and Linux QEMU setup for broader architecture support.
  - Ran tests using generated wheel artificat
  - Reworked release job to download merged wheel/sdist artifacts and publish draft GitHub releases.
  - Removed legacy artifact zip packaging flow and old action versions.

- Updated CI workflow in .github/workflows/ci.yml:
  - Normalized trigger syntax for push and pull_request events.
  - Extended test matrix with Python 3.14.
  - Upgraded checkout/setup-python action versions and enabled tag fetching.
  - Removed obsolete LIBMEMCACHED_VERSION environment usage.

- Introduced pyproject.toml build configuration:
  - Added setuptools build-system metadata with setuptools_scm integration.
  - Configured setuptools_scm to write src/pylibmc/_version.py and disable local version suffixes.
  - Added cibuildwheel global config, per-platform arch settings, and platform-specific dependency install overrides.

- Updated packaging/runtime integration:
  - setup.py now uses SCM-derived versions (use_scm_version + setup_requires).
  - src/pylibmc/__init__.py now prefers generated package version with extension version fallback.
  - Added setuptools_scm to requirements_test.txt.
  - Added src/pylibmc/_version.py to .gitignore.
  - Made bin/runtests.py shebang interpreter-agnostic by using "python" instead of "python3".
@mxamin
Copy link
Copy Markdown
Author

mxamin commented Mar 9, 2026

@lericson Can you take a look when you have time?

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.

1 participant