name: windows on: push: branches: - master pull_request: jobs: test: runs-on: windows-latest name: (${{ matrix.target }}, ${{ matrix.cfg_release_channel }}) env: CFG_RELEASE_CHANNEL: ${{ matrix.cfg_release_channel }} strategy: # https://help.github.com/en/actions/getting-started-with-github-actions/about-github-actions#usage-limits # There's a limit of 60 concurrent jobs across all repos in the rust-lang organization. # In order to prevent overusing too much of that 60 limit, we throttle the # number of rustfmt jobs that will run concurrently. max-parallel: 2 fail-fast: false matrix: target: [ i686-pc-windows-gnu, i686-pc-windows-msvc, x86_64-pc-windows-gnu, x86_64-pc-windows-msvc, ] cfg_release_channel: [nightly, stable] steps: # The Windows runners have autocrlf enabled by default # which causes failures for some of rustfmt's line-ending sensitive tests - name: disable git eol translation run: git config --global core.autocrlf false - name: checkout uses: actions/checkout@v4 # Run build - name: Install Rustup using win.rustup.rs run: | # Disable the download progress bar which can cause perf issues $ProgressPreference = "SilentlyContinue" Invoke-WebRequest https://win.rustup.rs/ -OutFile rustup-init.exe .\rustup-init.exe -y --default-host=x86_64-pc-windows-msvc --default-toolchain=none del rustup-init.exe rustup target add ${{ matrix.target }} shell: powershell - name: Add mingw32 to path for i686-gnu run: | echo "C:\msys64\mingw32\bin" >> $GITHUB_PATH if: matrix.target == 'i686-pc-windows-gnu' && matrix.channel == 'nightly' shell: bash - name: Add mingw64 to path for x86_64-gnu run: echo "C:\msys64\mingw64\bin" >> $GITHUB_PATH if: matrix.target == 'x86_64-pc-windows-gnu' && matrix.channel == 'nightly' shell: bash - name: Build and Test shell: cmd run: ci\build_and_test.bat