pygomx/.github/workflows/build.yaml
saces 3f6be78685
Some checks are pending
Build, test and release / timestamp (push) Waiting to run
Build, test and release / changes (push) Waiting to run
Build, test and release / pygomx-wheel (macos-15-intel) (push) Blocked by required conditions
Build, test and release / pygomx-wheel (macos-latest) (push) Blocked by required conditions
Build, test and release / pygomx-wheel (windows-11-arm) (push) Blocked by required conditions
Build, test and release / pygomx-wheel (windows-2022) (push) Blocked by required conditions
Build, test and release / pygomx-wheel-linux (ubuntu-24.04-arm) (push) Blocked by required conditions
Build, test and release / pygomx-wheel-linux (ubuntu-latest) (push) Blocked by required conditions
Build, test and release / pygomx-pypi (push) Blocked by required conditions
Build, test and release / smal-sdist (push) Blocked by required conditions
Build, test and release / smal-wheel (push) Blocked by required conditions
Build, test and release / smal-pypi (push) Blocked by required conditions
update & rename smal => mxsmal
2026-04-04 12:12:56 +02:00

221 lines
5.6 KiB
YAML

name: Build, test and release
on:
push:
branches:
- main
- develop
permissions:
contents: read
jobs:
timestamp:
runs-on: ubuntu-latest
outputs:
sepoch: ${{ steps.timestamps.outputs.SEPOCH }}
steps:
- name: Set Timestamp
id: timestamps
run: echo "SEPOCH=$(date +%s)" >> $GITHUB_OUTPUT
changes:
runs-on: ubuntu-latest
outputs:
pygomx: ${{ steps.filter.outputs.pygomx }}
smal: ${{ steps.filter.outputs.smal }}
steps:
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v4
id: filter
with:
filters: |
pygomx:
- 'libmxclient/**'
- 'pygomx/**'
smal:
- 'smal/**'
pygomx-wheel:
needs:
- changes
- timestamp
if: ${{ needs.changes.outputs.pygomx == 'true' }}
runs-on: ${{ matrix.os }}
continue-on-error: true
strategy:
fail-fast: false
matrix:
os: [windows-2022, windows-11-arm, macos-15-intel, macos-latest]
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: actions/setup-go@v6
with:
go-version: "1.25"
- name: build wheel
uses: pypa/cibuildwheel@v3.4.1
with:
package-dir: pygomx
env:
SOURCE_DATE_EPOCH: ${{ needs.timestamp.outputs.sepoch }}
CIBW_SKIP: "*-win32"
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: pygomx-${{ github.sha }}-${{ matrix.os }}-wheel.zip
path: ./wheelhouse/*.whl
pygomx-wheel-linux:
needs:
- changes
- timestamp
if: ${{ needs.changes.outputs.pygomx == 'true' }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm]
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
#- name: Set up QEMU
# if: runner.os == 'Linux' && runner.arch == 'X64'
# uses: docker/setup-qemu-action@v3
# with:
# platforms: all
- name: build wheel
uses: pypa/cibuildwheel@v3.4.1
with:
package-dir: pygomx
env:
CIBW_BEFORE_ALL: >-
dnf -y install golang
CIBW_SKIP: "*-musllinux_*"
SOURCE_DATE_EPOCH: ${{ needs.timestamp.outputs.sepoch }}
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: pygomx-${{ github.sha }}-${{ matrix.os }}-wheel.zip
path: ./wheelhouse/*.whl
pygomx-pypi:
needs:
- changes
- pygomx-wheel
- pygomx-wheel-linux
if: ${{ needs.changes.outputs.pygomx == 'true' }}
runs-on: ubuntu-latest
environment:
name: pypi
url: ${{ github.ref == 'refs/heads/main' && 'https://pypi.org/p/pygomx' || 'https://test.pypi.org/p/pygomx' }}
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
steps:
- name: Download artifact
uses: actions/download-artifact@v7
with:
pattern: pygomx-*
path: dist
merge-multiple: true
- name: Publish package distributions to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
verbose: true
repository-url: ${{ github.ref == 'refs/heads/main' && 'https://upload.pypi.org/legacy/' || 'https://test.pypi.org/legacy/' }}
smal-sdist:
needs:
- changes
- timestamp
if: ${{ needs.changes.outputs.smal == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: build sdist
env:
SOURCE_DATE_EPOCH: ${{ needs.timestamp.outputs.sepoch }}
run: |
cd smal/
pip install build
python -m build --sdist
pip install ./dist/*.tar.gz
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: smal-${{ github.sha }}-sdist.zip
path: ./smal/dist/*.tar.gz
smal-wheel:
needs:
- changes
- timestamp
if: ${{ needs.changes.outputs.smal == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.10"
- name: build wheel
env:
SOURCE_DATE_EPOCH: ${{ needs.timestamp.outputs.sepoch }}
run: |
cd smal/
pip install build
python -m build --wheel
pip install ./dist/*.whl
- name: upload artifacts
uses: actions/upload-artifact@v7
with:
name: smal-${{ github.sha }}-wheel.zip
path: ./smal/dist/*.whl
smal-pypi:
needs:
- changes
- smal-sdist
- smal-wheel
if: ${{ needs.changes.outputs.smal == 'true' }}
runs-on: ubuntu-latest
environment:
name: pypi
#url: https://test.pypi.org/p/smal
url: ${{ github.ref == 'refs/heads/main' && 'https://pypi.org/p/mxsmal' || 'https://test.pypi.org/p/mxsmal' }}
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
steps:
- name: Download artifact
uses: actions/download-artifact@v7
with:
pattern: smal-*
path: dist
merge-multiple: true
- name: Publish package distributions to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: ${{ github.ref == 'refs/heads/main' && 'https://upload.pypi.org/legacy/' || 'https://test.pypi.org/legacy/' }}