Skip to content
Latchkey

Build Windows Wheels workflow (pytorch/audio)

The Build Windows Wheels workflow from pytorch/audio, explained and optimized by Latchkey.

C

CI health: C - fair

Run this on Latchkey for self-healing, caching, and up to 58% lower cost.

Grade your own workflow free or run it on Latchkey →
Source: pytorch/audio.github/workflows/build_wheels_windows.ymlLicense BSD-2-ClauseView source

What it does

This is the Build Windows Wheels workflow from the pytorch/audio repository, a real project running GitHub Actions. It is shown here with attribution under its BSD-2-Clause license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
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
      with-xpu: enable
  build:
    needs: generate-matrix
    strategy:
      fail-fast: false
      matrix:
        include:
          - repository: pytorch/audio
            env-script: packaging/vc_env_helper.bat
            wheel-build-params: "--plat-name win_amd64"
            smoke-test-script: test/smoke_test/smoke_test_no_ffmpeg.py
            package-name: torchaudio
    name: ${{ matrix.repository }}
    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 }}
      env-script: ${{ matrix.env-script }}
      package-name: ${{ matrix.package-name }}
      smoke-test-script: ${{ matrix.smoke-test-script }}
      trigger-event: ${{ github.event_name }}
    secrets:
      R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
      R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
      R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

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
 
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  generate-matrix:
    timeout-minutes: 30
    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
      with-xpu: enable
  build:
    timeout-minutes: 30
    needs: generate-matrix
    strategy:
      fail-fast: false
      matrix:
        include:
          - repository: pytorch/audio
            env-script: packaging/vc_env_helper.bat
            wheel-build-params: "--plat-name win_amd64"
            smoke-test-script: test/smoke_test/smoke_test_no_ffmpeg.py
            package-name: torchaudio
    name: ${{ matrix.repository }}
    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 }}
      env-script: ${{ matrix.env-script }}
      package-name: ${{ matrix.package-name }}
      smoke-test-script: ${{ matrix.smoke-test-script }}
      trigger-event: ${{ github.event_name }}
    secrets:
      R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
      R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
      R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
 

What changed

1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.

This workflow runs 2 jobs per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.