Skip to content

Run Python workflow #26

Run Python workflow

Run Python workflow #26

Workflow file for this run

name: Python
on:
push:
branches:
- master
tags:
- 'v*'
permissions:
contents: write
jobs:
linux:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- go_target: amd64
cibw_target: x86_64
#- go_target:'386
# cibw_target: i686
- go_target: arm64
cibw_target: aarch64
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
if: matrix.go_target == 'arm64'
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- name: Build wheels
uses: pypa/[email protected]
with:
package-dir: bindings/py
env:
CIBW_ARCHS: ${{ matrix.cibw_target }}
CIBW_MANYLINUX_I686_IMAGE: quay.io/pypa/manylinux_2_28_i686
CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64
CIBW_MANYLINUX_AARCH64_IMAGE: quay.io/pypa/manylinux_2_28_aarch64
CIBW_BEFORE_ALL: .ci/ensure-go.sh; cd bindings/py; go get github.com/tdewolff/minify/v2@${{ github.ref_name }}; go build -buildmode=c-shared -o src/minify/_minify.so
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.go_target }}
path: ./wheelhouse/*.whl
windows-go-crosscompile:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- go_target: amd64
xcompiler: x86_64-w64-mingw32-gcc-win32
# go_target: 386
# xcompiler: i686-w64-mingw32-gcc-win32
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version: '>=1.17'
- name: Fetch go package
run: |
cd bindings/py
go get github.com/tdewolff/minify/v2@${{ github.ref_name }}
- name: Prebuild windows extension
run: |
sudo apt-get install mingw-w64
cd bindings/py
CC=${{ matrix.xcompiler }} CGO_ENABLED=1 GOOS=windows GOARCH=${{ matrix.go_target }} go build -buildmode=c-shared -o _minify.so
- name: Upload go library
uses: actions/upload-artifact@v4
with:
name: minify-windows-${{ matrix.go_target }}.so
path: bindings/py/_minify.so
windows:
runs-on: windows-latest
needs: windows-go-crosscompile
strategy:
matrix:
include:
- go_target: amd64
cibw_target: AMD64
#- go_target: 386
# cibw_target: x86
#- go_target: arm64
# cibw_target: ARM64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '>=1.17'
- name: Update version in go.mod
run: |
cd bindings/py
go get github.com/tdewolff/minify/v2@${{ github.ref_name }}
- uses: actions/download-artifact@v4
with:
name: minify-windows-${{ matrix.go_target }}.so
path: bindings/py/src/minify
- name: Build wheels
uses: pypa/[email protected]
with:
package-dir: bindings/py
env:
CIBW_ARCHS: ${{ matrix.cibw_target }}
CIBW_BUILD_VERBOSITY: 1
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.go_target }}
path: ./wheelhouse/*.whl
macos-go-crosscompile:
runs-on: macos-latest
strategy:
matrix:
include:
- go_target: amd64
clang_target: x86_64
- go_target: arm64
clang_target: arm64
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-go@v5
with:
go-version: '>=1.17'
- name: Fetch go package
run: |
cd bindings/py
go get github.com/tdewolff/minify/v2@${{ github.ref_name }}
- name: Prebuild macos extension
run: |
cd bindings/py
export CGO_ENABLED=1
export GOOS=darwin
export GOARCH=${{ matrix.go_target }}
#export CFLAGS="-Wno-error=unused-command-line-argument -target ${{ matrix.clang_target }}-unknown-darwin-unknown"
export CC=gcc
go build -buildmode=c-shared -o _minify.so
- name: Upload go library
uses: actions/upload-artifact@v4
with:
name: minify-darwin-${{ matrix.go_target }}.so
path: bindings/py/_minify.so
macos:
runs-on: macos-latest
needs: macos-go-crosscompile
strategy:
matrix:
include:
- go_target: amd64
cibw_target: x86_64
#- go_target: arm64
# cibw_target: arm64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '>=1.17'
- name: Update version in go.mod
run: |
cd bindings/py
go get github.com/tdewolff/minify/v2@${{ github.ref_name }}
- uses: actions/download-artifact@v4
with:
name: minify-darwin-${{ matrix.go_target }}.so
path: bindings/py/src/minify/_minify.so
- uses: actions/setup-python@v5
with:
python-version: '3.11'
#- uses: actions/setup-go@v5
# with:
# go-version: '>=1.17'
- name: Build wheels
uses: pypa/[email protected]
with:
package-dir: bindings/py
env:
CIBW_ARCHS: ${{ matrix.cibw_target }}
#CIBW_ENVIRONMENT: GOARCH='${{ matrix.go_target }} CGO_ENABLED=1'
#CIBW_BEFORE_ALL: cd bindings/py; go build -buildmode=c-shared -o src/minify/_minify.so
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.go_target }}
path: ./wheelhouse/*.whl
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- uses: actions/setup-go@v5
with:
go-version: '>=1.17'
- name: Update version in go.mod
run: |
cd bindings/py
go get github.com/tdewolff/minify/v2@${{ github.ref_name }}
- name: Install dependencies
run: pip install build
- name: Build package
run: |
cd bindings/py
python -m build --sdist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels
path: bindings/py/dist/*
release:
name: Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
needs: [linux, windows, macos, sdist]
#needs: [linux, windows, sdist]
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: bindings/py/artifacts
- name: Bundle release artifacts
run: |
cd bindings/py/
rm -r artifacts/*.so
mkdir dist
mv artifacts/*/* dist/
- name: Upload to GitHub Release
uses: softprops/[email protected]
with:
files: bindings/py/dist/*
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@81e9d935c883d0b210363ab89cf05f3894778450
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: bindings/py/dist/