From 4b6c4888d4230c57ccf53b0ed1d022a7dd1a8dc5 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 10 Aug 2026 14:56:41 +0200 Subject: [PATCH 1/7] Add reusable workflow with a single build job + single test job --- .github/workflows/conda-build-test.yml | 222 +++++++++++ .github/workflows/conda-package-cf.yml | 505 ++----------------------- .github/workflows/conda-package.yml | 345 +---------------- 3 files changed, 272 insertions(+), 800 deletions(-) create mode 100644 .github/workflows/conda-build-test.yml diff --git a/.github/workflows/conda-build-test.yml b/.github/workflows/conda-build-test.yml new file mode 100644 index 0000000..b04d14d --- /dev/null +++ b/.github/workflows/conda-build-test.yml @@ -0,0 +1,222 @@ +name: Reusable conda build and test + +on: + workflow_call: + inputs: + runs-on: + description: Runner image to execute the jobs on + required: true + type: string + conda-subdir: + description: Conda platform subdir (e.g. linux-64, win-64, osx-64) + required: true + type: string + pkgs-dir: + description: Directory to cache conda packages in + required: true + type: string + channels-list: + description: Conda channels to build and test against + required: true + type: string + recipe-dir: + description: Path to the conda recipe directory + required: true + type: string + build-wheels: + description: Whether to build and upload wheel packages + required: false + default: false + type: boolean + +permissions: read-all + +env: + module-name: mkl + package-name: mkl-service + ver-json-path: '${{ github.workspace }}/version.json' + ver-script-part1: "import json; f = open('version.json', 'r'); j = json.load(f); f.close(); " + ver-script-part2: "d = j['mkl-service'][0]; print('='.join((d[s] for s in ('version', 'build'))))" + +jobs: + build: + name: Build + + strategy: + matrix: + python: ['3.10', '3.11', '3.12', '3.13'] + include: + - python: '3.14' + python_spec: '3.14.* *_cp314' + python_tag: '3.14' + - python: '3.14' + python_spec: '3.14.* *_cp314t' + python_tag: '3.14t' + + permissions: + # Needed to cancel any previous runs that are not completed for a given workflow + actions: write + + runs-on: ${{ inputs.runs-on }} + timeout-minutes: 15 + + defaults: + run: + shell: bash -el {0} + + env: + build-env-name: 'build' + CONDA_PKGS_DIRS: ${{ inputs.pkgs-dir }} + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 + with: + access_token: ${{ github.token }} + + - name: Checkout repo + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + fetch-depth: 0 + + - name: Setup miniconda + uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 + with: + miniforge-version: latest + activate-environment: ${{ env.build-env-name }} + channels: conda-forge + python-version: ${{ matrix.python }} + + - name: Cache conda packages + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + env: + CACHE_NUMBER: 0 # Increase to reset cache + with: + path: ${{ inputs.pkgs-dir }} + key: + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }} + restore-keys: | + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- + + - name: Install conda-build + run: conda install -n base -y conda-build + + - name: Store conda paths as envs + run: | + echo "CONDA_BLD=$CONDA/conda-bld/${{ inputs.conda-subdir }}" >> "$GITHUB_ENV" + if [ "${{ inputs.build-wheels }}" = "true" ]; then + echo "WHEELS_OUTPUT_FOLDER=$GITHUB_WORKSPACE/" >> "$GITHUB_ENV" + fi + + - name: Build conda package + run: | + conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" ${{ inputs.channels-list }} ${{ inputs.recipe-dir }} + + - name: Upload artifact + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} + path: ${{ env.CONDA_BLD }}/${{ env.package-name }}-*.conda + + - name: Upload wheels artifact + if: ${{ inputs.build-wheels }} + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: ${{ env.package-name }} ${{ runner.os }} Wheels Python ${{ matrix.python_tag || matrix.python }} + path: ${{ env.WHEELS_OUTPUT_FOLDER }}mkl_service-*.whl + + test: + name: Test + needs: build + + strategy: + matrix: + python: ['3.10', '3.11', '3.12', '3.13'] + include: + - python: '3.14' + python_spec: '3.14.* *_cp314' + python_tag: '3.14' + - python: '3.14' + python_spec: '3.14.* *_cp314t' + python_tag: '3.14t' + + runs-on: ${{ inputs.runs-on }} + timeout-minutes: 15 + + defaults: + run: + shell: bash -el {0} + + env: + test-env-name: 'test' + channel-path: '${{ github.workspace }}/channel/' + pkg-path-in-channel: '${{ github.workspace }}/channel/${{ inputs.conda-subdir }}' + CONDA_PKGS_DIRS: ${{ inputs.pkgs-dir }} + + steps: + - name: Download artifact + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} + path: ${{ env.pkg-path-in-channel }} + + - name: Setup miniconda + uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 + with: + miniforge-version: latest + channels: conda-forge + activate-environment: ${{ env.test-env-name }} + python-version: ${{ matrix.python }} + + - name: Install conda-index + run: conda install conda-index + + - name: Create conda channel + run: | + python -m conda_index ${{ env.channel-path }} + + - name: Test conda channel + run: | + conda search ${{ env.package-name }} -c ${{ env.channel-path }} --override-channels --info --json > ${{ env.ver-json-path }} + cat ${{ env.ver-json-path }} + + - name: Get package version + run: | + PACKAGE_VERSION=$(python -c "${{ env.ver-script-part1 }} ${{ env.ver-script-part2 }}") + export PACKAGE_VERSION + + echo "PACKAGE_VERSION=${PACKAGE_VERSION}" + echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> "$GITHUB_ENV" + + - name: Collect dependencies + run: | + conda install ${{ env.package-name }}=${{ env.PACKAGE_VERSION }} pytest "python=${{ matrix.python_spec || matrix.python }}" ${{ env.CHANNELS }} --only-deps --dry-run > lockfile + cat lockfile + env: + CHANNELS: '-c ${{ env.channel-path }} ${{ inputs.channels-list }}' + + - name: Cache conda packages + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 + env: + CACHE_NUMBER: 0 # Increase to reset cache + with: + path: ${{ inputs.pkgs-dir }} + key: + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }} + restore-keys: | + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- + + - name: Install mkl-service + run: | + conda install ${{ env.package-name }}=${{ env.PACKAGE_VERSION }} pytest "python=${{ matrix.python_spec || matrix.python }}" ${{ env.CHANNELS }} + env: + CHANNELS: '-c ${{ env.channel-path }} ${{ inputs.channels-list }}' + + - name: List installed packages + run: conda list + + - name: Run tests + run: | + pytest -vv --pyargs ${{ env.module-name }} diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 46bbf08..ff9c35d 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -8,480 +8,33 @@ on: permissions: read-all -env: - PACKAGE_NAME: mkl-service - MODULE_NAME: mkl - TEST_ENV_NAME: test_mkl_service - VER_SCRIPT1: "import json; f = open('ver.json', 'r'); j = json.load(f); f.close(); " - VER_SCRIPT2: "d = j['mkl-service'][0]; print('='.join((d[s] for s in ('version', 'build'))))" - jobs: - build_linux: - runs-on: ubuntu-latest - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 - with: - access_token: ${{ github.token }} - - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - - - name: Set pkgs_dirs - run: | - echo "pkgs_dirs: [~/.conda/pkgs]" >> ~/.condarc - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 0 # Increase to reset cache - with: - path: ~/.conda/pkgs - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Add conda to system path - run: echo "$CONDA/bin" >> "$GITHUB_PATH" - - - name: Install conda-build - run: conda install conda-build - - - name: Store conda paths as envs - shell: bash -el {0} - run: | - echo "CONDA_BLD=/usr/share/miniconda/conda-bld/linux-64/" >> "$GITHUB_ENV" - - - name: Build conda package - run: | - CHANNELS=(-c conda-forge --override-channels) - VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}") - TEST=(--no-test) - - conda build \ - "${TEST[@]}" \ - "${VERSIONS[@]}" \ - "${CHANNELS[@]}" \ - conda-recipe-cf - - - name: Upload artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda - - build_windows: - runs-on: windows-latest - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 - with: - access_token: ${{ github.token }} - - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 - with: - miniforge-version: latest - activate-environment: build - channels: conda-forge - python-version: ${{ matrix.python }} - - - name: Update conda - run: | - conda update -n base --all - - - name: Install conda build - run: | - conda install -n base -y conda-build - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 3 # Increase to reset cache - with: - path: /home/runner/conda_pkgs_dir - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Store conda paths as envs - shell: bash -el {0} - run: | - echo "CONDA_BLD=$CONDA\\conda-bld\\win-64\\" >> "$GITHUB_ENV" - - - name: Show Conda info - run: | - conda info --all - - - name: List base environment packages - run: | - conda list -n base - - - name: Build conda package - run: conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" -c conda-forge --override-channels conda-recipe-cf - - - name: Upload artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda - - test_linux: - needs: build_linux - runs-on: ubuntu-latest - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - experimental: [false] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - experimental: false - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - experimental: false - continue-on-error: ${{ matrix.experimental }} - env: - CHANNELS: -c conda-forge --override-channels - - steps: - - name: Download artifact - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - - - name: Add conda to system path - run: echo "$CONDA/bin" >> "$GITHUB_PATH" - - - name: Install conda-build - run: conda install conda-build - - - name: Create conda channel - run: | - mkdir -p "$GITHUB_WORKSPACE/channel/linux-64" - conda index "$GITHUB_WORKSPACE/channel" || exit 1 - mv "${PACKAGE_NAME}"-*.conda "$GITHUB_WORKSPACE/channel/linux-64" || exit 1 - conda index "$GITHUB_WORKSPACE/channel" || exit 1 - # Test channel - conda search "$PACKAGE_NAME" -c "$GITHUB_WORKSPACE/channel" --override-channels --info --json > "$GITHUB_WORKSPACE/ver.json" - cat ver.json - - - name: Collect dependencies - run: | - . "$CONDA/etc/profile.d/conda.sh" - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels) - PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" - export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "$PACKAGE_NAME=$PACKAGE_VERSION" "python=${{ matrix.python_spec || matrix.python }}" "${CHANNELS[@]}" --only-deps --dry-run > lockfile - cat lockfile - - - name: Set pkgs_dirs - run: | - echo "pkgs_dirs: [~/.conda/pkgs]" >> ~/.condarc - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 0 # Increase to reset cache - with: - path: ~/.conda/pkgs - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Install mkl-service - run: | - . "$CONDA/etc/profile.d/conda.sh" - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels) - PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" - export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "$PACKAGE_NAME=$PACKAGE_VERSION" pytest "python=${{ matrix.python_spec || matrix.python }}" "${CHANNELS[@]}" - # Test installed packages - conda list - - - name: Run tests - run: | - . "$CONDA/etc/profile.d/conda.sh" - conda activate ${{ env.TEST_ENV_NAME }} - pytest -vv --pyargs ${{ env.MODULE_NAME }} - - test_windows: - needs: build_windows - runs-on: windows-latest - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - experimental: [false] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - experimental: false - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - experimental: false - continue-on-error: ${{ matrix.experimental }} - env: - CHANNELS: -c conda-forge --override-channels - - steps: - - name: Download artifact - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 - with: - miniforge-version: latest - channels: conda-forge - activate-environment: base - - - name: Install conda-index - run: conda install -n base conda-index - - - name: Create conda channel - run: | - mkdir ${{ env.GITHUB_WORKSPACE }}/channel/win-64 - move ${{ env.PACKAGE_NAME }}-*.conda ${{ env.GITHUB_WORKSPACE }}/channel/win-64 - conda index ${{ env.GITHUB_WORKSPACE }}/channel - - # Test channel - conda search ${{ env.PACKAGE_NAME }} -c ${{ env.GITHUB_WORKSPACE }}/channel --override-channels --info --json > ${{ env.GITHUB_WORKSPACE }}/ver.json - more ${{ env.GITHUB_WORKSPACE }}/ver.json - - - name: Collect dependencies - shell: cmd - run: | - @ECHO ON - copy /Y ${{ env.GITHUB_WORKSPACE }}\ver.json . - set "SCRIPT=%VER_SCRIPT1% %VER_SCRIPT2%" - FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO ( - SET PACKAGE_VERSION=%%F - ) - conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% "python=${{ matrix.python_spec || matrix.python }}" -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} --only-deps --dry-run > lockfile - more lockfile - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 3 # Increase to reset cache - with: - path: /home/runner/conda_pkgs_dir - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Install mkl-service - shell: cmd - run: | - @ECHO ON - copy /Y ${{ env.GITHUB_WORKSPACE }}\ver.json . - set "SCRIPT=%VER_SCRIPT1% %VER_SCRIPT2%" - FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO ( - SET PACKAGE_VERSION=%%F - ) - conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% pytest "python=${{ matrix.python_spec || matrix.python }}" -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} - # Test installed packages - conda list - - - name: Run tests - run: | - conda activate ${{ env.TEST_ENV_NAME }} - pytest -v --pyargs ${{ env.MODULE_NAME }} - - build_osx: - runs-on: macos-26-intel - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 - with: - access_token: ${{ github.token }} - - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - - - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 - with: - miniforge-version: latest - activate-environment: build - channels: conda-forge - python-version: ${{ matrix.python }} - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 0 # Increase to reset cache - with: - path: /Users/runner/conda_pkgs_dir - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Install conda-build - shell: bash -el {0} - run: | - conda install -n base -y conda-build - conda list -n base - - - name: Store conda paths as envs - shell: bash -el {0} - run: | - echo "CONDA_BLD=$CONDA/conda-bld/osx-64/" >> "$GITHUB_ENV" - - - name: Build conda package - shell: bash -el {0} - run: | - CHANNELS=(-c conda-forge --override-channels) - VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}") - TEST=(--no-test) - - conda build \ - "${TEST[@]}" \ - "${VERSIONS[@]}" \ - "${CHANNELS[@]}" \ - conda-recipe-cf - - - name: Upload artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda - - test_osx: - needs: build_osx - runs-on: macos-26-intel - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - experimental: [false] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - experimental: false - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - experimental: false - continue-on-error: ${{ matrix.experimental }} - env: - CHANNELS: -c conda-forge --override-channels - - steps: - - name: Download artifact - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - - - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 - with: - miniforge-version: latest - channels: conda-forge - activate-environment: base - - - name: Install conda-index - shell: bash -el {0} - run: conda install -n base -y conda-index - - - name: Create conda channel - shell: bash -el {0} - run: | - mkdir -p "$GITHUB_WORKSPACE/channel/osx-64" - conda index "$GITHUB_WORKSPACE/channel" || exit 1 - mv "${PACKAGE_NAME}"-*.conda "$GITHUB_WORKSPACE/channel/osx-64" || exit 1 - conda index "$GITHUB_WORKSPACE/channel" || exit 1 - # Test channel - conda search "$PACKAGE_NAME" -c "$GITHUB_WORKSPACE/channel" --override-channels --info --json > "$GITHUB_WORKSPACE/ver.json" - cat ver.json - - - name: Collect dependencies - shell: bash -el {0} - run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels) - PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" - export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "$PACKAGE_NAME=$PACKAGE_VERSION" "python=${{ matrix.python_spec || matrix.python }}" "${CHANNELS[@]}" --only-deps --dry-run > lockfile - cat lockfile - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 0 # Increase to reset cache - with: - path: /Users/runner/conda_pkgs_dir - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Install mkl-service - shell: bash -el {0} - run: | - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c conda-forge --override-channels) - PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" - export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "$PACKAGE_NAME=$PACKAGE_VERSION" pytest "python=${{ matrix.python_spec || matrix.python }}" "${CHANNELS[@]}" - # Test installed packages - conda list -n "${{ env.TEST_ENV_NAME }}" - - - name: Run tests - shell: bash -el {0} - run: | - conda activate ${{ env.TEST_ENV_NAME }} - pytest -vv --pyargs ${{ env.MODULE_NAME }} + linux: + name: conda-forge / linux + uses: ./.github/workflows/conda-build-test.yml + with: + runs-on: ubuntu-latest + conda-subdir: linux-64 + pkgs-dir: /home/runner/conda_pkgs_dir + channels-list: -c conda-forge --override-channels + recipe-dir: conda-recipe-cf + + windows: + name: conda-forge / windows + uses: ./.github/workflows/conda-build-test.yml + with: + runs-on: windows-latest + conda-subdir: win-64 + pkgs-dir: D:\conda_pkgs_dir + channels-list: -c conda-forge --override-channels + recipe-dir: conda-recipe-cf + + osx: + name: conda-forge / osx + uses: ./.github/workflows/conda-build-test.yml + with: + runs-on: macos-26-intel + conda-subdir: osx-64 + pkgs-dir: /Users/runner/conda_pkgs_dir + channels-list: -c conda-forge --override-channels + recipe-dir: conda-recipe-cf diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 114f73f..0f1d1c6 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -8,328 +8,25 @@ on: permissions: read-all -env: - PACKAGE_NAME: mkl-service - MODULE_NAME: mkl - TEST_ENV_NAME: test_mkl_service - VER_SCRIPT1: "import json; f = open('ver.json', 'r'); j = json.load(f); f.close(); " - VER_SCRIPT2: "d = j['mkl-service'][0]; print('='.join((d[s] for s in ('version', 'build'))))" - jobs: - build_linux: - runs-on: ubuntu-latest - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 - with: - access_token: ${{ github.token }} - - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - - - name: Set pkgs_dirs - run: | - echo "pkgs_dirs: [~/.conda/pkgs]" >> ~/.condarc - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 0 # Increase to reset cache - with: - path: ~/.conda/pkgs - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Add conda to system path - run: echo "$CONDA/bin" >> "$GITHUB_PATH" - - - name: Install conda-build - run: conda install conda-build - - - name: Store conda paths as envs - shell: bash -el {0} - run: | - echo "CONDA_BLD=/usr/share/miniconda/conda-bld/linux-64/" >> "$GITHUB_ENV" - echo "WHEELS_OUTPUT_FOLDER=$GITHUB_WORKSPACE/" >> "$GITHUB_ENV" - - - name: Build conda package - run: | - CHANNELS=(-c conda-forge -c https://software.repos.intel.com/python/conda --override-channels) - VERSIONS=(--python "${{ matrix.python_spec || matrix.python }}") - TEST=(--no-test) - - conda build \ - "${TEST[@]}" \ - "${VERSIONS[@]}" \ - "${CHANNELS[@]}" \ - conda-recipe - - - name: Upload artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda - - - name: Upload wheels artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Wheels Python ${{ matrix.python_tag || matrix.python }} - path: ${{ env.WHEELS_OUTPUT_FOLDER }}mkl_service-*.whl - - build_windows: - runs-on: windows-latest - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 - with: - access_token: ${{ github.token }} - - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 - with: - miniforge-version: latest - activate-environment: build - channels: conda-forge - python-version: ${{ matrix.python }} - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 3 # Increase to reset cache - with: - path: /home/runner/conda_pkgs_dir - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('**/meta.yaml') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Store conda paths as envs - shell: bash -el {0} - run: | - echo "CONDA_BLD=$CONDA\\conda-bld\\win-64\\" >> "$GITHUB_ENV" - echo "WHEELS_OUTPUT_FOLDER=$GITHUB_WORKSPACE\\" >> "$GITHUB_ENV" - - - name: Install conda build - run: | - conda install -n base -y conda-build - conda list -n base - - - name: Build conda package - run: conda build --no-test --python "${{ matrix.python_spec || matrix.python }}" -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels conda-recipe - - - name: Upload artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda - - - name: Upload wheels artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Wheels Python ${{ matrix.python_tag || matrix.python }} - path: ${{ env.WHEELS_OUTPUT_FOLDER }}mkl_service-*.whl - - test_linux: - needs: build_linux - runs-on: ubuntu-latest - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - experimental: [false] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - experimental: false - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - experimental: false - continue-on-error: ${{ matrix.experimental }} - env: - CHANNELS: -c conda-forge -c https://software.repos.intel.com/python/conda --override-channels - - steps: - - name: Download artifact - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - - - name: Add conda to system path - run: echo "$CONDA/bin" >> "$GITHUB_PATH" - - - name: Install conda-build - run: conda install conda-build - - - name: Create conda channel - run: | - mkdir -p "$GITHUB_WORKSPACE/channel/linux-64" - conda index "$GITHUB_WORKSPACE/channel" || exit 1 - mv "${PACKAGE_NAME}"-*.conda "$GITHUB_WORKSPACE/channel/linux-64" || exit 1 - conda index "$GITHUB_WORKSPACE/channel" || exit 1 - # Test channel - conda search "$PACKAGE_NAME" -c "$GITHUB_WORKSPACE/channel" --override-channels --info --json > "$GITHUB_WORKSPACE/ver.json" - cat ver.json - - - name: Collect dependencies - run: | - . "$CONDA/etc/profile.d/conda.sh" - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c conda-forge -c https://software.repos.intel.com/python/conda --override-channels) - PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" - export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "$PACKAGE_NAME=$PACKAGE_VERSION" "python=${{ matrix.python_spec || matrix.python }}" "${CHANNELS[@]}" --only-deps --dry-run > lockfile - cat lockfile - - - name: Set pkgs_dirs - run: | - echo "pkgs_dirs: [~/.conda/pkgs]" >> ~/.condarc - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 0 # Increase to reset cache - with: - path: ~/.conda/pkgs - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - - name: Install mkl-service - run: | - . "$CONDA/etc/profile.d/conda.sh" - CHANNELS=(-c "$GITHUB_WORKSPACE/channel" -c conda-forge -c https://software.repos.intel.com/python/conda --override-channels) - PACKAGE_VERSION="$(python -c "${VER_SCRIPT1} ${VER_SCRIPT2}")" - export PACKAGE_VERSION - conda create -n "${{ env.TEST_ENV_NAME }}" "$PACKAGE_NAME=$PACKAGE_VERSION" pytest "python=${{ matrix.python_spec || matrix.python }}" "${CHANNELS[@]}" - # Test installed packages - conda list - - - name: Run tests - run: | - . "$CONDA/etc/profile.d/conda.sh" - conda activate ${{ env.TEST_ENV_NAME }} - pytest -vv --pyargs ${{ env.MODULE_NAME }} - - test_windows: - needs: build_windows - runs-on: windows-latest - - strategy: - matrix: - python: ['3.10', '3.11', '3.12', '3.13'] - experimental: [false] - include: - - python: '3.14' - python_spec: '3.14.* *_cp314' - python_tag: '3.14' - experimental: false - - python: '3.14' - python_spec: '3.14.* *_cp314t' - python_tag: '3.14t' - experimental: false - continue-on-error: ${{ matrix.experimental }} - env: - CHANNELS: -c conda-forge -c https://software.repos.intel.com/python/conda --override-channels - - steps: - - name: Download artifact - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_tag || matrix.python }} - - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1 - with: - miniforge-version: latest - channels: conda-forge - activate-environment: base - - - name: Install conda-index - run: conda install -n base conda-index - - - name: Create conda channel - run: | - mkdir ${{ env.GITHUB_WORKSPACE }}/channel/win-64 - move ${{ env.PACKAGE_NAME }}-*.conda ${{ env.GITHUB_WORKSPACE }}/channel/win-64 - conda index ${{ env.GITHUB_WORKSPACE }}/channel - - # Test channel - conda search ${{ env.PACKAGE_NAME }} -c ${{ env.GITHUB_WORKSPACE }}/channel --override-channels --info --json > ${{ env.GITHUB_WORKSPACE }}/ver.json - more ${{ env.GITHUB_WORKSPACE }}/ver.json - - - name: Collect dependencies - shell: cmd - run: | - @ECHO ON - copy /Y ${{ env.GITHUB_WORKSPACE }}\ver.json . - set "SCRIPT=%VER_SCRIPT1% %VER_SCRIPT2%" - FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO ( - SET PACKAGE_VERSION=%%F - ) - conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% "python=${{ matrix.python_spec || matrix.python }}" -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} --only-deps --dry-run > lockfile - more lockfile - - - name: Cache conda packages - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - env: - CACHE_NUMBER: 3 # Increase to reset cache - with: - path: /home/runner/conda_pkgs_dir - key: - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}-${{hashFiles('lockfile') }} - restore-keys: | - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python_tag || matrix.python }}- - ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - # add intel-openmp as an explicit dependency - # to avoid it being missed when package version is specified exactly - - name: Install mkl-service - shell: cmd - run: | - @ECHO ON - copy /Y ${{ env.GITHUB_WORKSPACE }}\ver.json . - set "SCRIPT=%VER_SCRIPT1% %VER_SCRIPT2%" - FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO ( - SET PACKAGE_VERSION=%%F - ) - SET "WORKAROUND_DEPENDENCIES=intel-openmp" - conda create -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% %WORKAROUND_DEPENDENCIES% pytest "python=${{ matrix.python_spec || matrix.python }}" -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} - # Test installed packages - conda list - - - name: Run tests - run: | - conda activate ${{ env.TEST_ENV_NAME }} - pytest -v --pyargs ${{ env.MODULE_NAME }} + linux: + name: Intel / linux + uses: ./.github/workflows/conda-build-test.yml + with: + runs-on: ubuntu-latest + conda-subdir: linux-64 + pkgs-dir: /home/runner/conda_pkgs_dir + channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels + recipe-dir: conda-recipe + build-wheels: true + + windows: + name: Intel / windows + uses: ./.github/workflows/conda-build-test.yml + with: + runs-on: windows-latest + conda-subdir: win-64 + pkgs-dir: D:\conda_pkgs_dir + channels-list: -c https://software.repos.intel.com/python/conda -c conda-forge --override-channels + recipe-dir: conda-recipe + build-wheels: true From 6dd9e13c97adeb195831d49028035f30d100db65 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 10 Aug 2026 16:25:15 +0200 Subject: [PATCH 2/7] Drop obsolete cancel step --- .github/workflows/conda-build-test.yml | 9 --------- .github/workflows/conda-package-cf.yml | 4 ++++ .github/workflows/conda-package.yml | 4 ++++ 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/conda-build-test.yml b/.github/workflows/conda-build-test.yml index b04d14d..8334284 100644 --- a/.github/workflows/conda-build-test.yml +++ b/.github/workflows/conda-build-test.yml @@ -53,10 +53,6 @@ jobs: python_spec: '3.14.* *_cp314t' python_tag: '3.14t' - permissions: - # Needed to cancel any previous runs that are not completed for a given workflow - actions: write - runs-on: ${{ inputs.runs-on }} timeout-minutes: 15 @@ -69,11 +65,6 @@ jobs: CONDA_PKGS_DIRS: ${{ inputs.pkgs-dir }} steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@d07a454dad7609a92316b57b23c9ccfd4f59af66 # 0.13.1 - with: - access_token: ${{ github.token }} - - name: Checkout repo uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index ff9c35d..116d3a1 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -8,6 +8,10 @@ on: permissions: read-all +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: linux: name: conda-forge / linux diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 0f1d1c6..29b2b36 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -8,6 +8,10 @@ on: permissions: read-all +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: linux: name: Intel / linux From cba8ca0bcf841eddd6c888bb4b22984aba464e88 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 10 Aug 2026 16:32:28 +0200 Subject: [PATCH 3/7] Rename the workflows to improve verbose --- .github/workflows/conda-package-cf.yml | 6 +++--- .github/workflows/conda-package.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 116d3a1..cb16da9 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -14,7 +14,7 @@ concurrency: jobs: linux: - name: conda-forge / linux + name: linux uses: ./.github/workflows/conda-build-test.yml with: runs-on: ubuntu-latest @@ -24,7 +24,7 @@ jobs: recipe-dir: conda-recipe-cf windows: - name: conda-forge / windows + name: windows uses: ./.github/workflows/conda-build-test.yml with: runs-on: windows-latest @@ -34,7 +34,7 @@ jobs: recipe-dir: conda-recipe-cf osx: - name: conda-forge / osx + name: osx uses: ./.github/workflows/conda-build-test.yml with: runs-on: macos-26-intel diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 29b2b36..ef4b969 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -1,4 +1,4 @@ -name: Conda package +name: Conda package using Intel channel on: push: @@ -14,7 +14,7 @@ concurrency: jobs: linux: - name: Intel / linux + name: linux uses: ./.github/workflows/conda-build-test.yml with: runs-on: ubuntu-latest @@ -25,7 +25,7 @@ jobs: build-wheels: true windows: - name: Intel / windows + name: windows uses: ./.github/workflows/conda-build-test.yml with: runs-on: windows-latest From cdfdc841628326bc95fd70f52d6c06756aebb375 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 10 Aug 2026 16:34:02 +0200 Subject: [PATCH 4/7] Stop interrupting parallel jobs on failure --- .github/workflows/conda-build-test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/conda-build-test.yml b/.github/workflows/conda-build-test.yml index 8334284..67d618e 100644 --- a/.github/workflows/conda-build-test.yml +++ b/.github/workflows/conda-build-test.yml @@ -43,6 +43,7 @@ jobs: name: Build strategy: + fail-fast: false matrix: python: ['3.10', '3.11', '3.12', '3.13'] include: @@ -122,6 +123,7 @@ jobs: needs: build strategy: + fail-fast: false matrix: python: ['3.10', '3.11', '3.12', '3.13'] include: From 4dd7170e3ead1040a61e53a9fabdc4f9ab35f5d0 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 10 Aug 2026 16:37:36 +0200 Subject: [PATCH 5/7] Put the indexing tool back in base env --- .github/workflows/conda-build-test.yml | 4 ++-- .github/workflows/conda-package.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/conda-build-test.yml b/.github/workflows/conda-build-test.yml index 67d618e..1460573 100644 --- a/.github/workflows/conda-build-test.yml +++ b/.github/workflows/conda-build-test.yml @@ -163,11 +163,11 @@ jobs: python-version: ${{ matrix.python }} - name: Install conda-index - run: conda install conda-index + run: conda install -n base -y conda-index - name: Create conda channel run: | - python -m conda_index ${{ env.channel-path }} + conda run -n base python -m conda_index ${{ env.channel-path }} - name: Test conda channel run: | diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index ef4b969..9a069ce 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -1,4 +1,4 @@ -name: Conda package using Intel channel +name: Conda package using Intel on: push: From af26b8aa71ac2db4125b78bcc40cdeeb61a65c0a Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 10 Aug 2026 16:55:53 +0200 Subject: [PATCH 6/7] Made all three paths relative --- .github/workflows/conda-build-test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/conda-build-test.yml b/.github/workflows/conda-build-test.yml index 1460573..6b100fa 100644 --- a/.github/workflows/conda-build-test.yml +++ b/.github/workflows/conda-build-test.yml @@ -34,7 +34,7 @@ permissions: read-all env: module-name: mkl package-name: mkl-service - ver-json-path: '${{ github.workspace }}/version.json' + ver-json-path: 'version.json' ver-script-part1: "import json; f = open('version.json', 'r'); j = json.load(f); f.close(); " ver-script-part2: "d = j['mkl-service'][0]; print('='.join((d[s] for s in ('version', 'build'))))" @@ -143,8 +143,8 @@ jobs: env: test-env-name: 'test' - channel-path: '${{ github.workspace }}/channel/' - pkg-path-in-channel: '${{ github.workspace }}/channel/${{ inputs.conda-subdir }}' + channel-path: './channel' + pkg-path-in-channel: './channel/${{ inputs.conda-subdir }}' CONDA_PKGS_DIRS: ${{ inputs.pkgs-dir }} steps: From 554b8123504a1c0e9fba7c6a127b65d6401db884 Mon Sep 17 00:00:00 2001 From: Anton Volkov Date: Mon, 10 Aug 2026 17:38:22 +0200 Subject: [PATCH 7/7] Simplify wheels output path handling Drop the per-OS separator branch for WHEELS_OUTPUT_FOLDER: copying into a directory needs no trailing separator under either cmd or bash, and the upload glob supplies its own (normalized) separator. --- .github/workflows/conda-build-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/conda-build-test.yml b/.github/workflows/conda-build-test.yml index 6b100fa..8310c05 100644 --- a/.github/workflows/conda-build-test.yml +++ b/.github/workflows/conda-build-test.yml @@ -98,7 +98,7 @@ jobs: run: | echo "CONDA_BLD=$CONDA/conda-bld/${{ inputs.conda-subdir }}" >> "$GITHUB_ENV" if [ "${{ inputs.build-wheels }}" = "true" ]; then - echo "WHEELS_OUTPUT_FOLDER=$GITHUB_WORKSPACE/" >> "$GITHUB_ENV" + echo "WHEELS_OUTPUT_FOLDER=${{ github.workspace }}" >> "$GITHUB_ENV" fi - name: Build conda package @@ -116,7 +116,7 @@ jobs: uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: ${{ env.package-name }} ${{ runner.os }} Wheels Python ${{ matrix.python_tag || matrix.python }} - path: ${{ env.WHEELS_OUTPUT_FOLDER }}mkl_service-*.whl + path: ${{ env.WHEELS_OUTPUT_FOLDER }}/mkl_service-*.whl test: name: Test