Invalid Renaming in Project Level Workspace #68
Workflow file for this run
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: Compilation Test with .NET | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} | |
permissions: | |
pull-requests: write | |
jobs: | |
build-on-solution: | |
strategy: | |
fail-fast: false | |
matrix: | |
plugins: | |
- "--shuffle-declarations" | |
- "--rename-symbols --rename-namespaces --rename-classes --rename-properties --rename-fields --rename-methods --rename-variables" | |
- "--disable-console-output --disable-symbols=T:System.Console,T:System.Diagnostics.Debug" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Setup .NET tools | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: "8.0.x" | |
- name: Restore NuGet dependencies | |
run: | | |
dotnet restore ./src/Plana.sln | |
- name: Phase.1 -- Build Original Source | |
run: | | |
dotnet build ./src/Plana.sln --no-restore --configuration=Release /p:WarningLevel=0 | |
mkdir -p ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.Extensions/bin/Release/net8.0/Plana.Composition.Extensions.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.DisableConsoleOutput/bin/Release/net8.0/Plana.Composition.DisableConsoleOutput.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.RenameSymbols/bin/Release/net8.0/Plana.Composition.RenameSymbols.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.ShuffleDeclarations/bin/Release/net8.0/Plana.Composition.ShuffleDeclarations.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
dotnet ./src/Plana.CLI/bin/Release/net8.0/Plana.CLI.dll obfuscate --log-level verbose --workspace ./src/Plana.sln --plugins ./src/Plana.CLI/bin/Releases/net8.0/plugins --write ${{ matrix.plugins }} | |
- name: Phase.2 -- Re-Build Obfuscated Source | |
run: | | |
! git diff-index --quiet HEAD | |
dotnet build ./src/Plana.sln --no-restore --configuration=Release /p:WarningLevel=0 | |
mkdir -p ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.Extensions/bin/Release/net8.0/Plana.Composition.Extensions.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.DisableConsoleOutput/bin/Release/net8.0/Plana.Composition.DisableConsoleOutput.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.RenameSymbols/bin/Release/net8.0/Plana.Composition.RenameSymbols.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.ShuffleDeclarations/bin/Release/net8.0/Plana.Composition.ShuffleDeclarations.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
git add -A | |
git stash save | |
- name: Phase.3 -- Re-Test with obfuscated source | |
run: | | |
# --log-level=verbose cannot be used because the target class has been obfuscated and renamed. | |
# It will be possible to control it by adding the PublicAPI attribute. | |
dotnet ./src/Plana.CLI/bin/Release/net8.0/Plana.CLI.dll obfuscate --workspace ./src/Plana.sln --plugins ./src/Plana.CLI/bin/Releases/net8.0/plugins --write ${{ matrix.plugins }} | |
! git diff-index --quiet HEAD | |
git --no-pager diff --ignore-all-space --ignore-blank-lines | |
build-on-project: | |
strategy: | |
fail-fast: false | |
matrix: | |
plugins: | |
- "--shuffle-declarations" | |
- "--rename-symbols --rename-namespaces --rename-classes --rename-properties --rename-fields --rename-methods --rename-variables" | |
- "--disable-console-output --disable-symbols=T:System.Console,T:System.Diagnostics.Debug" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Setup .NET tools | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: "8.0.x" | |
- name: Restore NuGet dependencies | |
run: | | |
dotnet restore ./src/Plana.sln | |
- name: Phase.1 -- Build Original Source | |
run: | | |
dotnet build ./src/Plana.sln --no-restore --configuration=Release /p:WarningLevel=0 | |
mkdir -p ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.Extensions/bin/Release/net8.0/Plana.Composition.Extensions.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.DisableConsoleOutput/bin/Release/net8.0/Plana.Composition.DisableConsoleOutput.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.RenameSymbols/bin/Release/net8.0/Plana.Composition.RenameSymbols.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.ShuffleDeclarations/bin/Release/net8.0/Plana.Composition.ShuffleDeclarations.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
dotnet ./src/Plana.CLI/bin/Release/net8.0/Plana.CLI.dll obfuscate --log-level verbose --workspace ./src/Plana.CLI/Plana.CLI.csproj --plugins ./src/Plana.CLI/bin/Releases/net8.0/plugins --write ${{ matrix.plugins }} | |
- name: Phase.2 -- Re-Build Obfuscated Source | |
run: | | |
! git diff-index --quiet HEAD | |
dotnet build ./src/Plana.sln --no-restore --configuration=Release /p:WarningLevel=0 | |
mkdir -p ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.Extensions/bin/Release/net8.0/Plana.Composition.Extensions.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.DisableConsoleOutput/bin/Release/net8.0/Plana.Composition.DisableConsoleOutput.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.RenameSymbols/bin/Release/net8.0/Plana.Composition.RenameSymbols.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
cp ./src/Plana.Composition.ShuffleDeclarations/bin/Release/net8.0/Plana.Composition.ShuffleDeclarations.dll ./src/Plana.CLI/bin/Releases/net8.0/plugins | |
git add -A | |
git stash save | |
- name: Phase.3 -- Re-Test with obfuscated source | |
run: | | |
# --log-level=verbose cannot be used because the target class has been obfuscated and renamed. | |
# It will be possible to control it by adding the PublicAPI attribute. | |
dotnet ./src/Plana.CLI/bin/Release/net8.0/Plana.CLI.dll obfuscate --workspace ./src/Plana.CLI/Plana.CLI.csproj --plugins ./src/Plana.CLI/bin/Releases/net8.0/plugins --write ${{ matrix.plugins }} | |
! git diff-index --quiet HEAD | |
git --no-pager diff --ignore-all-space --ignore-blank-lines |