| # @generated DO NOT EDIT MANUALLY |
| # Template is at: .github/templates/windows_ci_workflow.yml.j2 |
| # Generation script: .github/scripts/generate_ci_workflows.py |
| name: win-vs2019-cpu-py3 |
| |
| on: |
| pull_request: |
| types: [opened, synchronize, reopened, unassigned] |
| push: |
| branches: |
| - master |
| - release/* |
| workflow_dispatch: |
| |
| env: |
| BUILD_ENVIRONMENT: win-vs2019-cpu-py3 |
| BUILD_WHEEL: 1 |
| CUDA_VERSION: "cpu" |
| IN_CI: 1 |
| IS_GHA: 1 |
| INSTALL_WINDOWS_SDK: 1 |
| PYTHON_VERSION: "3.8" |
| PR_LABELS: ${{ toJson(github.event.pull_request.labels.*.name) }} |
| SCCACHE_BUCKET: "ossci-compiler-cache" |
| VC_PRODUCT: "BuildTools" |
| VC_VERSION: "" |
| VS_VERSION: "16.8.6" |
| VC_YEAR: "2019" |
| ALPINE_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/tool/alpine" |
| no_proxy: localhost,127.0.0.1,github.com,amazonaws.com,s3.amazonaws.com,169.254.169.254,169.254.170.2,/var/run/docker.sock |
| AWS_DEFAULT_REGION: us-east-1 |
| CIRCLE_PR_NUMBER: ${{ github.event.pull_request.number }} |
| CIRCLE_SHA1: ${{ github.event.pull_request.head.sha || github.sha }} |
| |
| concurrency: |
| group: win-vs2019-cpu-py3-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name == 'workflow_dispatch' }} |
| cancel-in-progress: true |
| |
| jobs: |
| |
| ciflow_should_run: |
| runs-on: ubuntu-18.04 |
| env: |
| IS_PROBOT_TRIGGER_EVENT: ${{ (github.event.action == 'unassigned') && (github.event.assigneed.login == 'pytorchbot') }} |
| LABEL_CONDITIONS: ${{ contains(github.event.pull_request.labels.*.name, 'ciflow/all') || contains(github.event.pull_request.labels.*.name, 'ciflow/cpu') || contains(github.event.pull_request.labels.*.name, 'ciflow/default') || contains(github.event.pull_request.labels.*.name, 'ciflow/win') }} |
| LABELS: ${{ toJson(github.event.pull_request.labels.*.name) }} |
| if: ${{ (github.repository_owner == 'pytorch') && ( |
| (github.event_name == 'push') || |
| (contains(github.event.pull_request.labels.*.name, 'ciflow/all') || contains(github.event.pull_request.labels.*.name, 'ciflow/cpu') || contains(github.event.pull_request.labels.*.name, 'ciflow/default') || contains(github.event.pull_request.labels.*.name, 'ciflow/win')) || |
| ((github.event_name == 'pull_request' && github.event.action != 'unassigned') && !contains(join(github.event.pull_request.labels.*.name), 'ciflow/'))) |
| }} |
| steps: |
| - name: noop |
| run: echo running ciflow_should_run |
| - name: print labels |
| run: echo "${LABELS}" |
| build: |
| runs-on: "windows.4xlarge" |
| needs: [ciflow_should_run] |
| env: |
| JOB_BASE_NAME: win-vs2019-cpu-py3-build |
| http_proxy: "http://internal-tf-lb-20210727220640487900000002-835786077.us-east-1.elb.amazonaws.com:3128" |
| https_proxy: "http://internal-tf-lb-20210727220640487900000002-835786077.us-east-1.elb.amazonaws.com:3128" |
| steps: |
| - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" |
| uses: seemethere/add-github-ssh-key@v1 |
| with: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| - name: Checkout PyTorch |
| uses: zhouzhuojie/checkout@05b13c9a0d21f08f6d5e64a1d5042246d13619d9 |
| with: |
| # deep clone, to allow use of git merge-base |
| fetch-depth: 0 |
| submodules: recursive |
| - 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)" |
| - name: Install Visual Studio 2019 toolchain |
| shell: powershell |
| run: | |
| .\.circleci\scripts\vs_install.ps1 |
| - name: Parse ref |
| id: parse-ref |
| run: .github/scripts/parse_ref.py |
| - name: Build |
| shell: bash |
| env: |
| PYTORCH_FINAL_PACKAGE_DIR: /c/${{ github.run_id }}/build-results/ |
| CIRCLE_BRANCH: ${{ steps.parse-ref.outputs.branch }} |
| run: | |
| .jenkins/pytorch/win-build.sh |
| # Upload to github so that people can click and download artifacts |
| - name: Upload artifacts to s3 |
| uses: seemethere/upload-artifact-s3@v3 |
| with: |
| retention-days: 14 |
| if-no-files-found: error |
| name: ${{ env.BUILD_ENVIRONMENT }} |
| path: C:\${{ github.run_id }}\build-results |
| - name: Wait until all sessions have drained |
| shell: powershell |
| 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 |
| if: always() |
| run: | |
| .github\scripts\kill_active_ssh_sessions.ps1 |
| - name: Cleanup build-results and workspaces |
| if: always() |
| shell: bash |
| env: |
| PYTORCH_FINAL_PACKAGE_DIR: /c/${{ github.run_id }}/build-results/ |
| # Should remove the entirety of pytorch-${{ github.run_id }} |
| run: | |
| rm -rf "${PYTORCH_FINAL_PACKAGE_DIR}" |
| rm -rf ./* |
| |
| generate-test-matrix: |
| needs: [ciflow_should_run] |
| runs-on: ubuntu-18.04 |
| env: |
| TEST_RUNNER_TYPE: windows.4xlarge |
| NUM_TEST_SHARDS: 2 |
| NUM_TEST_SHARDS_ON_PULL_REQUEST: 2 |
| PR_BODY: ${{ github.event.pull_request.body }} |
| NOGPU_RUNNER_TYPE: windows.4xlarge |
| ENABLE_FORCE_ON_CPU_TEST: '' |
| RUN_SMOKE_TESTS_ONLY_ON_PR: False |
| outputs: |
| matrix: ${{ steps.set-matrix.outputs.matrix }} |
| render-matrix: ${{ steps.set-matrix.outputs.render-matrix }} |
| ignore-disabled-issues: ${{ steps.set-matrix.outputs.ignore-disabled-issues }} |
| container: |
| image: python:3.9 |
| steps: |
| - name: Install dependencies |
| run: pip install typing-extensions==3.10 |
| - name: Clone pytorch/pytorch |
| uses: zhouzhuojie/checkout@05b13c9a0d21f08f6d5e64a1d5042246d13619d9 |
| - name: Generating test matrix |
| id: set-matrix |
| run: .github/scripts/generate_pytorch_test_matrix.py |
| |
| test: |
| env: |
| JOB_BASE_NAME: win-vs2019-cpu-py3-test |
| SHARD_NUMBER: ${{ matrix.shard }} |
| NUM_TEST_SHARDS: ${{ matrix.num_shards }} |
| TEST_CONFIG: ${{ matrix.config }} |
| http_proxy: "http://internal-tf-lb-20210727220640487900000002-835786077.us-east-1.elb.amazonaws.com:3128" |
| https_proxy: "http://internal-tf-lb-20210727220640487900000002-835786077.us-east-1.elb.amazonaws.com:3128" |
| PYTORCH_IGNORE_DISABLED_ISSUES: ${{ needs.generate-test-matrix.outputs.ignore-disabled-issues }} |
| needs: [build, generate-test-matrix, ciflow_should_run] |
| strategy: |
| matrix: ${{ fromJson(needs.generate-test-matrix.outputs.matrix) }} |
| fail-fast: false |
| runs-on: ${{ matrix.runner }} |
| 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)" |
| - name: "[FB EMPLOYEES] Enable SSH (Click me for login details)" |
| uses: seemethere/add-github-ssh-key@v1 |
| with: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| - name: Checkout PyTorch |
| uses: zhouzhuojie/checkout@05b13c9a0d21f08f6d5e64a1d5042246d13619d9 |
| with: |
| # deep clone, to allow use of git merge-base |
| fetch-depth: 0 |
| submodules: recursive |
| - name: Install Visual Studio 2019 toolchain |
| shell: powershell |
| run: | |
| .\.circleci\scripts\vs_install.ps1 |
| - uses: seemethere/download-artifact-s3@0504774707cbc8603d7dca922e8026eb8bf3b47b |
| name: Download PyTorch Build Artifacts |
| with: |
| name: ${{ env.BUILD_ENVIRONMENT }} |
| path: C:\${{ github.run_id }}\build-results |
| - name: Check build-results folder |
| shell: powershell |
| run: | |
| tree /F C:\$Env:GITHUB_RUN_ID\build-results |
| # Needed for coverage in win-test.sh |
| - uses: actions/setup-python@v2 |
| name: Setup Python3 |
| with: |
| python-version: '3.x' |
| - name: Test |
| shell: bash |
| env: |
| PYTORCH_FINAL_PACKAGE_DIR: /c/${{ github.run_id }}/build-results/ |
| # Time out the test phase after 3.5 hours |
| timeout-minutes: 210 |
| run: | |
| .jenkins/pytorch/win-test.sh |
| - name: Zip test reports for upload |
| if: always() |
| env: |
| FILE_SUFFIX: '${{ github.job }}-${{ matrix.config }}-${{ matrix.shard }}-${{ matrix.num_shards }}-${{ matrix.runner }}' |
| shell: powershell |
| run: | |
| # -ir => recursive include all files in pattern |
| 7z a "test-reports-$Env:FILE_SUFFIX.zip" -ir'!test\*.xml' |
| - uses: seemethere/upload-artifact-s3@v3 |
| name: Store Test Reports on S3 |
| if: always() |
| with: |
| retention-days: 14 |
| if-no-files-found: error |
| path: |
| test-reports-*.zip |
| - name: Install render_test_results dependencies |
| if: always() |
| shell: bash |
| run: | |
| python3 -m pip install junitparser==2.1.1 rich==10.9.0 |
| - name: "[[ Click me for rendered test results (useful for finding failing tests) ]]" |
| if: always() |
| shell: bash |
| # Encoding is weird on windows, just try to default to utf-8 if possible |
| env: |
| PYTHONIOENCODING: "utf-8" |
| run: | |
| python3 tools/render_junit.py test/ |
| - name: Wait until all sessions have drained |
| shell: powershell |
| 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 |
| if: always() |
| run: | |
| .github\scripts\kill_active_ssh_sessions.ps1 |
| - name: Parse ref |
| id: parse-ref |
| run: .github/scripts/parse_ref.py |
| - name: Display and upload test statistics (Click Me) |
| if: always() |
| # temporary hack: set CIRCLE_* vars, until we update |
| # tools/stats/print_test_stats.py to natively support GitHub Actions |
| env: |
| AWS_DEFAULT_REGION: us-east-1 |
| CIRCLE_BRANCH: ${{ steps.parse-ref.outputs.branch }} |
| JOB_BASE_NAME: win-vs2019-cpu-py3-test |
| CIRCLE_PR_NUMBER: ${{ github.event.pull_request.number }} |
| CIRCLE_SHA1: ${{ github.event.pull_request.head.sha || github.sha }} |
| CIRCLE_TAG: ${{ steps.parse-ref.outputs.tag }} |
| CIRCLE_WORKFLOW_ID: '${{ github.run_id }}_${{ github.run_number }}' |
| shell: bash |
| run: | |
| python3 -m pip install -r requirements.txt |
| python3 -m pip install boto3==1.16.34 |
| python3 -m tools.stats.print_test_stats --upload-to-s3 --compare-with-s3 test |
| - name: Cleanup workspace |
| if: always() |
| shell: bash |
| # Should remove the entirety of pytorch-${{ github.run_id }} |
| run: | |
| rm -rf ./* |