diff --git a/.github/workflows/csharp.yml b/.github/workflows/csharp.yml index 1650a685..300016b8 100644 --- a/.github/workflows/csharp.yml +++ b/.github/workflows/csharp.yml @@ -29,7 +29,7 @@ jobs: netFrameworksAndUnitTest: name: Build Framework & Run Unit Tests needs: [ lintCodebase ] - runs-on: windows-2019 # required version for Framework 4.0 + runs-on: windows-2022 env: REPO_SLUG: ${{ github.repository }} BUILD_NUMBER: ${{ github.run_id }} @@ -44,15 +44,51 @@ jobs: uses: microsoft/setup-msbuild@v1 - name: Setup NuGet uses: NuGet/setup-nuget@v1 + - name: Download and Extract .NET Framework Reference Assemblies + run: | + # Create temp directory + New-Item -ItemType Directory -Path "temp_ref_assemblies" -Force + + # Download .NET 4.0 Reference Assemblies + echo "Downloading .NET 4.0 Reference Assemblies..." + Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net40/1.0.3" -OutFile "temp_ref_assemblies/net40_ref.zip" + + # Download .NET 4.5 Reference Assemblies + echo "Downloading .NET 4.5 Reference Assemblies..." + Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.3" -OutFile "temp_ref_assemblies/net45_ref.zip" + + # Extract .NET 4.0 Reference Assemblies + echo "Extracting .NET 4.0 Reference Assemblies..." + Expand-Archive -Path "temp_ref_assemblies/net40_ref.zip" -DestinationPath "temp_ref_assemblies/net40" -Force + if (Test-Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0") { + echo "✓ .NET 4.0 Reference Assemblies extracted to workspace" + } + + # Extract .NET 4.5 Reference Assemblies + echo "Extracting .NET 4.5 Reference Assemblies..." + Expand-Archive -Path "temp_ref_assemblies/net45_ref.zip" -DestinationPath "temp_ref_assemblies/net45" -Force + if (Test-Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5") { + echo "✓ .NET 4.5 Reference Assemblies extracted to workspace" + } - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build & strongly name assemblies - run: msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.NETFramework.sln + run: | + # Build with workspace-relative reference assembly paths + $Net40RefPath = "$(pwd)\temp_ref_assemblies\net40\build\.NETFramework\v4.0" + $Net45RefPath = "$(pwd)\temp_ref_assemblies\net45\build\.NETFramework\v4.5" + + echo "Using .NET 4.0 Reference Assemblies from: $Net40RefPath" + echo "Using .NET 4.5 Reference Assemblies from: $Net45RefPath" + + msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release /p:FrameworkPathOverride="$Net45RefPath" ./OptimizelySDK.NETFramework.sln - name: Install & Run NUnit tests run: | nuget install NUnit.Console -Version 3.18.1 -DirectDownload -OutputDirectory . # https://docs.nunit.org/articles/nunit/running-tests/Console-Command-Line.html ./NUnit.ConsoleRunner.3.18.1\tools\nunit3-console.exe /timeout 10000 /process Separate ./OptimizelySDK.Tests/bin/Release/OptimizelySDK.Tests.dll + - name: Cleanup reference assemblies + run: Remove-Item -Path "temp_ref_assemblies" -Recurse -Force netStandard16: name: Build Standard 1.6 diff --git a/.github/workflows/csharp_release.yml b/.github/workflows/csharp_release.yml index 80461161..f4c1736c 100644 --- a/.github/workflows/csharp_release.yml +++ b/.github/workflows/csharp_release.yml @@ -31,7 +31,7 @@ jobs: buildFrameworkVersions: name: Build Framework versions needs: [ variables ] - runs-on: windows-2019 # required version for Framework 4.0 + runs-on: windows-2022 steps: - name: Checkout code uses: actions/checkout@v4 @@ -41,10 +41,46 @@ jobs: uses: microsoft/setup-msbuild@v2 - name: Setup NuGet uses: nuget/setup-nuget@v2 + - name: Download and Extract .NET Framework Reference Assemblies + run: | + # Create temp directory + New-Item -ItemType Directory -Path "temp_ref_assemblies" -Force + + # Download .NET 4.0 Reference Assemblies + echo "Downloading .NET 4.0 Reference Assemblies..." + Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net40/1.0.3" -OutFile "temp_ref_assemblies/net40_ref.zip" + + # Download .NET 4.5 Reference Assemblies + echo "Downloading .NET 4.5 Reference Assemblies..." + Invoke-WebRequest -Uri "https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.3" -OutFile "temp_ref_assemblies/net45_ref.zip" + + # Extract .NET 4.0 Reference Assemblies + echo "Extracting .NET 4.0 Reference Assemblies..." + Expand-Archive -Path "temp_ref_assemblies/net40_ref.zip" -DestinationPath "temp_ref_assemblies/net40" -Force + if (Test-Path "temp_ref_assemblies/net40/build/.NETFramework/v4.0") { + echo "✓ .NET 4.0 Reference Assemblies extracted to workspace" + } + + # Extract .NET 4.5 Reference Assemblies + echo "Extracting .NET 4.5 Reference Assemblies..." + Expand-Archive -Path "temp_ref_assemblies/net45_ref.zip" -DestinationPath "temp_ref_assemblies/net45" -Force + if (Test-Path "temp_ref_assemblies/net45/build/.NETFramework/v4.5") { + echo "✓ .NET 4.5 Reference Assemblies extracted to workspace" + } - name: Restore NuGet packages run: nuget restore ./OptimizelySDK.NETFramework.sln - name: Build and strongly name assemblies - run: msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release ./OptimizelySDK.NETFramework.sln + run: | + # Build with workspace-relative reference assembly paths + $Net40RefPath = "$(pwd)\temp_ref_assemblies\net40\build\.NETFramework\v4.0" + $Net45RefPath = "$(pwd)\temp_ref_assemblies\net45\build\.NETFramework\v4.5" + + echo "Using .NET 4.0 Reference Assemblies from: $Net40RefPath" + echo "Using .NET 4.5 Reference Assemblies from: $Net45RefPath" + + msbuild /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=$(pwd)/keypair.snk /p:Configuration=Release /p:FrameworkPathOverride="$Net45RefPath" ./OptimizelySDK.NETFramework.sln + - name: Cleanup reference assemblies + run: Remove-Item -Path "temp_ref_assemblies" -Recurse -Force - name: Upload Framework artifacts uses: actions/upload-artifact@v4 with: @@ -55,7 +91,7 @@ jobs: buildStandard16: name: Build Standard 1.6 version needs: [ variables ] - runs-on: windows-latest + runs-on: windows-2022 steps: - name: Checkout code uses: actions/checkout@v4 @@ -77,7 +113,7 @@ jobs: buildStandard20: name: Build Standard 2.0 version needs: [ variables ] - runs-on: windows-latest + runs-on: windows-2022 steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml deleted file mode 100644 index 54ba8165..00000000 --- a/.github/workflows/sonarqube.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: SonarQube -on: - push: - branches: - - dsier/sonarqube -jobs: - build: - name: Build - runs-on: windows-latest - steps: - - name: Set up JDK 11 - uses: actions/setup-java@v4 - with: - java-version: 1.11 - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Cache SonarCloud packages - uses: actions/cache@v4 - with: - path: ~\sonar\cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - name: Cache SonarCloud scanner - id: cache-sonar-scanner - uses: actions/cache@v4 - with: - path: .\.sonar\scanner - key: ${{ runner.os }}-sonar-scanner - restore-keys: ${{ runner.os }}-sonar-scanner - - name: Install SonarCloud scanner - if: steps.cache-sonar-scanner.outputs.cache-hit != 'true' - shell: powershell - run: | - New-Item -Path .\.sonar\scanner -ItemType Directory - dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner - - name: Build and analyze - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - shell: powershell - run: | - .\.sonar\scanner\dotnet-sonarscanner begin /k:"csharpsdk" /o:"optidevx" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" - dotnet build .\OptimizelySDK\ - .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN