diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index 406aaf1095..fab2721f11 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -8,52 +8,54 @@ env: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: matrix: + os: [ubuntu-latest, windows-latest] + include: + - os: ubuntu-latest + pkgs_dirs: ~/.conda/pkgs + condarc: ~/.condarc + conda-bld: /usr/share/miniconda/conda-bld/linux-64/ + - os: windows-latest + pkgs_dirs: C:\Users\runneradmin\.conda\pkgs + condarc: C:\Users\runneradmin\.condarc + conda-bld: C:\Miniconda\conda-bld\win-64\ python: [3.8] steps: - uses: actions/checkout@v2 with: fetch-depth: 0 + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-activate-base: true + activate-environment: "" - name: Set pkgs_dirs run: | - echo "pkgs_dirs: [~/.conda/pkgs]" >> ~/.condarc + echo "pkgs_dirs: [${{ matrix.pkgs_dirs }}]" >> ${{ matrix.condarc }} - name: Cache conda packages uses: actions/cache@v2 env: CACHE_NUMBER: 0 # Increase to reset cache with: - path: ~/.conda/pkgs + path: ${{ matrix.pkgs_dirs }} key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('**/meta.yaml') }} restore-keys: | ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ 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: Build conda package - run: | - CHANNELS="-c intel -c defaults --override-channels" - VERSIONS="--python ${{ matrix.python }}" - TEST="--no-test" - - conda build \ - $TEST \ - $VERSIONS \ - $CHANNELS \ - conda-recipe + run: conda build --no-test --python ${{ matrix.python }} -c intel -c defaults --override-channels conda-recipe - name: Upload artifact uses: actions/upload-artifact@v2 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} - path: /usr/share/miniconda/conda-bld/linux-64/${{ env.PACKAGE_NAME }}-*.tar.bz2 + path: ${{ matrix.conda-bld }}${{ env.PACKAGE_NAME }}-*.tar.bz2 - test: + test_linux: needs: build runs-on: ${{ matrix.runner }} @@ -86,7 +88,6 @@ jobs: conda index $GITHUB_WORKSPACE/channel # Test channel conda search $PACKAGE_NAME -c $GITHUB_WORKSPACE/channel --override-channels - - name: Collect dependencies run: | CHANNELS="-c $GITHUB_WORKSPACE/channel ${{ env.CHANNELS }}" @@ -105,7 +106,6 @@ jobs: restore-keys: | ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}- ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- - - name: Install dpctl run: | CHANNELS="-c $GITHUB_WORKSPACE/channel ${{ env.CHANNELS }}" @@ -119,8 +119,67 @@ jobs: # clinfo -l python -m pytest --pyargs $MODULE_NAME - upload: - needs: test + test_windows: + needs: build + runs-on: ${{ matrix.runner }} + + strategy: + matrix: + python: [3.8] + experimental: [false] + runner: [windows-latest] + continue-on-error: ${{ matrix.experimental }} + env: + CHANNELS: -c intel -c defaults --override-channels + + steps: + - name: Download artifact + uses: actions/download-artifact@v2 + with: + name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-activate-base: true + activate-environment: "" + - name: Install conda-build + run: conda install conda-build + - name: Create conda channel + run: | + mkdir -p $GITHUB_WORKSPACE/channel/win-64 + mv ${{ env.PACKAGE_NAME }}-*.tar.bz2 ${{ 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 + - name: Collect dependencies + run: conda install ${{ env.PACKAGE_NAME }} python=${{ matrix.python }} -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} --only-deps --dry-run > lockfile + - name: Set pkgs_dirs + run: | + echo "pkgs_dirs: [C:\Users\runneradmin\.conda\pkgs]" >> C:\Users\runneradmin\.condarc + - name: Cache conda packages + uses: actions/cache@v2 + env: + CACHE_NUMBER: 0 # Increase to reset cache + with: + path: C:\Users\runneradmin\.conda\pkgs + key: + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}-${{hashFiles('lockfile') }} + restore-keys: | + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-python-${{ matrix.python }}- + ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}- + - name: Install opencl_rt + run: conda install opencl_rt -c intel --override-channels + - name: Install dpctl + run: | + conda install ${{ env.PACKAGE_NAME }} pytest python=${{ matrix.python }} -c ${{ env.GITHUB_WORKSPACE }}/channel ${{ env.CHANNELS }} + # Test installed packages + conda list + - name: Add library + run: echo "OCL_ICD_FILENAMES=C:\Miniconda\Library\lib\intelocl64.dll" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append + - name: Run tests + run: python -m pytest --pyargs ${{ env.MODULE_NAME }} + + upload_linux: + needs: test_linux if: ${{ github.ref == 'refs/heads/master' }} runs-on: ubuntu-latest strategy: @@ -143,3 +202,29 @@ jobs: run: | conda install anaconda-client anaconda --token $ANACONDA_TOKEN upload --user dppy --label dev ${PACKAGE_NAME}-*.tar.bz2 + + upload_windows: + needs: test_windows + if: ${{ github.ref == 'refs/heads/master' }} + runs-on: windows-latest + strategy: + matrix: + python: [3.8] + steps: + - name: Download artifact + uses: actions/download-artifact@v2 + with: + name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} + - uses: conda-incubator/setup-miniconda@v2 + with: + auto-activate-base: true + activate-environment: "" + - name: Install anaconda-client + run: conda install anaconda-client + + - name: Upload + env: + ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} + run: | + conda install anaconda-client + anaconda --token ${{ env.ANACONDA_TOKEN }} upload --user dppy --label dev ${{ env.PACKAGE_NAME }}-*.tar.bz2