Skip to content

[cocoex] Fix signed/unsigned bug in for loop #241

[cocoex] Fix signed/unsigned bug in for loop

[cocoex] Fix signed/unsigned bug in for loop #241

Workflow file for this run

name: build
on:
push:
pull_request:
branches: [ master, development ]
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
source-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: "3.10"
cache: "pip"
- name: Setup Python
run: python -m pip install --upgrade -r scripts/requirements.txt
- name: Fabricate COCO
run: python scripts/fabricate
- name: Run core unit tests
working-directory: ${{github.workspace}}/code-experiments/test/unit-test/
run: |
cmake -B build .
cmake --build build
ctest --test-dir build
- name: Build cocoex Python package
run: python -m build -s -o dist code-experiments/build/python
- name: Build cocopp Python package
run: python -m build -o dist code-postprocessing/
- name: Archive C source package
uses: actions/upload-artifact@v3
with:
name: dist-c
path: dist/cocoex-c-*.zip
- name: Archive Java source package
uses: actions/upload-artifact@v3
with:
name: dist-java
path: dist/cocoex-java-*.zip
- name: Archive Matlab source package
uses: actions/upload-artifact@v3
with:
name: dist-matlab
path: dist/cocoex-matlab-*.zip
- name: Archive Octave source package
uses: actions/upload-artifact@v3
with:
name: dist-octave
path: dist/cocoex-octave-*.zip
- name: Archive Rust source package
uses: actions/upload-artifact@v3
with:
name: dist-rust
path: dist/cocoex-rust-*.zip
- name: Archive cocoex and cocopp Python source package
uses: actions/upload-artifact@v3
with:
name: dist-python-sdist
path: |
dist/cocoex*.tar.gz
dist/cocopp*.tar.gz
python-wheels-build-cocopp:
needs: source-build
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Download Python source package
uses: actions/download-artifact@v3
with:
name: dist-python-sdist
- name: Build cocopp wheel
shell: bash
run: python -m pip wheel -w dist/ cocopp-*.tar.gz
- name: Archive Python wheels
uses: actions/upload-artifact@v3
with:
name: dist-python-wheels
path: dist/cocopp*.whl
python-wheels-build-cocoex:
needs: source-build
# This strategy is taken straight from the numpy wheels.yaml CI job
#
# Since we depend on numpy, there's no reason to try and build a binary cocoex wheel
# on platform that don't have a compiled numpy available.
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
matrix:
buildplat:
- [ubuntu-20.04, manylinux_x86_64]
- [ubuntu-20.04, musllinux_x86_64]
- [macos-12, macosx_x86_64]
- [windows-2019, win_amd64]
- [windows-2019, win32]
python: ["cp39", "cp310", "cp311", "cp312", "pp39"]
exclude:
# Don't build PyPy 32-bit windows
- buildplat: [windows-2019, win32]
python: "pp39"
- buildplat: [ ubuntu-20.04, musllinux_x86_64 ]
python: "pp39"
runs-on: ${{ matrix.buildplat[0] }}
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- name: Setup MSVC (32-bit)
if: ${{ matrix.buildplat[1] == 'win32' }}
uses: bus1/cabuild/action/msdevshell@e22aba57d6e74891d059d66501b6b5aed8123c4d # v1
with:
architecture: 'x86'
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Download Python source package
uses: actions/download-artifact@v3
with:
name: dist-python-sdist
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.16.2
- name: Build cocoex wheel
shell: bash
run: python -m cibuildwheel --output-dir dist/ cocoex-*.tar.gz
env:
CIBW_PRERELEASE_PYTHONS: True
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}
- name: Archive Python wheels
uses: actions/upload-artifact@v3
with:
name: dist-python-wheels
path: dist/cocoex*.whl
python-wheels-test:
needs: python-wheels-build-cocoex
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
version: ["3.9", "3.10", "3.11", "3.12"]
runs-on: ${{matrix.os}}
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- uses: actions/download-artifact@v3
with:
name: dist-python-sdist
path: dist
- uses: actions/download-artifact@v3
with:
name: dist-python-wheels
path: wheels
- uses: actions/setup-python@v4
with:
python-version: ${{matrix.version}}
- name: Setup Python
run: python -m pip install --upgrade pip wheel
- name: Install cocoex
run: python -m pip install --find-links wheels/ cocoex
- name: Run cocoex test
shell: bash
run: |
tar xf dist/cocoex-*.tar.gz --strip-components=1
python -m pip install pytest pytest-cov
pytest --cov=cocoex test/
python-wheels-example:
needs: [python-wheels-build-cocoex, python-wheels-build-cocopp]
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
version: ["3.9", "3.10", "3.11", "3.12"]
runs-on: ${{matrix.os}}
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
name: dist-python-wheels
path: wheels
- uses: actions/setup-python@v4
with:
python-version: ${{matrix.version}}
- name: Setup Python
run: python -m pip install --upgrade pip wheel
- name: Install cocoex and cocopp
run: python -m pip install --find-links wheels/ cocoex cocopp
- name: Install scipy for example experiment
run: python -m pip install scipy
- name: Run example experiment
run: python code-experiments/build/python/example/example_experiment2.py
python-lint:
needs: source-build
runs-on: "ubuntu-latest"
steps:
- uses: actions/download-artifact@v3
with:
name: dist-python-sdist
path: dist
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Setup Python
run: python -m pip install --upgrade pip wheel
- name: Lint with Ruff
shell: bash
continue-on-error: true
run: |
pip install ruff
tar xf dist/cocoex-*.tar.gz --strip-components=1
ruff --output-format=github .
cocopp-example:
needs: python-wheels-build-cocopp
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
version: ["3.9", "3.10", "3.11", "3.12"]
runs-on: ${{matrix.os}}
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- uses: actions/download-artifact@v3
with:
name: dist-python-wheels
path: wheels
- uses: actions/setup-python@v4
with:
python-version: ${{matrix.version}}
- name: Setup Python
run: python -m pip install --upgrade pip wheel
- name: Run BBOB postprocessing example
shell: bash
run: |
python -m pip install wheels/cocopp*.whl
python -m cocopp -v AMALGAM\! BIPOP-CMA-ES\!
c-test:
needs: source-build
strategy:
matrix:
# FIXME: Currently fails on windows because of path issues.
#
# Debug and add `windows-latest` back to list at some point.
os: [ubuntu-latest, macos-latest]
runs-on: ${{matrix.os}}
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- name: Download C source package
uses: actions/download-artifact@v3
with:
name: dist-c
- name: Unpack
run: unzip cocoex-c-*.zip
- name: Build
working-directory: ${{github.workspace}}/cocoex-c/
run: cmake -B build && cmake --build build
- name: Test
working-directory: ${{github.workspace}}/cocoex-c/
run: ctest --test-dir build
- name: Store reports
if: failure()
uses: actions/upload-artifact@v3
with:
name: c-test-${{matrix.os}}
path: |
**/build/
java-example:
needs: source-build
strategy:
matrix:
# FIXME: Currently fails on windows because of path issues.
#
# Debug and add `windows-latest` back to list at some point.
os: [ubuntu-latest, macos-latest]
java: [11, 17, 21]
runs-on: ${{matrix.os}}
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- name: Download Java source package
uses: actions/download-artifact@v3
with:
name: dist-java
- name: Setup java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Unpack
run: unzip cocoex-java-*.zip
- name: Build
working-directory: ${{github.workspace}}/cocoex-java/
run: cmake -B build && cmake --build build
- name: Experiment
working-directory: ${{github.workspace}}/cocoex-java/
run: java -classpath build/coco.jar -Djava.library.path=build/ ExampleExperiment
- name: Archive Java example experiment results
uses: actions/upload-artifact@v3
with:
name: java-example-${{matrix.os}}
path: cocoex-java/exdata/*
octave-example:
needs: source-build
# FIXME: Should also test on windows and macos
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- name: Install Octave
run: |
sudo apt-get update
sudo apt-get install -y octave liboctave-dev
- name: Download Octave source package
uses: actions/download-artifact@v3
with:
name: dist-octave
- name: Unpack
run: unzip cocoex-octave-*.zip
- name: Build
working-directory: ${{github.workspace}}/cocoex-octave/
run: mkoctfile --verbose --mex cocoCall.c
- name: Experiment
working-directory: ${{github.workspace}}/cocoex-octave/
run: octave --no-gui exampleexperiment.m
- name: Archive Octave example experiment results
uses: actions/upload-artifact@v3
with:
name: octave-example
path: cocoex-octave/exdata/*
rust-test:
if: false # Disabled since we don't have any tests yes
needs: source-build
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{matrix.os}}
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- name: Download Rust source package
uses: actions/download-artifact@v3
with:
name: dist-rust
- name: Unpack
run: unzip cocoex-rust-*.zip
- name: Build
working-directory: ${{github.workspace}}/cocoex-rust/
run: cargo build -r
- name: Test
working-directory: ${{github.workspace}}/cocoex-rust/
run: cargo test -r
rust-example:
needs: source-build
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{matrix.os}}
defaults:
run:
working-directory: ${{github.workspace}}
steps:
- name: Download Rust source package
uses: actions/download-artifact@v3
with:
name: dist-rust
- name: Unpack
run: unzip cocoex-rust-*.zip
- name: Build
working-directory: ${{github.workspace}}/cocoex-rust/
run: cargo build -r
- name: Example Experiment
working-directory: ${{github.workspace}}/cocoex-rust/
run: cargo run --example example-experiment
- name: Archive Rust example experiment results
uses: actions/upload-artifact@v3
with:
name: rust-example-${{matrix.os}}
path: cocoex-rust/exdata/*