From eeb6dd8cf89696398fe9c38c2aee27c0c91147d6 Mon Sep 17 00:00:00 2001 From: Vincent Moens Date: Mon, 8 Jul 2024 10:25:35 +0100 Subject: [PATCH] init --- .github/workflows/build-wheels-linux.yml | 47 +++++ .github/workflows/build-wheels-windows.yml | 48 +++++ .github/workflows/wheels.yml | 193 --------------------- 3 files changed, 95 insertions(+), 193 deletions(-) create mode 100644 .github/workflows/build-wheels-linux.yml create mode 100644 .github/workflows/build-wheels-windows.yml delete mode 100644 .github/workflows/wheels.yml diff --git a/.github/workflows/build-wheels-linux.yml b/.github/workflows/build-wheels-linux.yml new file mode 100644 index 00000000000..5171a7c3e2a --- /dev/null +++ b/.github/workflows/build-wheels-linux.yml @@ -0,0 +1,47 @@ +name: Build Linux Wheels + +on: + pull_request: + push: + branches: + - nightly + - main + - release/* + tags: + # NOTE: Binary build pipelines should only get triggered on release candidate builds + # Release candidate tags look like: v1.11.0-rc1 + - v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ + workflow_dispatch: + +permissions: + id-token: write + contents: read + +jobs: + generate-matrix: + uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main + with: + package-type: wheel + os: linux + test-infra-repository: pytorch/test-infra + test-infra-ref: main + build: + needs: generate-matrix + strategy: + fail-fast: false + matrix: + include: + - repository: pytorch/rl + smoke-test-script: test/smoke_test.py + package-name: torchrl + name: pytorch/rl + uses: pytorch/test-infra/.github/workflows/build_wheels_linux.yml@main + with: + repository: ${{ matrix.repository }} + ref: "" + test-infra-repository: pytorch/test-infra + test-infra-ref: main + build-matrix: ${{ needs.generate-matrix.outputs.matrix }} + package-name: ${{ matrix.package-name }} + smoke-test-script: ${{ matrix.smoke-test-script }} + trigger-event: ${{ github.event_name }} diff --git a/.github/workflows/build-wheels-windows.yml b/.github/workflows/build-wheels-windows.yml new file mode 100644 index 00000000000..683f2a93f69 --- /dev/null +++ b/.github/workflows/build-wheels-windows.yml @@ -0,0 +1,48 @@ +name: Build Windows Wheels + +on: + pull_request: + push: + branches: + - nightly + - main + - release/* + tags: + # NOTE: Binary build pipelines should only get triggered on release candidate builds + # Release candidate tags look like: v1.11.0-rc1 + - v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ + workflow_dispatch: + +permissions: + id-token: write + contents: read + +jobs: + generate-matrix: + uses: pytorch/test-infra/.github/workflows/generate_binary_build_matrix.yml@main + with: + package-type: wheel + os: windows + test-infra-repository: pytorch/test-infra + test-infra-ref: main + build: + needs: generate-matrix + strategy: + fail-fast: false + matrix: + include: + - repository: pytorch/rl + post-script: "python packaging/wheel/relocate.py" + smoke-test-script: test/smoke_test.py + package-name: torchrl + name: pytorch/rl + uses: pytorch/test-infra/.github/workflows/build_wheels_windows.yml@main + with: + repository: ${{ matrix.repository }} + ref: "" + test-infra-repository: pytorch/test-infra + test-infra-ref: main + build-matrix: ${{ needs.generate-matrix.outputs.matrix }} + package-name: ${{ matrix.package-name }} + smoke-test-script: ${{ matrix.smoke-test-script }} + trigger-event: ${{ github.event_name }} diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml deleted file mode 100644 index 9b2e57db531..00000000000 --- a/.github/workflows/wheels.yml +++ /dev/null @@ -1,193 +0,0 @@ -name: Wheels -on: - pull_request: - types: [opened, synchronize, reopened] - push: - branches: - - release/* - -concurrency: - # Documentation suggests ${{ github.head_ref }}, but that's only available on pull_request/pull_request_target triggers, so using ${{ github.ref }}. - # On master, we want all builds to complete even if merging happens faster to make it easier to discover at which point something broke. - group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && format('ci-master-{0}', github.sha) || format('ci-{0}', github.ref) }} - cancel-in-progress: true - -jobs: - - build-wheel-linux: - runs-on: ubuntu-20.04 - strategy: - matrix: - python_version: [["3.8", "cp38-cp38"], ["3.9", "cp39-cp39"], ["3.10", "cp310-cp310"], ["3.11", "cp311-cp311"]] - cuda_support: [["", "--index-url https://download.pytorch.org/whl/cpu", "\"['cpu', '11.3', '11.6']\"", "cpu"]] - container: pytorch/manylinux-${{ matrix.cuda_support[3] }} - steps: - - name: Checkout torchrl - uses: actions/checkout@v2 - - name: Install PyTorch RC - run: | - export PATH="/opt/python/${{ matrix.python_version[1] }}/bin:$PATH" - python3 -mpip install torch ${{ matrix.cuda_support[1] }} - - name: Build wheel - run: | - export PATH="/opt/python/${{ matrix.python_version[1] }}/bin:$PATH" - python3 -mpip install wheel - TORCHRL_BUILD_VERSION=0.4.0 python3 setup.py bdist_wheel - # NB: wheels have the linux_x86_64 tag so we rename to manylinux1 - # find . -name 'dist/*whl' -exec bash -c ' mv $0 ${0/linux/manylinux1}' {} \; - # pytorch/pytorch binaries are also manylinux_2_17 compliant but they - # pretend that they're manylinux1 compliant so we do the same. - - name: Show auditwheel output; confirm 2-17 - run: | - python3 -mpip install auditwheel - auditwheel show dist/* - - name: Upload wheel for the test-wheel job - uses: actions/upload-artifact@v2 - with: - name: torchrl-linux-${{ matrix.python_version[0] }}.whl - path: dist/torchrl-*.whl - - name: Upload wheel for download - uses: actions/upload-artifact@v2 - with: - name: torchrl-batch.whl - path: dist/*.whl - - build-wheel-windows: - runs-on: windows-latest - strategy: - matrix: - python_version: [["3.8", "3.8"], ["3.9", "3.9"], ["3.10", "3.10.3"], ["3.11", "3.11"]] - steps: - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python_version[1] }} - - name: Checkout torchrl - uses: actions/checkout@v2 - - name: Install PyTorch RC - shell: bash - run: | - python3 -mpip install torch --index-url https://download.pytorch.org/whl/cpu - - name: Build wheel - shell: bash - run: | - python3 -mpip install wheel - TORCHRL_BUILD_VERSION=0.4.0 python3 setup.py bdist_wheel - - name: Upload wheel for the test-wheel job - uses: actions/upload-artifact@v2 - with: - name: torchrl-win-${{ matrix.python_version[0] }}.whl - path: dist/torchrl-*.whl - - name: Upload wheel for download - uses: actions/upload-artifact@v2 - with: - name: torchrl-batch.whl - path: dist/*.whl - - - test-wheel: - needs: [build-wheel-linux] - strategy: - matrix: - os: [["linux", "ubuntu-20.04"]] - python_version: [ "3.8", "3.9", "3.10", "3.11" ] - runs-on: ${{ matrix.os[1] }} - steps: - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python_version }} - architecture: x64 - - name: Checkout torchrl - uses: actions/checkout@v2 - - name: Install PyTorch RC - run: | - python3 -mpip install torch torchvision --index-url https://download.pytorch.org/whl/cpu - - name: Upgrade pip - run: | - python3 -mpip install --upgrade pip - - name: Install tensordict - run: | - python3 -mpip install git+https://github.com/pytorch/tensordict.git - - name: Install test dependencies - run: | - python3 -mpip install numpy pytest pytest-cov codecov unittest-xml-reporting pillow>=4.1.1 scipy av networkx expecttest pyyaml - - name: Download built wheels - uses: actions/download-artifact@v2 - with: - name: torchrl-${{ matrix.os[0] }}-${{ matrix.python_version }}.whl - path: /tmp/wheels - - name: Install built wheels - run: | - python3 -mpip install /tmp/wheels/* - - name: Log version string - run: | - # Avoid ambiguity of "import torchrl" by deleting the source files. - rm -rf torchrl/ - python -c "import torchrl; print(torchrl.__version__)" - - name: Run tests - run: | - set -e - export IN_CI=1 - mkdir test-reports - python -m torch.utils.collect_env - python -c "import torchrl; print(torchrl.__version__)" - EXIT_STATUS=0 - pytest test/smoke_test.py -v --durations 200 - exit $EXIT_STATUS - - test-wheel-windows: - needs: build-wheel-windows - strategy: - matrix: - python_version: [ "3.8", "3.9", "3.10", "3.11" ] - runs-on: windows-latest - steps: - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python_version }} - - name: Checkout torchrl - uses: actions/checkout@v2 - - name: Install PyTorch RC - shell: bash - run: | - python3 -mpip install torch torchvision --index-url https://download.pytorch.org/whl/cpu - - name: Upgrade pip - shell: bash - run: | - python3 -mpip install --upgrade pip - - name: Install tensordict - shell: bash - run: | - python3 -mpip install git+https://github.com/pytorch/tensordict.git - - name: Install test dependencies - shell: bash - run: | - python3 -mpip install numpy pytest pytest-cov codecov unittest-xml-reporting pillow>=4.1.1 scipy av networkx expecttest pyyaml - - name: Download built wheels - uses: actions/download-artifact@v2 - with: - name: torchrl-win-${{ matrix.python_version }}.whl - path: wheels - - name: Install built wheels - shell: bash - run: | - python3 -mpip install wheels/* - - name: Log version string - shell: bash - run: | - # Avoid ambiguity of "import torchrl" by deleting the source files. - rm -rf torchrl/ - python -c "import torchrl; print(torchrl.__version__)" - - name: Run tests - shell: bash - run: | - set -e - export IN_CI=1 - mkdir test-reports - python -m torch.utils.collect_env - python -c "import torchrl; print(torchrl.__version__)" - EXIT_STATUS=0 - pytest test/smoke_test.py -v --durations 200 - exit $EXIT_STATUS