|
name: CI |
|
|
|
on: |
|
push: |
|
branches: [ master ] |
|
pull_request: |
|
branches: [ '**' ] |
|
|
|
env: |
|
TAGS: "-tags=ci" |
|
COVERAGE: "-coverpkg=github.com/go-python/gopy/..." |
|
# Init() in main_test will make sure all backends are available if |
|
# GOPY_TRAVIS_CI is set |
|
GOPY_TRAVIS_CI: 1 |
|
GOTRACEBACK: crash |
|
GO111MODULE: auto |
|
|
|
jobs: |
|
|
|
build: |
|
name: Build |
|
strategy: |
|
fail-fast: false |
|
matrix: |
|
# TODO: Consider official support matrix (OS and Go versions) and adjust this matrix accordingly |
|
go-version: [1.25.x, 1.24.x, 1.23.x, 1.22.x] |
|
platform: [ubuntu-latest, windows-latest, macos-15] |
|
runs-on: ${{ matrix.platform }} |
|
steps: |
|
- name: Checkout code |
|
uses: actions/checkout@v4 |
|
|
|
- name: Set up Python |
|
uses: actions/setup-python@v5 |
|
with: |
|
python-version: '3.11' |
|
|
|
- name: Install Go |
|
uses: actions/setup-go@v5 |
|
with: |
|
go-version: ${{ matrix.go-version }} |
|
cache: true |
|
|
|
- name: Install Linux packages |
|
if: matrix.platform == 'ubuntu-latest' |
|
run: | |
|
sudo apt-get update |
|
sudo apt-get install curl libffi-dev python3-cffi python3-pip |
|
# install pybindgen |
|
python3 -m pip install --user -U pybindgen |
|
# install goimports |
|
go install golang.org/x/tools/cmd/goimports@latest |
|
|
|
- name: Install macOS packages |
|
if: startsWith(matrix.platform, 'macos-') |
|
run: | |
|
python3 -m pip install -U pybindgen |
|
go install golang.org/x/tools/cmd/goimports@latest |
|
|
|
- name: Install Windows packages |
|
if: matrix.platform == 'windows-latest' |
|
run: | |
|
# install pybindgen and psutil (for memory tracking in tests) |
|
python -m pip install -U pybindgen psutil |
|
# install goimports |
|
go install golang.org/x/tools/cmd/goimports@latest |
|
|
|
|
|
- name: Build-Linux |
|
if: matrix.platform == 'ubuntu-latest' |
|
run: | |
|
make |
|
- name: Test Linux |
|
if: matrix.platform == 'ubuntu-latest' |
|
run: | |
|
make test |
|
|
|
- name: Build-macOS |
|
if: startsWith(matrix.platform, 'macos-') |
|
run: | |
|
make |
|
- name: Test macOS |
|
if: startsWith(matrix.platform, 'macos-') |
|
run: | |
|
make test |
|
|
|
- name: Build-Windows |
|
if: matrix.platform == 'windows-latest' |
|
run: | |
|
go build -v ./... |
|
- name: Test Windows |
|
if: matrix.platform == 'windows-latest' |
|
run: | |
|
go test -v ./... |
|
- name: Upload-Coverage |
|
if: matrix.platform == 'ubuntu-latest' |
|
uses: codecov/codecov-action@v4 |