Skip to content

Release

Release #17

Workflow file for this run

name: Release
on:
workflow_dispatch:
push:
tags: ['v*']
defaults:
run:
shell: bash
jobs:
build-wheels:
name: Build wheels on ${{ matrix.os }} for ${{ matrix.cibw_archs }}
runs-on: ${{ matrix.os }}
env:
# 3.9, 3.10 seem to not be happy on windows arm64
# because you can't install numpy from a wheel for the build environment
# (and we're not going to try recompiling from source)
CIBW_SKIP: "cp39-win_arm64 cp310-win_arm64"
# TODO: consider turning this on
# CIBW_ENABLE: cpython-freethreading
CIBW_BEFORE_BUILD_WINDOWS: >-
pip install delvewheel
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: >-
delvewheel repair -w {dest_dir} {wheel}
CIBW_BEFORE_TEST: >-
pip install -r {project}/requirements-only-tests-min-locked.txt
CIBW_TEST_COMMAND: >-
pytest {project}/tests
MACOSX_DEPLOYMENT_TARGET: "13.0"
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
cibw_archs: "x86_64"
- os: ubuntu-24.04-arm
cibw_archs: "aarch64"
- os: windows-2025
cibw_archs: "AMD64"
- os: windows-11-arm
cibw_archs: "ARM64"
- os: macos-13
cibw_archs: "x86_64"
- os: macos-14
cibw_archs: "arm64"
steps:
- uses: actions/checkout@v5
- name: Install Fortran compiler - MacOS
# When building on Mac, we need to have a Fortran compiler
if: ${{ startsWith(matrix.os, 'macos') }}
uses: fortran-lang/setup-fortran@v1
id: setup-fortran-macos
with:
# TODO: figure out whether we need/want to use other compilers too
compiler: "gcc"
version: "13"
- name: Specify LLVM - windows-arm
if: ${{ matrix.os == 'windows-11-arm' }}
shell: pwsh
run: |
Invoke-WebRequest https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/LLVM-20.1.8-woa64.exe -OutFile LLVM-woa64.exe
Start-Process -FilePath ".\LLVM-woa64.exe" -ArgumentList "/S" -Wait
$env:PATH = "C:\Program Files\LLVM\bin;" + $env:PATH
echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
echo "CC=clang-cl" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "CXX=clang-cl" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "FC=flang-new" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "AR=llvm-lib.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Build wheels
uses: pypa/[email protected] # matplotlib had v3.1.3
with:
package-dir: .
output-dir: wheelhouse
config-file: "{package}/pyproject.toml"
env:
CIBW_ARCHS: ${{ matrix.cibw_archs }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.os }}-${{ matrix.cibw_archs }}
path: ./wheelhouse/*.whl
if-no-files-found: error
make-sdist:
name: Make source distribution
runs-on: "ubuntu-latest"
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: ./.github/actions/setup
with:
python-version: ${{ matrix.python-version }}
uv-dependency-install-flags: "--all-extras --group dev"
- name: Create source distribution
run: uv build --sdist
- name: Upload the source distribution artefact
uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz
draft-release:
name: Create draft release
needs: [ build-wheels, make-sdist ]
strategy:
matrix:
os: [ "ubuntu-latest" ]
python-version: [ "3.11" ]
runs-on: "${{ matrix.os }}"
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: ./.github/actions/setup
with:
python-version: ${{ matrix.python-version }}
uv-dependency-install-flags: "--all-extras --group dev"
- name: Generate Release Notes
run: |
echo "" >> ".github/release_template.md"
echo "## Changelog" >> ".github/release_template.md"
echo "" >> ".github/release_template.md"
uv run --no-sync python scripts/changelog-to-release-template.py >> ".github/release_template.md"
echo "" >> ".github/release_template.md"
echo "## Changes" >> ".github/release_template.md"
echo "" >> ".github/release_template.md"
git log $(git describe --tags --abbrev=0 HEAD^)..HEAD --pretty='format:* %h %s' --no-merges >> ".github/release_template.md"
- name: Download artifacts
uses: actions/download-artifact@v5
with:
pattern: cibw-*
path: dist
merge-multiple: true
- name: Create Release Draft
uses: softprops/action-gh-release@v2
with:
body_path: ".github/release_template.md"
token: "${{ secrets.PERSONAL_ACCESS_TOKEN }}"
draft: true
files: |
dist/example_fgen_basic-*.whl
dist/example_fgen_basic-*.tar.gz