Skip to content

Merge pull request #3 from timkpaine/tkp/pycapsule #43

Merge pull request #3 from timkpaine/tkp/pycapsule

Merge pull request #3 from timkpaine/tkp/pycapsule #43

Workflow file for this run

name: Build Status
on:
push:
branches:
- main
- tkp/linux
tags:
- v*
paths-ignore:
- LICENSE
- README.md
pull_request:
workflow_dispatch:
ci-full:
description: "Run Full CI Build"
required: false
type: boolean
default: false
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
checks: write
pull-requests: write
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~ Build Matrix ~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
jobs:
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~/##########\~~~~~~~#
#~~~~~|#|~~~~~~~|#|~~~~~~~#
#~~~~~|#|~~~~~~~|#|~~~~~~~#
#~~~~~|#|~~~~~~~|#|~~~~~~~#
#~~~~~|#|~~~~~~~|#|~~~~~~~#
#~~~~~|#|~~~~~~~|#|~~~~~~~#
#~~~~~\##########/~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
initialize:
runs-on: ubuntu-22.04
outputs:
COMMIT_MESSAGE: ${{ steps.initialize.outputs.COMMIT_MSG }}
FULL_BUILD: ${{ steps.initialize.outputs.FULL_BUILD || steps.initialize.outputs.FULL_BUILD || steps.initialize.outputs.FULL_BUILD }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
# for pull_request so we can do HEAD^2
fetch-depth: 2
- name: Initialize variables
uses: actions-ext/general/initialize-variables@v1
id: initialize
with:
full: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.ci-full }}
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~/#######|~~~~~~~~~#
#~~~~~~/########|~~~~~~~~~#
#~~~~~/###/~|###|~~~~~~~~~#
#~~~~~~~~~~~|###|~~~~~~~~~#
#~~~~~~~~~~~|###|~~~~~~~~~#
#~~~~~~~~~~~|###|~~~~~~~~~#
#~~~~~~~~~~~|###|~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
build_and_test:
needs: [initialize]
strategy:
matrix:
os:
- ubuntu-22.04
- macos-12
python-version:
- '3.9'
fail-fast: false
runs-on: ${{ matrix.os }}
if: ${{ needs.initialize.outputs.FULL_BUILD == 'false' }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Python
uses: actions-ext/python/setup@v1
with:
version: ${{ matrix.python-version }}
- name: Setup C++
uses: actions-ext/cpp/setup@v1
- name: Install dependencies
run: make develop-macos
if: ${{ runner.os == 'macOS' }}
# - name: Install dependencies
# run: make develop-cpp
- name: Install dependencies
run: make develop-arrow-ubuntu
if: ${{ runner.os == 'Linux' }}
- name: Install dependencies
run: make develop-py
- name: Build project
run: make build
- name: Test project
run: make tests-ci
- name: Build wheels
run: make dist-wheel
- name: Upload test results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
check_name: Test Results
github_token: ${{ secrets.GITHUB_TOKEN }}
files: '**/junit.xml'
if: ${{ runner.os == 'Linux' }}
- name: Upload coverage
uses: codecov/codecov-action@v3
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~/########\~~~~~~~#
#~~~~~~|###|~~~\###\~~~~~~#
#~~~~~~~~~~~~~/###/~~~~~~~#
#~~~~~~~~~~~/###/~~~~~~~~~#
#~~~~~~~~~/###/~~~~~~~~~~~#
#~~~~~~~/###/~~~~~~~~~~~~~#
#~~~~~|#############|~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
build_cibuildwheel:
needs: [initialize]
strategy:
matrix:
os:
- ubuntu-22.04
python-version:
# - '3.8'
- '3.9'
# - '3.10'
# - '3.11'
fail-fast: false
runs-on: ${{ matrix.os }}
if: ${{ needs.initialize.outputs.FULL_BUILD == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run cibuildwheel
uses: actions-ext/python/run-cibuildwheel@v1
with:
version: ${{ matrix.python-version }}
- name: Upload wheels
uses: actions-ext/python/upload-dist@v1
with:
kind: 'wheel'
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~/########\~~~~~~~#
#~~~~~~~|##|~~~~|##|~~~~~~#
#~~~~~~~~~~~~~~~|##|~~~~~~#
#~~~~~~~~~~~|######|~~~~~~#
#~~~~~~~~~~~~~~~|##|~~~~~~#
#~~~~~~~|##|~~~~|##|~~~~~~#
#~~~~~~~\#########/~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
build_wheel:
needs: [initialize]
strategy:
matrix:
os:
# - ubuntu-20.04 # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
- ubuntu-22.04 # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md
# - macos-11 # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md
# - macos-12 # https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
# - macos-13 # https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
# - windows-2019 # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# - windows-2022 # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2022-Readme.md
python-version:
# - '3.8'
- '3.9'
# - '3.10'
# - '3.11'
fail-fast: false
runs-on: ${{ matrix.os }}
if: ${{ needs.initialize.outputs.FULL_BUILD == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions-ext/python/setup@v1
with:
version: ${{ matrix.python-version }}
- name: Install dependencies
run: make develop-macos
if: ${{ runner.os == 'macOS' }}
# - name: Install dependencies
# run: make develop-cpp
- name: Install dependencies
run: make develop-arrow-ubuntu
if: ${{ runner.os == 'Linux' }}
- name: Install dependencies
run: make develop-py
- name: Run cibuildwheel
uses: actions-ext/python/run-cibuildwheel@v1
with:
version: ${{ matrix.python-version }}
- name: Upload wheels
uses: actions-ext/python/upload-dist@v1
with:
version: ${{ matrix.python-version }}
kind: 'wheel'
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~|##|~~~~|##|~~~~~~~#
#~~~~~~|##|~~~~|##|~~~~~~~#
#~~~~~~|##|~~~~|##|~~~~~~~#
#~~~~~~|##########|~~~~~~~#
#~~~~~~~~~~~~~~|##|~~~~~~~#
#~~~~~~~~~~~~~~|##|~~~~~~~#
#~~~~~~~~~~~~~~|##|~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
build_sdist:
needs: [initialize]
strategy:
matrix:
os:
- ubuntu-22.04
python-version:
- '3.9'
runs-on: ${{ matrix.os }}
if: ${{ needs.initialize.outputs.FULL_BUILD == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions-ext/python/setup@v1
with:
version: ${{ matrix.python-version }}
- name: Install dependencies
run: make develop-macos
if: ${{ runner.os == 'macOS' }}
# - name: Install dependencies
# run: make develop-cpp
- name: Install dependencies
run: make develop-arrow-ubuntu
if: ${{ runner.os == 'Linux' }}
- name: Install dependencies
run: make develop-py
- name: Build sdist
run: make dist-sdist
- name: Upload sdist
uses: actions-ext/python/upload-dist@v1
with:
kind: "sdist"
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~|##########|~~~~~~#
#~~~~~~~|##|~~~~~~~~~~~~~~#
#~~~~~~~|##|~~~~~~~~~~~~~~#
#~~~~~~~|##########|~~~~~~#
#~~~~~~~~~~~~~~~|##|~~~~~~#
#~~~~~~~|##|~~~~|##|~~~~~~#
#~~~~~~~|##########|~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
lint:
needs: [initialize]
strategy:
matrix:
os:
- ubuntu-22.04
python-version:
- '3.9'
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions-ext/python/setup@v1
with:
version: ${{ matrix.python-version }}
- name: Install dependencies
run: make develop-py
- name: Install clang-format
run: sudo apt install clang-format
- name: Lint project
run: make lint
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~|##########|~~~~~~~#
#~~~~~~|##|~~~~~~~~~~~~~~~#
#~~~~~~|##|~~~~~~~~~~~~~~~#
#~~~~~~|##########|~~~~~~~#
#~~~~~~|##|~~~~|##|~~~~~~~#
#~~~~~~|##|~~~~|##|~~~~~~~#
#~~~~~~|##########|~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
test_wheel:
needs: [initialize, build_cibuildwheel, build_wheel]
strategy:
matrix:
os:
# - ubuntu-20.04 # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
- ubuntu-22.04 # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md
# - macos-11 # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md
# - macos-12 # https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
# - macos-13 # https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
# - windows-2019 # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# - windows-2022 # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2022-Readme.md
python-version:
# - '3.8'
- '3.9'
# - '3.10'
# - '3.11'
fail-fast: false
runs-on: ${{ matrix.os }}
if: ${{ needs.initialize.outputs.FULL_BUILD == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions-ext/python/setup@v1
with:
version: ${{ matrix.python-version }}
- name: Install dependencies
run: make develop-macos
if: ${{ runner.os == 'macOS' }}
# - name: Install dependencies
# run: make develop-cpp
- name: Install dependencies
run: make develop-arrow-ubuntu
if: ${{ runner.os == 'Linux' }}
- name: Install dependencies
run: make develop-py
- name: Download wheels
uses: actions-ext/python/download-dist@v1
with:
version: ${{ matrix.python-version }}
kind: "wheel"
- name: Test project
run: make tests-ci
- name: Upload test results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
check_name: Test Results
github_token: ${{ secrets.GITHUB_TOKEN }}
files: '**/junit.xml'
if: ${{ runner.os == 'Linux' }}
- name: Upload coverage
uses: codecov/codecov-action@v3
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~|#############|~~~~#
#~~~~~~|#|~~~~~~~/##/~~~~~#
#~~~~~~|#|~~~~~/##/~~~~~~~#
#~~~~~~~~~~~~/##/~~~~~~~~~#
#~~~~~~~~~~/##/~~~~~~~~~~~#
#~~~~~~~~/##/~~~~~~~~~~~~~#
#~~~~~~/##/~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
test_sdist:
needs: [initialize, build_sdist]
strategy:
matrix:
os:
# - ubuntu-20.04 # https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md
- ubuntu-22.04 # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md
# - macos-11 # https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md
# - macos-12 # https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md
# - macos-13 # https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
# - windows-2019 # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md
# - windows-2022 # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2022-Readme.md
python-version:
# - '3.8'
- '3.9'
# - '3.10'
# - '3.11'
fail-fast: false
runs-on: ${{ matrix.os }}
if: ${{ needs.initialize.outputs.FULL_BUILD == 'true' }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions-ext/python/setup@v1
with:
version: ${{ matrix.python-version }}
- name: Install dependencies
run: make develop-macos
if: ${{ runner.os == 'macOS' }}
# - name: Install dependencies
# run: make develop-cpp
- name: Install dependencies
run: make develop-arrow-ubuntu
if: ${{ runner.os == 'Linux' }}
- name: Install dependencies
run: make develop-py
- name: Download wheels
uses: actions-ext/python/download-dist@v1
with:
kind: "sdist"
- name: Test project
run: make tests-ci
- name: Upload test results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
check_name: Test Results
github_token: ${{ secrets.GITHUB_TOKEN }}
files: '**/junit.xml'
if: ${{ runner.os == 'Linux' }}
- name: Upload coverage
uses: codecov/codecov-action@v3
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~|#############|~~~~#
#~~~~~~|#|~~~~~~~~|##|~~~~#
#~~~~~~|#|~~~~~~~~|##|~~~~#
#~~~~~~|#############|~~~~#
#~~~~~~|#|~~~~~~~~|##|~~~~#
#~~~~~~|#|~~~~~~~~|##|~~~~#
#~~~~~~|#############|~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~|#############|~~~~#
#~~~~~~|#|~~~~~~~~|##|~~~~#
#~~~~~~|#|~~~~~~~~|##|~~~~#
#~~~~~~|#############|~~~~#
#~~~~~~~~~~~~~~~~~|##|~~~~#
#~~~~~~~~~~~~~~~~~|##|~~~~#
#~~~~~~|#############|~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#
##########################################################################################################################
##########################################################################################################################
###########################
#~~~~~~~~~~~~~~~~~~~~~~~~~#
#~~~~~\##\~~~~~~~/##/~~~~~#
#~~~~~~\##\~~~~~/##/~~~~~~#
#~~~~~~~\##\~~~/##/~~~~~~~#
#~~~~~~~~\##\~/##/~~~~~~~~#
#~~~~~~~~/##/~\##\~~~~~~~~#
#~~~~~~~/##/~~~\##\~~~~~~~#
#~~~~~~/##/~~~~~\##\~~~~~~#
#~~~~~/##/~~~~~~~\##\~~~~~#
#~~~~~~~~~~~~~~~~~~~~~~~~~#