Skip to content

Merge pull request #11 from ioerror/opt-no-wipe-argon2_32-pyx #40

Merge pull request #11 from ioerror/opt-no-wipe-argon2_32-pyx

Merge pull request #11 from ioerror/opt-no-wipe-argon2_32-pyx #40

Workflow file for this run

# Copyright 2021-2023 Jetperch LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# GitHub actions
# See documentation: https://docs.github.com/en/actions
# https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
# CMake example: https://github.com/Mizux/cmake-cpp/blob/main/.github/workflows/amd64_windows.yml
name: Packaging
on: ['push', 'pull_request']
env:
PYTHON_VERSION: '3.11'
jobs:
build_sdist:
name: Build sdist
runs-on: ubuntu-latest
steps:
- name: Display info
run: |
echo "github.event_name=$GITHUB_EVENT_NAME"
echo "github.ref=$GITHUB_REF"
echo "github.ref_type=$GITHUB_REF_TYPE"
echo "runner.os=$RUNNER_OS"
echo "runner.arch=$RUNNER_ARCH"
- name: Checkout repo
uses: actions/checkout@v4
with:
ref: ${{ github.ref }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Display version
run: python -VV
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install build wheel pytest
- name: Build sdist
run: python -m build --sdist
- name: Find sdist filename
shell: bash
id: find_sdist_filename
run: echo "filename=$(ls dist/*.tar.gz)" >> $GITHUB_OUTPUT
- name: Install the wheel
run: python -m pip install ${{ steps.find_sdist_filename.outputs.filename }}
- name: Install numpy for unit test
run: python -m pip install numpy
- name: Run python unit tests
run: pytest
- name: Upload python source package
uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*.tar.gz
if-no-files-found: error
build_wheels:
name: Build on ${{ matrix.os }}, python=${{ matrix.python_version }}
needs:
- build_sdist
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
python_version: ["cp39", "cp310", "cp311", "cp312"]
exclude:
- os: "macos-latest"
python_version: "cp39"
steps:
- name: Download sdist
uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
- name: Find sdist filename
shell: bash
id: find_sdist_filename
run: echo "filename=$(ls dist/*.tar.gz)" >> $GITHUB_OUTPUT
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.17.0
- name: Build wheels
env:
CIBW_ARCHS_MACOS: universal2
CIBW_ARCHS_WINDOWS: native
CIBW_ARCHS_LINUX: native
# skip PyPy: Cython only supports CPython
# skip musllinux: build takes too long with default os images.
CIBW_SKIP: 'pp* *musllinux*'
CIBW_BUILD: '${{ matrix.python_version }}-*'
CIBW_TEST_REQUIRES: pytest numpy
CIBW_TEST_COMMAND: pytest {package}/test
run: python -m cibuildwheel ${{ steps.find_sdist_filename.outputs.filename }}
- name: Upload python wheels
uses: actions/upload-artifact@v4
with:
name: python_wheel-${{ matrix.os }}-${{ matrix.python_version }}
path: wheelhouse/*.whl
if-no-files-found: error
publish_python:
name: Publish python packages to PyPi
if: github.event_name == 'push' && startswith(github.ref, 'refs/tags/v')
needs:
- build_sdist
- build_wheels
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- name: Download python sdist artifact
uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
- name: Download python wheel artifacts
uses: actions/download-artifact@v4
with:
pattern: python_wheel-*
merge-multiple: true
path: dist/
- name: Display artifacts
shell: bash
run: ls dist/*
- name: Publish packages to PyPi
uses: pypa/[email protected]
with:
print-hash: true
- name: Publish Release assets
uses: softprops/action-gh-release@v1
with:
files: |
dist/*