Skip to content

Use same name fo build dir and upload artifact #32

Use same name fo build dir and upload artifact

Use same name fo build dir and upload artifact #32

Workflow file for this run

name: Create library release archives, create a GH release and publish PyPI wheel and sdist on tag in main branch
# This is executed automatically on a tag in the main branch
# Summary of the steps:
# - build wheels and sdist
# - upload wheels and sdist to PyPI
# - create gh-release and upload wheels and dists there
# TODO: smoke test wheels and sdist
# TODO: add changelog to release text body
# WARNING: this is designed only for packages building as pure Python wheels
on:
workflow_dispatch:
push:
tags:
- "v*.*.*"
jobs:
build-wheels:
name: Build unicode wheels ${{ matrix.type }} ${{ matrix.arch }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest]
arch: [auto64]
build: ["cp{39,310,311,312,313}-*"]
include:
- os: ubuntu-latest
arch: auto64
type: manylinux1
build: "cp39-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux1
- os: ubuntu-latest
arch: auto64
type: manylinux2010
build: "cp310-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2010
- os: ubuntu-latest
arch: auto64
type: manylinux2014
build: "cp{311,312,313}-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
- os: macos-latest
arch: universal2
build: "cp{39,310,311,312,313}-*"
- os: windows-latest
arch: auto64
build: "cp{39,310,311,312,313}-*"
steps:
- uses: actions/checkout@v4
- name: Build wheels and run tests
uses: pypa/cibuildwheel@v2.23.3
env:
CIBW_BUILD: ${{ matrix.build }}
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.CIBW_MANYLINUX_I686_IMAGE }}
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.CIBW_MANYLINUX_X86_64_IMAGE }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_TEST_REQUIRES: pytest
CIBW_TEST_COMMAND: pytest -vvs {project}/tests
# Skip PyPy wheels
CIBW_SKIP: "pp*"
- name: Collect built wheels
uses: actions/upload-artifact@v4
with:
name: cyseq-wheels-${{ matrix.os }}-${{ strategy.job-index }}
path: ./wheelhouse/*.whl
build-sdist:
name: Build source distribution
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Checkout and install reqs
run: |
pip install --upgrade --user build twine pkginfo packaging pip setuptools cython
- name: Build sdist
run: |
python setup.py sdist
twine check dist/*
- name: Collect built sdist
uses: actions/upload-artifact@v4
with:
name: cyseq-sdist
path: dist/*.tar.gz
merge:
runs-on: ubuntu-latest
needs: [build-sdist, build-wheels]
steps:
- name: Merge created wheels and sdist in a single zip
uses: actions/upload-artifact/merge@v4
with:
name: cyseq-build
pattern: cyseq-*
check-dist:
name: Check distributions are PyPi-correct
needs: merge
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@v4
with:
path: cyseq-build
- run: find . -ls
- run: pipx run twine check --strict cyseq-build/*/*
create-gh-release:
name: Create GH release
needs:
- check-dist
runs-on: ubuntu-24.04
steps:
- name: Download builds
uses: actions/download-artifact@v4
with:
name: cyseq-build
path: cyseq-build
- name: Create GH release
uses: softprops/action-gh-release@v2
with:
draft: true
files: cyseq-build/*
create-pypi-release:
name: Create PyPI release
needs:
- create-gh-release
runs-on: ubuntu-24.04
steps:
- name: Download builds
uses: actions/download-artifact@v4
with:
path: cyseq-build
- name: Publish to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}