Skip to content

Commit

Permalink
Add GitHub Actions workflow for package builds
Browse files Browse the repository at this point in the history
The new workflow file for GitHub Actions has been added. It automates the process of building SDist and Wheel distribution files for the project. The workflow also includes provisions for cross-compilation on macOS, clean directory verification, and conditional uploading if the event is a release.
  • Loading branch information
Dialpuri committed Jun 2, 2024
1 parent f5d6c0d commit d455592
Showing 1 changed file with 114 additions and 0 deletions.
114 changes: 114 additions & 0 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: Wheels

on: push
# workflow_dispatch:
# release:
# types:
# - published

jobs:
build_sdist:
name: Build SDist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Move to correct directory
run: |
mv package/* .
./get_sources
- name: Install Clang
run: sudo apt-get install -y clang

- name: Set environment variables for Clang
run: |
export CC=$(which clang)
export CXX=$(which clang++)
- name: Build SDist
run: pipx run build --sdist

- name: Check metadata
run: pipx run twine check dist/*

- uses: actions/upload-artifact@v4
with:
path: dist/*.tar.gz


build_wheels:
name: Wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
# , windows-latest]

steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Download dependencies
run: |
cd package
./get_sources
- uses: pypa/[email protected]
env:
CIBW_BEFORE_ALL: pwd && ls
# Cross-compile on macOS
CIBW_ARCHS_MACOS: x86_64 arm64

# Temporary: use pre-release Python 3.12 for stable ABI builds
CIBW_PRERELEASE_PYTHONS: True
with:
package-dir: 'package'
config-file: "{package}/pyproject.toml"

- name: Verify clean directory
run: git diff --exit-code
shell: bash

- name: Upload wheels
uses: actions/upload-artifact@v4
with:
path: wheelhouse/*.whl
name: dist-${{ matrix.os }}


upload_all:
name: Upload if release
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
if: github.event_name == 'release' && github.event.action == 'published'

steps:
- uses: actions/setup-python@v5

- uses: actions/download-artifact@v4
with:
merge-multiple: true
pattern: dist-*
path: dist

- uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}

debug:
needs: [build_wheels, upload_all]
runs-on: ubuntu-latest
if: ${{ failure() }}
steps:
- uses: actions/checkout@v3
- name: Notify chat
uses: teknatha136/actions-google-chat-text-message@main
with:
google-chat-webhook: ${{ secrets.WEBHOOK_URL }}
text-message: ${{ github.actor }} attempted to merge a change into NucleoFind, but the automatic deployment failed.\nThis message was generated due to a ${{ github.event_name }}.\nLink ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} \n

0 comments on commit d455592

Please sign in to comment.