| # @generated DO NOT EDIT MANUALLY | |
| # Template is at: .github/templates/windows_binary_build_workflow.yml.j2 | |
| # Generation script: .github/scripts/generate_ci_workflows.py | |
| name: windows-binary-libtorch-debug | |
| on: | |
| push: | |
| branches: | |
| - master | |
| tags: | |
| - 'ciflow/trunk/*' | |
| workflow_dispatch: | |
| env: | |
| # Needed for conda builds | |
| ALPINE_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/tool/alpine" | |
| ANACONDA_USER: pytorch | |
| AWS_DEFAULT_REGION: us-east-1 | |
| BUILD_ENVIRONMENT: windows-binary-libtorch-debug | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| PR_NUMBER: ${{ github.event.pull_request.number }} | |
| SHA1: ${{ github.event.pull_request.head.sha || github.sha }} | |
| SKIP_ALL_TESTS: 1 | |
| concurrency: | |
| group: windows-binary-libtorch-debug-${{ github.event.pull_request.number || github.ref_name }}-${{ github.ref_type == 'branch' && github.sha }}-${{ github.event_name == 'workflow_dispatch' }} | |
| cancel-in-progress: true | |
| jobs: | |
| libtorch-cpu-shared-with-deps-debug-build: | |
| if: ${{ github.repository_owner == 'pytorch' }} | |
| runs-on: windows.4xlarge | |
| timeout-minutes: 240 | |
| env: | |
| PYTORCH_ROOT: ${{ github.workspace }}/pytorch | |
| BUILDER_ROOT: ${{ github.workspace }}/builder | |
| PACKAGE_TYPE: libtorch | |
| # TODO: This is a legacy variable that we eventually want to get rid of in | |
| # favor of GPU_ARCH_VERSION | |
| DESIRED_CUDA: cpu | |
| GPU_ARCH_TYPE: cpu | |
| SKIP_ALL_TESTS: 1 | |
| LIBTORCH_CONFIG: debug | |
| LIBTORCH_VARIANT: shared-with-deps | |
| # This is a dummy value for libtorch to work correctly with our batch scripts | |
| # without this value pip does not get installed for some reason | |
| DESIRED_PYTHON: "3.7" | |
| steps: | |
| - name: Display EC2 information | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| function get_ec2_metadata() { | |
| # Pulled from instance metadata endpoint for EC2 | |
| # see https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html | |
| category=$1 | |
| curl -fsSL "http://169.254.169.254/latest/meta-data/${category}" | |
| } | |
| echo "ami-id: $(get_ec2_metadata ami-id)" | |
| echo "instance-id: $(get_ec2_metadata instance-id)" | |
| echo "instance-type: $(get_ec2_metadata instance-type)" | |
| echo "system info $(uname -a)" | |
| - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" | |
| uses: seemethere/add-github-ssh-key@v1 | |
| with: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Needed for binary builds, see: https://github.com/pytorch/pytorch/issues/73339#issuecomment-1058981560 | |
| - name: Enable long paths on Windows | |
| shell: powershell | |
| run: | | |
| Set-ItemProperty -Path "HKLM:\\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 | |
| # Since it's just a defensive command, the workflow should continue even the command fails | |
| - name: Disables Windows Defender scheduled and real-time scanning for files in pytorch directory. | |
| shell: powershell | |
| run: | | |
| Add-MpPreference -ExclusionPath $(Get-Location).tostring() -ErrorAction Ignore | |
| # NOTE: These environment variables are put here so that they can be applied on every job equally | |
| # They are also here because setting them at a workflow level doesn't give us access to the | |
| # runner.temp variable, which we need. | |
| - name: Populate binary env | |
| shell: bash | |
| run: | | |
| echo "BINARY_ENV_FILE=${RUNNER_TEMP}/env" >> "${GITHUB_ENV}" | |
| echo "PYTORCH_FINAL_PACKAGE_DIR=${RUNNER_TEMP}/artifacts" >> "${GITHUB_ENV}" | |
| echo "WIN_PACKAGE_WORK_DIR=${RUNNER_TEMP}" | |
| - name: Checkout PyTorch | |
| uses: zhouzhuojie/checkout@05b13c9a0d21f08f6d5e64a1d5042246d13619d9 | |
| with: | |
| ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} | |
| submodules: recursive | |
| path: pytorch | |
| - name: Clean PyTorch checkout | |
| run: | | |
| # Remove any artifacts from the previous checkouts | |
| git clean -fxd | |
| working-directory: pytorch | |
| - name: Checkout pytorch/builder | |
| uses: zhouzhuojie/checkout@05b13c9a0d21f08f6d5e64a1d5042246d13619d9 | |
| with: | |
| ref: main | |
| submodules: recursive | |
| repository: pytorch/builder | |
| path: builder | |
| - name: Clean pytorch/builder checkout | |
| run: | | |
| # Remove any artifacts from the previous checkouts | |
| git clean -fxd | |
| working-directory: builder | |
| - name: Populate binary env | |
| shell: bash | |
| run: | | |
| "${PYTORCH_ROOT}/.circleci/scripts/binary_populate_env.sh" | |
| - name: Build PyTorch binary | |
| shell: bash | |
| run: | | |
| "${PYTORCH_ROOT}/.circleci/scripts/binary_windows_build.sh" | |
| - uses: actions/upload-artifact@v3 | |
| if: always() | |
| with: | |
| name: libtorch-cpu-shared-with-deps-debug | |
| retention-days: 14 | |
| if-no-files-found: error | |
| path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}" | |
| - name: Wait until all sessions have drained | |
| shell: powershell | |
| working-directory: pytorch | |
| if: always() | |
| timeout-minutes: 120 | |
| run: | | |
| .github\scripts\wait_for_ssh_to_drain.ps1 | |
| - name: Kill active ssh sessions if still around (Useful if workflow was cancelled) | |
| shell: powershell | |
| working-directory: pytorch | |
| if: always() | |
| run: | | |
| .github\scripts\kill_active_ssh_sessions.ps1 | |
| libtorch-cpu-shared-with-deps-debug-test: # Testing | |
| if: ${{ github.repository_owner == 'pytorch' }} | |
| needs: libtorch-cpu-shared-with-deps-debug-build | |
| runs-on: windows.4xlarge | |
| timeout-minutes: 240 | |
| env: | |
| PYTORCH_ROOT: ${{ github.workspace }}/pytorch | |
| BUILDER_ROOT: ${{ github.workspace }}/builder | |
| PACKAGE_TYPE: libtorch | |
| # TODO: This is a legacy variable that we eventually want to get rid of in | |
| # favor of GPU_ARCH_VERSION | |
| DESIRED_CUDA: cpu | |
| GPU_ARCH_TYPE: cpu | |
| SKIP_ALL_TESTS: 1 | |
| LIBTORCH_CONFIG: debug | |
| LIBTORCH_VARIANT: shared-with-deps | |
| # This is a dummy value for libtorch to work correctly with our batch scripts | |
| # without this value pip does not get installed for some reason | |
| DESIRED_PYTHON: "3.7" | |
| steps: | |
| - name: Display EC2 information | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| function get_ec2_metadata() { | |
| # Pulled from instance metadata endpoint for EC2 | |
| # see https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html | |
| category=$1 | |
| curl -fsSL "http://169.254.169.254/latest/meta-data/${category}" | |
| } | |
| echo "ami-id: $(get_ec2_metadata ami-id)" | |
| echo "instance-id: $(get_ec2_metadata instance-id)" | |
| echo "instance-type: $(get_ec2_metadata instance-type)" | |
| echo "system info $(uname -a)" | |
| - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" | |
| uses: seemethere/add-github-ssh-key@v1 | |
| with: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Needed for binary builds, see: https://github.com/pytorch/pytorch/issues/73339#issuecomment-1058981560 | |
| - name: Enable long paths on Windows | |
| shell: powershell | |
| run: | | |
| Set-ItemProperty -Path "HKLM:\\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 | |
| # Since it's just a defensive command, the workflow should continue even the command fails | |
| - name: Disables Windows Defender scheduled and real-time scanning for files in pytorch directory. | |
| shell: powershell | |
| run: | | |
| Add-MpPreference -ExclusionPath $(Get-Location).tostring() -ErrorAction Ignore | |
| # NOTE: These environment variables are put here so that they can be applied on every job equally | |
| # They are also here because setting them at a workflow level doesn't give us access to the | |
| # runner.temp variable, which we need. | |
| - name: Populate binary env | |
| shell: bash | |
| run: | | |
| echo "BINARY_ENV_FILE=${RUNNER_TEMP}/env" >> "${GITHUB_ENV}" | |
| echo "PYTORCH_FINAL_PACKAGE_DIR=${RUNNER_TEMP}/artifacts" >> "${GITHUB_ENV}" | |
| echo "WIN_PACKAGE_WORK_DIR=${RUNNER_TEMP}" | |
| - uses: actions/download-artifact@v3 | |
| name: Download Build Artifacts | |
| with: | |
| name: libtorch-cpu-shared-with-deps-debug | |
| path: "${{ env.PYTORCH_FINAL_PACKAGE_DIR }}" | |
| - name: Checkout PyTorch | |
| uses: zhouzhuojie/checkout@05b13c9a0d21f08f6d5e64a1d5042246d13619d9 | |
| with: | |
| ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} | |
| submodules: recursive | |
| path: pytorch | |
| - name: Clean PyTorch checkout | |
| run: | | |
| # Remove any artifacts from the previous checkouts | |
| git clean -fxd | |
| working-directory: pytorch | |
| - name: Checkout pytorch/builder | |
| uses: zhouzhuojie/checkout@05b13c9a0d21f08f6d5e64a1d5042246d13619d9 | |
| with: | |
| ref: main | |
| submodules: recursive | |
| repository: pytorch/builder | |
| path: builder | |
| - name: Clean pytorch/builder checkout | |
| run: | | |
| # Remove any artifacts from the previous checkouts | |
| git clean -fxd | |
| working-directory: builder | |
| - name: Populate binary env | |
| shell: bash | |
| run: | | |
| "${PYTORCH_ROOT}/.circleci/scripts/binary_populate_env.sh" | |
| - name: Test PyTorch binary | |
| shell: bash | |
| run: | | |
| "${PYTORCH_ROOT}/.circleci/scripts/binary_windows_test.sh" | |
| - name: Wait until all sessions have drained | |
| shell: powershell | |
| working-directory: pytorch | |
| if: always() | |
| timeout-minutes: 120 | |
| run: | | |
| .github\scripts\wait_for_ssh_to_drain.ps1 | |
| - name: Kill active ssh sessions if still around (Useful if workflow was cancelled) | |
| shell: powershell | |
| working-directory: pytorch | |
| if: always() | |
| run: | | |
| .github\scripts\kill_active_ssh_sessions.ps1 |