From 2bc2131945880dc8eca62eb863975828c4c23209 Mon Sep 17 00:00:00 2001 From: Dimitri Rusin Date: Mon, 11 Sep 2023 11:00:03 +0200 Subject: [PATCH] Bring back windows.yml file and other files under .github/ --- .github/workflows/macos.yml | 81 ++++++++++++++++++++++++ .github/workflows/python-publish.yml | 89 ++++++++++++++++++++++++++ .github/workflows/ubuntu.yml | 93 ++++++++++++++++++++++++++++ .github/workflows/windows.yml | 67 ++++++++++++++++++++ 4 files changed, 330 insertions(+) create mode 100644 .github/workflows/macos.yml create mode 100644 .github/workflows/python-publish.yml create mode 100644 .github/workflows/ubuntu.yml create mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 000000000..c371ae093 --- /dev/null +++ b/.github/workflows/macos.yml @@ -0,0 +1,81 @@ +name: MacOS + +on: [push] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Debug + + +jobs: + build-test-cpp: + runs-on: macos-12 + strategy: + matrix: + rust: [stable, nightly] + compiler: [clang++] + + steps: + - uses: actions/checkout@v2 + with: + rust-version: ${{ matrix.rust }} + submodules: true + + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate build directory + # We'll use this as our working directory for all subsequent commands + env: + CXX: ${{ matrix.compiler }} + run: cmake -E make_directory ${{runner.workspace}}/build + + - name: Configure CMake + # Use a bash shell so we can use the same syntax for environment variable + # access regardless of the host operating system + shell: bash + env: + CXX: ${{ matrix.compiler }} + working-directory: ${{runner.workspace}}/build + # Note the current convention is to use the -S and -B options here to specify source + # and build directories, but this is only available with CMake 3.13 and higher. + # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE + + - name: Build + working-directory: ${{runner.workspace}}/build + shell: bash + env: + CXX: ${{ matrix.compiler }} + # Execute the build. You can specify a specific target with "--target " + run: cmake --build . --config $BUILD_TYPE + + - name: Test + working-directory: ${{runner.workspace}}/build + shell: bash + run: tests/test_ioh + + build-test-python: + runs-on: macos-latest + strategy: + matrix: + python-version: ["3.6.x", "3.7.x", "3.8.x", "3.9.x", "3.10.x", "3.11.x"] + compiler: [clang++] + architecture: [x64] + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up Python + uses: actions/setup-python@v2 + env: + CXX: ${{ matrix.compiler }} + with: + python-version: ${{matrix.python-version}} + architecture: ${{matrix.architecture}} + - name: Install library + run: | + brew install ninja + python -m pip install --upgrade pip + pip install mypy xmltodict wheel scikit-build + pip install -e . -v + - name: Run unit tests + run: python -m unittest -v diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 000000000..c3b57bced --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,89 @@ +name: Upload Python Package + +on: + release: + types: [created] + +jobs: + publish-mac-windows: + strategy: + matrix: + python-version: ["3.6.x", "3.7.x", "3.8.x", "3.9.x", "3.10.x", "3.11.x"] + os: [macos-latest, windows-latest] + exclude: + - os: macos-latest + runs-on: ${{matrix.os}} + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{matrix.python-version}} + architecture: ${{matrix.architecture}} + - name: Install Ninja + if: startsWith(matrix.os, 'macOS') + run: | + brew install ninja + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine ninja xmltodict mypy + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + python setup.py bdist_wheel + twine upload dist/* + + publish-unix: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: "3.x" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install setuptools wheel twine xmltodict mypy + - name: build manylinux + uses: RalfG/python-wheels-manylinux-build@v0.5.0-manylinux2014_x86_64 + with: + system-packages: 'ninja-build' + - name: Publish manylinux + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + twine upload dist/*-manylinux*.whl + + publish-source: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: "3.x" + - name: Install dependencies + run: | + sudo apt update -y + sudo apt install ninja-build -y + python -m pip install --upgrade pip + pip install setuptools wheel twine mypy xmltodict + - name: Build and publish + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: | + python setup.py sdist + twine upload dist/*.tar.gz + diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml new file mode 100644 index 000000000..3c2398169 --- /dev/null +++ b/.github/workflows/ubuntu.yml @@ -0,0 +1,93 @@ +name: Ubuntu + +on: [push] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Debug + + +jobs: + build-test-cpp: + runs-on: ubuntu-20.04 + strategy: + matrix: + rust: [stable, nightly] + compiler: [g++-10, g++-9, g++-8, g++-7] + + steps: + - uses: actions/checkout@v2 + with: + rust-version: ${{ matrix.rust }} + submodules: true + + - name: Install dependencies + shell: bash + run: | + sudo apt-get update + sudo apt-get install doxygen python3-setuptools python3-dev python3-wheel -y + pip3 install wheel + + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate build directory + # We'll use this as our working directory for all subsequent commands + env: + CXX: ${{ matrix.compiler }} + run: | + sudo apt-get update + sudo apt-get install ${{ matrix.compiler }} -y + git submodule status + cmake -E make_directory ${{runner.workspace}}/build + + - name: Configure CMake + # Use a bash shell so we can use the same syntax for environment variable + # access regardless of the host operating system + shell: bash + env: + CXX: ${{ matrix.compiler }} + working-directory: ${{runner.workspace}}/build + # Note the current convention is to use the -S and -B options here to specify source + # and build directories, but this is only available with CMake 3.13 and higher. + # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE + + - name: Build + working-directory: ${{runner.workspace}}/build + shell: bash + env: + CXX: ${{ matrix.compiler }} + # Execute the build. You can specify a specific target with "--target " + run: cmake --build . --config $BUILD_TYPE + + - name: Test + working-directory: ${{runner.workspace}}/build + shell: bash + run: tests/test_ioh + + build-test-python: + runs-on: ubuntu-20.04 + strategy: + matrix: + python-version: ["3.6.x", "3.7.x", "3.8.x", "3.9.x", "3.10.x", "3.11.x"] + compiler: [g++-10] + architecture: [x64] + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Set up Python + uses: actions/setup-python@v2 + env: + CXX: ${{ matrix.compiler }} + with: + python-version: ${{matrix.python-version}} + architecture: ${{matrix.architecture}} + - name: Install library + run: | + sudo apt-get update -y + sudo apt-get install ninja-build -y + python -m pip install --upgrade pip + pip install mypy xmltodict wheel scikit-build + pip install -e . -v + - name: Run unit tests + run: python -m unittest -v diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 000000000..dfadadb74 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,67 @@ +name: Windows + +on: [push] + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Debug + + +jobs: + build-test-cpp: + runs-on: windows-2022 + steps: + - uses: actions/checkout@v2 + with: + submodules: true + + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate build directory + # We'll use this as our working directory for all subsequent commands + run: cmake -E make_directory ${{runner.workspace}}/build + + - name: Configure CMake + # Use a bash shell so we can use the same syntax for environment variable + # access regardless of the host operating system + shell: bash + working-directory: ${{runner.workspace}}/build + # Note the current convention is to use the -S and -B options here to specify source + # and build directories, but this is only available with CMake 3.13 and higher. + # The CMake binaries on the Github Actions machines are (as of this writing) 3.12 + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE + + - name: Build + working-directory: ${{runner.workspace}}/build + shell: bash + # Execute the build. You can specify a specific target with "--target " + run: cmake --build . --config $BUILD_TYPE + + - name: Test + working-directory: ${{runner.workspace}}/build + shell: bash + run: tests/Debug/test_ioh.exe + + build-test-python: + runs-on: windows-2022 + strategy: + matrix: + python-version: ["3.6.x", "3.7.x", "3.8.x", "3.9.x", "3.10.x", "3.11.x"] + architecture: [x64, x86] + + steps: + - uses: actions/checkout@v2 + with: + submodules: true + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: ${{matrix.python-version}} + architecture: ${{matrix.architecture}} + - name: Install library + run: | + python -m pip install --upgrade pip + pip install mypy xmltodict wheel + pip install -e . -v + - name: Run unit tests + run: python -m unittest -v