fix: move to node24

feat: enhance MSBuild setup summary in workflow 🛠️
- Added matrix strategy for multiple runners
- Improved summary output for MSBuild paths and architecture
This commit is contained in:
Tim Heuer
2026-03-12 10:55:15 -07:00
parent 767f00a3f0
commit 4031508ab2
6 changed files with 3228 additions and 3202 deletions

View File

@@ -4,26 +4,25 @@ on:
branches: branches:
- dev - dev
paths-ignore: paths-ignore:
- '*.md' - "*.md"
push: push:
branches: branches:
- dev - dev
paths-ignore: paths-ignore:
- '*.md' - "*.md"
workflow_dispatch: workflow_dispatch:
branches:
- dev
- arm64
- master
paths-ignore:
- '*.md'
jobs: jobs:
build: build:
runs-on: windows-latest strategy:
fail-fast: false
matrix:
runner:
- windows-latest
- windows-2025-vs2026
runs-on: ${{ matrix.runner }}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v6
- name: Setup MSBuild (vswhere-path) - name: Setup MSBuild (vswhere-path)
id: setup_msbuild_explicit id: setup_msbuild_explicit
@@ -39,31 +38,42 @@ jobs:
id: setup_msbuild_fallback id: setup_msbuild_fallback
uses: ./ uses: ./
env: env:
PATH: '' PATH: ""
- name: Setup MSBuild (x64) - name: Setup MSBuild (x64)
if: always() if: runner.arch == 'X64'
id: setup_msbuild_path_x64 id: setup_msbuild_path_x64
uses: ./ uses: ./
with: with:
vs-prerelease: true vs-prerelease: true
msbuild-architecture: 'x64' msbuild-architecture: "x64"
- name: Setup MSBuild (arm64) - name: Setup MSBuild (arm64)
if: always() if: runner.arch == 'ARM64'
id: setup_msbuild_path_arm id: setup_msbuild_path_arm64
uses: ./ uses: ./
with: with:
vs-prerelease: true vs-prerelease: true
msbuild-architecture: 'arm64' msbuild-architecture: "arm64"
- name: echo msbuild path - name: Write MSBuild summary
if: always()
shell: pwsh
run: | run: |
echo "vswhere-path: ${{ steps.setup_msbuild_explicit.outputs.msbuildPath }}" @"
echo "PATH: ${{ steps.setup_msbuild_path.outputs.msbuildPath }}" ## MSBuild setup summary
echo "ARM PATH: ${{ steps.setup_msbuild_path_arm.outputs.msbuildPath }}"
echo "ARM PATH: ${{ steps.setup_msbuild_path_x64.outputs.msbuildPath }}" - Runner label: `${{ matrix.runner }}`
echo "Fallback: ${{ steps.setup_msbuild_fallback.outputs.msbuildPath }}" - Runner architecture: `${{ runner.arch }}`
| Probe | msbuildPath |
| --- | --- |
| vswhere-path | ${{ steps.setup_msbuild_explicit.outputs.msbuildPath || 'N/A' }} |
| PATH | ${{ steps.setup_msbuild_path.outputs.msbuildPath || 'N/A' }} |
| Fallback | ${{ steps.setup_msbuild_fallback.outputs.msbuildPath || 'N/A' }} |
| x64 | ${{ steps.setup_msbuild_path_x64.outputs.msbuildPath || 'N/A' }} |
| arm64 | ${{ steps.setup_msbuild_path_arm64.outputs.msbuildPath || 'N/A' }} |
"@ | Out-File -FilePath $env:GITHUB_STEP_SUMMARY -Encoding utf8 -Append
- name: echo MSBuild - name: echo MSBuild
run: msbuild -version run: msbuild -version

View File

@@ -9,7 +9,7 @@ This action will help discover where the `MSBuild` tool is and automatically add
```yml ```yml
- name: Add msbuild to PATH - name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v3
- name: Build app for release - name: Build app for release
run: msbuild src\YourProjectFile.csproj -t:rebuild -verbosity:diag -property:Configuration=Release run: msbuild src\YourProjectFile.csproj -t:rebuild -verbosity:diag -property:Configuration=Release
@@ -29,7 +29,7 @@ You may have a situation where your Actions runner has multiple versions of Visu
```yml ```yml
- name: Add msbuild to PATH - name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v3
with: with:
vs-version: '[16.4,16.5)' vs-version: '[16.4,16.5)'
``` ```
@@ -42,7 +42,7 @@ If you need your Actions runner to target a pre-release version of Visual Studio
```yml ```yml
- name: Add msbuild to PATH - name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v3
with: with:
vs-prerelease: true vs-prerelease: true
``` ```
@@ -53,7 +53,7 @@ By default the action will use the x86 architecture for MSBuild, but it is possi
```yml ```yml
- name: Add msbuild to PATH - name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v3
with: with:
msbuild-architecture: x64 msbuild-architecture: x64
``` ```
@@ -64,7 +64,7 @@ This makes use of the vswhere tool which is a tool delivered by Microsoft to hel
```yml ```yml
- name: Add msbuild to PATH - name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v3
with: with:
vswhere-path: 'C:\path\to\your\tools\' vswhere-path: 'C:\path\to\your\tools\'
``` ```

View File

@@ -23,5 +23,5 @@ outputs:
description: "The resulting location of msbuild for your inputs" description: "The resulting location of msbuild for your inputs"
runs: runs:
using: "node20" using: "node24"
main: "dist/index.js" main: "dist/index.js"

6232
dist/index.js vendored

File diff suppressed because it is too large Load Diff

24
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "setup-msbuild", "name": "setup-msbuild",
"version": "1.3.2", "version": "3.0.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "setup-msbuild", "name": "setup-msbuild",
"version": "1.3.2", "version": "3.0.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@actions/core": "^1.10.0", "@actions/core": "^1.10.0",
@@ -17,7 +17,7 @@
"@types/jest": "^24.0.23", "@types/jest": "^24.0.23",
"@types/node": "^12.12.25", "@types/node": "^12.12.25",
"@typescript-eslint/parser": "^2.8.0", "@typescript-eslint/parser": "^2.8.0",
"@zeit/ncc": "^0.20.5", "@vercel/ncc": "^0.38.4",
"eslint": "^5.16.0", "eslint": "^5.16.0",
"eslint-plugin-github": "^2.0.0", "eslint-plugin-github": "^2.0.0",
"eslint-plugin-jest": "^22.21.0", "eslint-plugin-jest": "^22.21.0",
@@ -789,12 +789,12 @@
} }
} }
}, },
"node_modules/@zeit/ncc": { "node_modules/@vercel/ncc": {
"version": "0.20.5", "version": "0.38.4",
"resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.20.5.tgz", "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.4.tgz",
"integrity": "sha512-XU6uzwvv95DqxciQx+aOLhbyBx/13ky+RK1y88Age9Du3BlA4mMPCy13BGjayOrrumOzlq1XV3SD/BWiZENXlw==", "integrity": "sha512-8LwjnlP39s08C08J5NstzriPvW1SP8Zfpp1BvC2sI35kPeZnHfxVkCwu4/+Wodgnd60UtT1n8K8zw+Mp7J9JmQ==",
"deprecated": "@zeit/ncc is no longer maintained. Please use @vercel/ncc instead.",
"dev": true, "dev": true,
"license": "MIT",
"bin": { "bin": {
"ncc": "dist/ncc/cli.js" "ncc": "dist/ncc/cli.js"
} }
@@ -8845,10 +8845,10 @@
"tsutils": "^3.17.1" "tsutils": "^3.17.1"
} }
}, },
"@zeit/ncc": { "@vercel/ncc": {
"version": "0.20.5", "version": "0.38.4",
"resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.20.5.tgz", "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.4.tgz",
"integrity": "sha512-XU6uzwvv95DqxciQx+aOLhbyBx/13ky+RK1y88Age9Du3BlA4mMPCy13BGjayOrrumOzlq1XV3SD/BWiZENXlw==", "integrity": "sha512-8LwjnlP39s08C08J5NstzriPvW1SP8Zfpp1BvC2sI35kPeZnHfxVkCwu4/+Wodgnd60UtT1n8K8zw+Mp7J9JmQ==",
"dev": true "dev": true
}, },
"abab": { "abab": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "setup-msbuild", "name": "setup-msbuild",
"version": "2.0.0", "version": "3.0.0",
"private": true, "private": true,
"description": "Helps set up specific MSBuild tool into PATH for later usage.", "description": "Helps set up specific MSBuild tool into PATH for later usage.",
"main": "lib/main.js", "main": "lib/main.js",
@@ -9,7 +9,7 @@
"format": "prettier --write **/*.ts", "format": "prettier --write **/*.ts",
"format-check": "prettier --check **/*.ts", "format-check": "prettier --check **/*.ts",
"lint": "eslint src/**/*.ts", "lint": "eslint src/**/*.ts",
"pack": "ncc build", "pack": "ncc build lib/main.js -o dist",
"test": "jest", "test": "jest",
"all": "npm run build && npm run format && npm run lint && npm run pack" "all": "npm run build && npm run format && npm run lint && npm run pack"
}, },
@@ -36,7 +36,7 @@
"@types/jest": "^24.0.23", "@types/jest": "^24.0.23",
"@types/node": "^12.12.25", "@types/node": "^12.12.25",
"@typescript-eslint/parser": "^2.8.0", "@typescript-eslint/parser": "^2.8.0",
"@zeit/ncc": "^0.20.5", "@vercel/ncc": "^0.38.4",
"eslint": "^5.16.0", "eslint": "^5.16.0",
"eslint-plugin-github": "^2.0.0", "eslint-plugin-github": "^2.0.0",
"eslint-plugin-jest": "^22.21.0", "eslint-plugin-jest": "^22.21.0",