Merge pull request #3252 from tom-englert/dev/#3251 #1977
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build ILSpy | |
on: | |
push: | |
branches: '**' | |
pull_request: | |
branches: [ master, release/** ] | |
jobs: | |
Build: | |
runs-on: windows-2022 | |
strategy: | |
fail-fast: false | |
matrix: | |
Configuration: [ Debug, Release ] | |
env: | |
BuildPlatform: Any CPU | |
StagingDirectory: buildartifacts | |
steps: | |
- run: mkdir -p $env:StagingDirectory | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0.x' | |
dotnet-quality: 'ga' | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
- name: Install dotnet-format | |
run: dotnet tool install -g dotnet-format --version "8.0.453106" --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json | |
- name: Get Version | |
id: version | |
shell: pwsh | |
run: | | |
.\BuildTools\ghactions-install.ps1 | |
Get-ChildItem Env: | Where-Object {$_.Name -Match "^ILSPY_"} | %{ echo "$($_.Name)=$($_.Value)" } | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append | |
- name: Restore the application | |
run: msbuild ILSpy.sln /t:Restore /p:Configuration=${{ matrix.configuration }} /p:Platform=$env:BuildPlatform | |
- name: Build | |
run: msbuild ILSpy.sln /p:Configuration=${{ matrix.configuration }} /p:Platform=$env:BuildPlatform /m | |
- name: Execute unit tests | |
run: dotnet test --logger "junit;LogFileName=${{ matrix.configuration }}.xml" --results-directory test-results $env:Tests1 $env:Tests2 $env:Tests3 | |
env: | |
Tests1: ICSharpCode.Decompiler.Tests\bin\${{ matrix.configuration }}\net8.0-windows\win-x64\ICSharpCode.Decompiler.Tests.dll | |
Tests2: ILSpy.Tests\bin\${{ matrix.configuration }}\net8.0-windows\ILSpy.Tests.dll | |
Tests3: ILSpy.BamlDecompiler.Tests\bin\${{ matrix.configuration }}\net8.0-windows\win-x64\ILSpy.BamlDecompiler.Tests.dll | |
- name: Upload Test Logs | |
uses: actions/upload-artifact@v4 | |
if: success() || failure() | |
with: | |
name: test-results-${{ matrix.configuration }} | |
path: 'test-results/${{ matrix.configuration }}.xml' | |
- name: Create Test Report | |
uses: test-summary/action@v2 | |
if: always() | |
with: | |
paths: "test-results/${{ matrix.configuration }}.xml" | |
- name: Format check | |
run: dotnet-format whitespace --verify-no-changes --verbosity detailed ILSpy.sln | |
- name: Verify package contents | |
if: matrix.configuration == 'debug' | |
shell: pwsh | |
run: | | |
.\BuildTools\create-filelists.ps1 | |
git diff --exit-code | |
- name: Zip ILSpy (framework-dependent) | |
run: 7z a -tzip $env:StagingDirectory\ILSpy_binaries.zip .\ILSpy\bin\${{ matrix.configuration }}\net8.0-windows\*.dll .\ILSpy\bin\${{ matrix.configuration }}\net8.0-windows\*.exe .\ILSpy\bin\${{ matrix.configuration }}\net8.0-windows\*.config .\ILSpy\bin\${{ matrix.configuration }}\net8.0-windows\*.json .\ILSpy\bin\${{ matrix.configuration }}\net8.0-windows\*\ILSpy.resources.dll .\ILSpy\bin\${{ matrix.configuration }}\net8.0-windows\*\ILSpy.ReadyToRun.Plugin.resources.dll | |
- name: Publish x64/arm64 framework-dependent/self-contained | |
shell: pwsh | |
run: .\publish.ps1 | |
- name: Zip ILSpy Release (x64 self-contained) | |
if: matrix.configuration == 'release' | |
run: 7z a -tzip $env:StagingDirectory\ILSpy_selfcontained_x64.zip .\ILSpy\bin\Release\net8.0-windows\win-x64\publish\selfcontained\* | |
- name: Zip ILSpy Release (arm64 framework-dependent) | |
if: matrix.configuration == 'release' | |
run: 7z a -tzip $env:StagingDirectory\ILSpy_binaries_arm64.zip .\ILSpy\bin\Release\net8.0-windows\win-arm64\publish\fwdependent\* | |
- name: Build Installer (x64 and arm64, framework-dependent) | |
if: matrix.configuration == 'release' | |
run: | | |
msbuild ILSpy.Installer.sln /t:Restore /p:Configuration="Release" /p:Platform="Any CPU" | |
msbuild ILSpy.Installer.sln /p:Configuration="Release" /p:Platform="Any CPU" | |
msbuild ILSpy.Installer.sln /p:Configuration="Release" /p:Platform="Any CPU" /p:PlatformForInstaller="ARM64" | |
- name: Build VS Extensions (for 2017-2019 and 2022) | |
if: matrix.configuration == 'release' | |
run: | | |
msbuild ILSpy.VSExtensions.sln /t:Restore /p:Configuration="Release" /p:Platform="Any CPU" | |
msbuild ILSpy.VSExtensions.sln /p:Configuration="Release" /p:Platform="Any CPU" | |
# https://github.com/actions/upload-artifact | |
- name: Upload VSIX (VS 2019) release build artifacts | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ILSpy VS Addin for VS 2017-2019 ${{ steps.version.outputs.ILSPY_VERSION_NUMBER }} (${{ matrix.configuration }}) | |
path: ILSpy.AddIn\bin\${{ matrix.configuration }}\net472\*.vsix | |
if-no-files-found: error | |
- name: Upload VSIX (VS 2022) release build artifacts | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ILSpy VS Addin for VS 2022 ${{ steps.version.outputs.ILSPY_VERSION_NUMBER }} (${{ matrix.configuration }}) | |
path: ILSpy.AddIn.VS2022\bin\${{ matrix.configuration }}\net472\*.vsix | |
if-no-files-found: error | |
- name: Upload Decompiler NuGet release build artifacts | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ICSharpCode.Decompiler NuGet Package (${{ matrix.configuration }}) | |
path: ICSharpCode.Decompiler\bin\Release\ICSharpCode.Decompiler*.nupkg | |
if-no-files-found: error | |
- name: Publish Decompiler NuGet | |
if: github.ref == 'refs/heads/master' && matrix.configuration == 'release' | |
run: | | |
dotnet nuget push "ICSharpCode.Decompiler\bin\Release\ICSharpCode.Decompiler*.nupkg" --api-key ${{ secrets.GITHUB_TOKEN }} --source https://nuget.pkg.github.com/${{ github.repository_owner }} | |
- name: Upload ILSpyX NuGet release build artifacts | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ICSharpCode.ILSpyX NuGet Package (${{ matrix.configuration }}) | |
path: ICSharpCode.ILSpyX\bin\Release\ICSharpCode.ILSpyX*.nupkg | |
if-no-files-found: error | |
- name: Publish ILSpyX NuGet | |
if: github.ref == 'refs/heads/master' && matrix.configuration == 'release' | |
run: | | |
dotnet nuget push "ICSharpCode.ILSpyX\bin\Release\ICSharpCode.ILSpyX*.nupkg" --api-key ${{ secrets.GITHUB_TOKEN }} --source https://nuget.pkg.github.com/${{ github.repository_owner }} | |
- name: Upload zip binaries build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ILSpy ${{ steps.version.outputs.ILSPY_VERSION_NUMBER }} (${{ matrix.configuration }}) | |
path: ${{ env.StagingDirectory }}\ILSpy_binaries.zip | |
if-no-files-found: error | |
- name: Upload x64 self-contained zip (Release-only) | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ILSpy self-contained x64 ${{ steps.version.outputs.ILSPY_VERSION_NUMBER }} (${{ matrix.configuration }}) | |
path: ${{ env.StagingDirectory }}\ILSpy_selfcontained_x64.zip | |
if-no-files-found: error | |
- name: Upload arm64 framework-dependent zip (Release-only) | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ILSpy arm64 ${{ steps.version.outputs.ILSPY_VERSION_NUMBER }} (${{ matrix.configuration }}) | |
path: ${{ env.StagingDirectory }}\ILSpy_binaries_arm64.zip | |
if-no-files-found: error | |
- name: Upload x64 installer artifact | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ILSpy Installer x64 ${{ steps.version.outputs.ILSPY_VERSION_NUMBER }} (${{ matrix.configuration }}) | |
path: ILSpy.Installer\wix\*-x64.msi | |
if-no-files-found: error | |
- name: Upload arm64 installer artifact | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ILSpy Installer arm64 ${{ steps.version.outputs.ILSPY_VERSION_NUMBER }} (${{ matrix.configuration }}) | |
path: ILSpy.Installer\wix\*-arm64.msi | |
if-no-files-found: error | |
- name: Upload ilspycmd release build artifacts | |
if: matrix.configuration == 'release' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ilspycmd dotnet tool (${{ matrix.configuration }}) | |
path: ICSharpCode.ILSpyCmd\bin\Release\ilspycmd*.nupkg | |
if-no-files-found: error |