• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1name: Setup Windows
2
3description: Set up for windows jobs
4
5inputs:
6  cuda-version:
7    description: which cuda version to install, 'cpu' for none
8    required: true
9
10runs:
11  using: composite
12  steps:
13    - name: Display EC2 information
14      shell: bash
15      run: |
16        set -euo pipefail
17        function get_ec2_metadata() {
18          # Pulled from instance metadata endpoint for EC2
19          # see https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
20          category=$1
21          curl -fsSL "http://169.254.169.254/latest/meta-data/${category}"
22        }
23        echo "ami-id: $(get_ec2_metadata ami-id)"
24        echo "instance-id: $(get_ec2_metadata instance-id)"
25        echo "instance-type: $(get_ec2_metadata instance-type)"
26        echo "system info $(uname -a)"
27
28    # Needed for binary builds, see: https://github.com/pytorch/pytorch/issues/73339#issuecomment-1058981560
29    - name: Enable long paths on Windows
30      shell: powershell
31      run: |
32        Set-ItemProperty -Path "HKLM:\\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1
33
34    - name: Setup conda
35      shell: bash
36      run: |
37        # Windows conda is baked into the AMI at this location
38        CONDA="C:\Jenkins\Miniconda3\condabin\conda.bat"
39
40        {
41          echo "CONDA_RUN=${CONDA} run --no-capture-output";
42          echo "CONDA_BUILD=${CONDA} run conda-build";
43          echo "CONDA_INSTALL=${CONDA} install";
44        } >> "${GITHUB_ENV}"
45
46    - name: Setup Python3
47      shell: bash
48      run: |
49        set +e
50        set -x
51
52        PYTHON3=$(${CONDA_RUN} which python3)
53        EXIT_CODE=$?
54
55        if [[ "${EXIT_CODE}" == "0" ]]; then
56          echo "Found Python3 at ${PYTHON3}, adding it into GITHUB_PATH"
57
58          PYTHON_PATH=$(dirname "${PYTHON3}")
59          echo "${PYTHON_PATH}" >> "${GITHUB_PATH}"
60        else
61          # According to https://docs.conda.io/en/latest/miniconda.html, we are using the Miniconda3
62          # installation, which is Python 3 based. Its Python is default to Python 3. Further, there
63          # is also the Miniconda installation that is Python 2 based, and both can be installed if
64          # needed. In both cases, Python binary is just called python
65          PYTHON=$(${CONDA_RUN} which python)
66          EXIT_CODE=$?
67
68          if [[ "${EXIT_CODE}" == "0" ]]; then
69            echo "Found Python at ${PYTHON}, set Python3 alias and add it into GITHUB_PATH"
70
71            PYTHON3=$(echo "${PYTHON}" | sed "s/python/python3/")
72            # It's difficult to setup alias across GitHub action steps, so I just add a softlink
73            # here pointing to Python
74            ln -s "${PYTHON}" "${PYTHON3}"
75
76            PYTHON_PATH=$(dirname "${PYTHON}")
77            echo "${PYTHON_PATH}" >> "${GITHUB_PATH}"
78          else
79            echo "Found no Python using ${CONDA_RUN}"
80          fi
81        fi
82
83    - name: Get temporary directory used by Windows Python
84      shell: bash
85      run: |
86        TMPDIR=$(python -c 'import tempfile; print(tempfile.gettempdir());')
87        echo "TMPDIR=${TMPDIR}" >> "${GITHUB_ENV}"
88
89    # Since it's just a defensive command, the workflow should continue even the command fails. This step can be
90    # removed once Windows Defender is removed from the AMI
91    - name: Disables Windows Defender scheduled and real-time scanning for files in directories used by PyTorch
92      continue-on-error: true
93      shell: powershell
94      run: |
95        Add-MpPreference -ExclusionPath $(Get-Location).tostring(),$Env:TMPDIR,"C:\Jenkins\Miniconda3" -ErrorAction Ignore
96        # Let's both exclude the path and disable Windows Defender completely just to be sure
97        # that it doesn't interfere
98        Set-MpPreference -DisableRealtimeMonitoring $True -ErrorAction Ignore
99
100    - name: Install sysinternals handle tool
101      continue-on-error: true
102      shell: powershell
103      run: |
104        choco install handle -y
105        handle C:\actions-runner\_work\
106