From e6b2a93ce150eb3c1edc20c3b586eb07f69fb0af Mon Sep 17 00:00:00 2001 From: Dimitri Rusin Date: Tue, 7 May 2024 16:53:51 +0200 Subject: [PATCH] Return GitHub actions. --- .github/workflows/macos.yml | 81 ++++++++++++++++++++++++ .github/workflows/python-publish.yml | 56 +++++++++++++++++ .github/workflows/ubuntu.yml | 93 ++++++++++++++++++++++++++++ .github/workflows/windows.yml | 25 ++++++++ workstory.md | 21 ------- 5 files changed, 255 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/macos.yml create mode 100644 .github/workflows/python-publish.yml create mode 100644 .github/workflows/ubuntu.yml delete mode 100644 workstory.md diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml new file mode 100644 index 00000000..414fb79d --- /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 --target test_ioh + + - 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 00000000..c6bd56d9 --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,56 @@ +name: Upload Python Package + +on: + release: + types: [created] + +jobs: + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + # macos-13 is an intel runner, macos-14 is apple silicon + os: [ubuntu-22.04, windows-2022, macos-13, macos-14] + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - name: Build wheels + uses: pypa/cibuildwheel@v2.16.5 + env: + CIBW_SKIP: pp* + - uses: actions/upload-artifact@v4 + with: + name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} + path: ./wheelhouse/*.whl + build_sdist: + name: Build source distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build sdist + run: pipx run build --sdist + + - uses: actions/upload-artifact@v4 + with: + name: cibw-sdist + path: dist/*.tar.gz + + upload_pypi: + needs: [build_wheels, build_sdist] + runs-on: ubuntu-latest + environment: pypi + permissions: + id-token: write + steps: + - uses: actions/download-artifact@v4 + with: + # unpacks all CIBW artifacts into dist/ + pattern: cibw-* + path: dist + merge-multiple: true + - uses: pypa/gh-action-pypi-publish@release/v1 + + diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml new file mode 100644 index 00000000..4117f3a5 --- /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 --target test_ioh + + - 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 index 73ac101f..f68d4c7f 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -40,3 +40,28 @@ jobs: 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 diff --git a/workstory.md b/workstory.md deleted file mode 100644 index 2af9da6d..00000000 --- a/workstory.md +++ /dev/null @@ -1,21 +0,0 @@ - - - - - -```sh -pip install -e . && python -m unittest -cmake --build . --target test_ioh && ./tests/test_ioh - -rm -rf build -mkdir build -cd build -cmake .. - -cmake --build . --target test_dynamic_bin_val && ./tests/test_dynamic_bin_val -``` - -```sh -git restore --source other-branch --worktree -- path/to/your/file -git restore --source workstory --worktree -- workstory.md -```