diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index eea9e2584..da7383953 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -6,136 +6,23 @@ on: branches: main jobs: minimum-version-testing: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ['3.8'] - steps: - - uses: actions/checkout@v4 - - name: Set Up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: Display Python Version - run: python -c "import sys; print(sys.version)" - shell: bash - - name: Generate Minimum Requirements File - run: sed 's/>/=/g' requirements.txt | sed 's/$/\.*/g' > requirements.min.txt - shell: bash - - name: Install Minimum Requirements - run: python -m pip install --upgrade -r requirements.min.txt - shell: bash - - name: Install STUMPY And Other Dependencies - run: python -m pip install --editable .[ci] - shell: bash - - name: Run Black - run: black --check --diff ./ - shell: bash - - name: Run Flake8 - run: flake8 ./ - shell: bash - - name: Link OpenMP - run: | - if [ "$RUNNER_OS" == "macOS" ]; then - brew link --force libomp - fi - shell: bash - - name: Show Full Numba Environment - run: python -m numba -s - shell: bash - - name: Run Unit Tests - run: ./test.sh unit - shell: bash + uses: ./.github/workflows/reusable-workflow.yml@main + with: + python-version: '3.8' + test-type: 'unit' unit-testing: - runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] - steps: - - uses: actions/checkout@v4 - - name: Set Up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: Display Python Version - run: python -c "import sys; print(sys.version)" - shell: bash - - name: Install STUMPY And Other Dependencies - run: python -m pip install --editable .[ci] - shell: bash - - name: Run Black - run: black --check --diff ./ - shell: bash - - name: Run Flake8 - run: flake8 ./ - shell: bash - - name: Link OpenMP - run: | - if [ "$RUNNER_OS" == "macOS" ]; then - # Fix libiomp5.dylib - echo "Install OpenMP via Conda" - conda install -c intel -y openmp - echo "Checking $CONDA/lib for OpenMP" - ls $CONDA/lib/libiomp5.dylib - echo "Changing @rpath for the omppool.cpython-x-darwin.so shared object to look in $CONDA/lib" - ls "$(python -c 'import site; print(site.getsitepackages()[0])')"/numba/np/ufunc/omppool.*.so | xargs install_name_tool -change @rpath/libiomp5.dylib $CONDA/lib/libiomp5.dylib - # Fix libomp.dylib - echo "Linking OpenMP into /usr/local/lib" - brew link --force libomp - echo "Checking /usr/local/lib for OpenMP" - ls /usr/local/lib/libomp.dylib - echo "Changing @rpath for the omppool.cpython-x-darwin.so shared object to look in /usr/local/lib" - ls "$(python -c 'import site; print(site.getsitepackages()[0])')"/numba/np/ufunc/omppool.*.so | xargs install_name_tool -change @rpath/libomp.dylib /usr/local/lib/libomp.dylib - echo "Checking Numba OpenMP Access" - python -c "from numba.np.ufunc import omppool" - fi - shell: bash - - name: Show Full Numba Environment - run: python -m numba -s - shell: bash - - name: Run Unit Tests - run: ./test.sh unit - shell: bash + uses: ./.github/workflows/reusable-workflow.yml@main + with: + python-version: ${{ matrix.python-version }} + test-type: 'unit' coverage-testing: - runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] - steps: - - uses: actions/checkout@v4 - - name: Set Up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: Display Python Version - run: python -c "import sys; print(sys.version)" - shell: bash - - name: Install STUMPY And Other Dependencies - run: python -m pip install --editable .[ci] - shell: bash - - name: Run Black - run: black --check --diff ./ - shell: bash - - name: Run Flake8 - run: flake8 ./ - shell: bash - - name: Link OpenMP - run: | - if [ "$RUNNER_OS" == "macOS" ]; then - brew link --force libomp - fi - shell: bash - - name: Show Full Numba Environment - run: python -m numba -s - shell: bash - - name: Run Coverage Tests - run: ./test.sh coverage - shell: bash - - name: Check Coverage Report - run: coverage report -m --fail-under=100 --skip-covered --omit=setup.py,docstring.py,min.py,stumpy/cache.py - shell: bash - - name: Upload Coverage Tests Results - uses: codecov/codecov-action@v4 + uses: ./.github/workflows/reusable-workflow.yml@main + with: + python-version: ${{ matrix.python-version }} + test-type: 'coverage' \ No newline at end of file diff --git a/.github/workflows/resuable-workflow.yml b/.github/workflows/resuable-workflow.yml new file mode 100644 index 000000000..2db81e1e3 --- /dev/null +++ b/.github/workflows/resuable-workflow.yml @@ -0,0 +1,46 @@ +name: Reusable Workflow +on: + workflow_call: + inputs: + python-version: + required: true + type: string + test-type: + required: true + type: string +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - uses: actions/checkout@v4 + - name: Set Up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ inputs.python-version }} + - name: Display Python Version + run: python -c "import sys; print(sys.version)" + shell: bash + - name: Install STUMPY And Other Dependencies + run: python -m pip install --editable .[ci] + shell: bash + - name: Run Black + run: black --check --diff ./ + shell: bash + - name: Run Flake8 + run: flake8 ./ + shell: bash + - name: Link OpenMP + run: | + if [ "$RUNNER_OS" == "macOS" ]; then + brew link --force libomp + fi + shell: bash + - name: Show Full Numba Environment + run: python -m numba -s + shell: bash + - name: Run Tests + run: ./test.sh ${{ inputs.test-type }} + shell: bash \ No newline at end of file