Skip to content

Pre-release to PyPI

Pre-release to PyPI #7

Workflow file for this run

name: Pre-release to PyPI
on:
workflow_dispatch:
jobs:
build_wheels:
runs-on: ${{ matrix.os }}
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
matrix:
include:
# Windows 64 bit
- os: windows-latest
python: 310
platform_id: win_amd64
- os: windows-latest
python: 311
platform_id: win_amd64
- os: windows-latest
python: 312
platform_id: win_amd64
- os: windows-latest
python: 313
platform_id: win_amd64
- os: windows-latest
python: 314
platform_id: win_amd64
# Linux 64 bit manylinux_2_28
- os: ubuntu-latest
python: 310
platform_id: manylinux_x86_64
manylinux_image: manylinux_2_28
- os: ubuntu-latest
python: 311
platform_id: manylinux_x86_64
manylinux_image: manylinux_2_28
- os: ubuntu-latest
python: 312
platform_id: manylinux_x86_64
manylinux_image: manylinux_2_28
- os: ubuntu-latest
python: 313
platform_id: manylinux_x86_64
manylinux_image: manylinux_2_28
- os: ubuntu-latest
python: 314
platform_id: manylinux_x86_64
manylinux_image: manylinux_2_28
# MacOS x86_64
- os: macos-15-intel
python: 310
platform_id: macosx_x86_64
- os: macos-15-intel
python: 311
platform_id: macosx_x86_64
- os: macos-15-intel
python: 312
platform_id: macosx_x86_64
- os: macos-15-intel
python: 313
platform_id: macosx_x86_64
- os: macos-15-intel
python: 314
platform_id: macosx_x86_64
# MacOS arm64
- os: macos-14
python: 310
platform_id: macosx_arm64
- os: macos-14
python: 311
platform_id: macosx_arm64
- os: macos-14
python: 312
platform_id: macosx_arm64
- os: macos-14
python: 313
platform_id: macosx_arm64
- os: macos-14
python: 314
platform_id: macosx_arm64
steps:
- name: Checkout Pyqasm
uses: actions/checkout@v7
- name: Install Python
uses: actions/setup-python@v7
with:
python-version: "3.11"
- name: Build and Test Wheels
env:
PRE_RELEASE_BUILD: "true"
# The linux builds happen inside a docker container
# and if we are using the pre-release build, we need to pass
# the pre-release env variable to the docker container
# Ref : https://cibuildwheel.pypa.io/en/stable/options/#environment-pass
CIBW_ENVIRONMENT_PASS_LINUX: PRE_RELEASE_BUILD
CIBW_BUILD: "cp${{ matrix.python }}-${{ matrix.platform_id }}"
CIBW_ARCHS_LINUX: x86_64
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_image }}
CIBW_BEFORE_BUILD: bash {project}/bin/cibw/pre_build.sh {project}
CIBW_TEST_EXTRAS: "test,cli,pulse"
CIBW_TEST_COMMAND: bash {project}/bin/cibw/test_wheel.sh {project}
CIBW_BUILD_VERBOSITY: 1
run: bash bin/cibw/build_wheels.sh
- name: Upload built wheels
uses: actions/upload-artifact@v7
with:
name: package-wheel-cp${{ matrix.python }}-${{ matrix.os }}
path: dist/*.whl
build_sdist:
name: Source distribution
runs-on: ubuntu-latest
steps:
- name: Checkout Pyqasm
uses: actions/checkout@v7
- name: Install Python
uses: actions/setup-python@v7
with:
python-version: "3.11"
- name: Update pre-release version
env:
PRE_RELEASE_BUILD: "true"
run: bash bin/cibw/pre_build.sh .
- name: Build source distribution
run: bash bin/build_sdist.sh
- name: Test source distribution
env:
RELEASE_BUILD: "true"
run: bash bin/test_sdist.sh
- name: Store artifacts
uses: actions/upload-artifact@v7
with:
name: package-sdist
path: dist/*.tar.gz
pypi-publish:
name: Download pre-release artifacts & upload to PyPI
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write # mint the OIDC token PyPI trusted publishing verifies
contents: read # actions/checkout
steps:
- name: Checkout Pyqasm
uses: actions/checkout@v7
- name: Download artifacts
uses: actions/download-artifact@v8
with:
# pattern should match the upload artifact naming convention
# of the previous jobs
pattern: package-*
path: dist
# put all files in single directory
merge-multiple: true
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1