diff --git a/.nuget/NuGet.config b/.nuget/NuGet.config
deleted file mode 100644
index 47ac8ca56..000000000
--- a/.nuget/NuGet.config
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.nuget/NuGet.targets b/.nuget/NuGet.targets
index 32a9f0334..340603a6e 100644
--- a/.nuget/NuGet.targets
+++ b/.nuget/NuGet.targets
@@ -2,7 +2,7 @@
$(MSBuildProjectDirectory)\..\
-
+
false
@@ -11,47 +11,43 @@
true
-
+
true
-
+
-
-
+
$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))
$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))
-
+
$(SolutionDir).nuget
packages.config
-
+
$(NuGetToolsPath)\NuGet.exe
@(PackageSource)
-
+
"$(NuGetExePath)"
mono --runtime=v4.0.30319 $(NuGetExePath)
$(TargetDir.Trim('\\'))
-
+
-NoCache
-PreRelease
-RequireConsent
-NonInteractive
-
+
"$(PackageRestoreOutputDir) "
"$(PackageRestoreOutputDir)"
@@ -94,7 +90,7 @@
-
+
@@ -102,21 +98,21 @@
-
+
-
-
+
-
+
diff --git a/NuGet.config b/NuGet.config
index be29de372..1f0277b19 100644
--- a/NuGet.config
+++ b/NuGet.config
@@ -8,7 +8,7 @@
-
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 0d9ebcc60..ab31b917f 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -36,9 +36,9 @@
-
+
https://github.com/dotnet/arcade
- d01f08a47a14c3842f5f74e14e6a6a8b7b7a5593
+ 251249a04a9686ca2660e2acaa3094446a48f10d
6471
diff --git a/eng/common/internal-feed-operations.ps1 b/eng/common/internal-feed-operations.ps1
index 8b8bafd6a..66a4b754d 100644
--- a/eng/common/internal-feed-operations.ps1
+++ b/eng/common/internal-feed-operations.ps1
@@ -64,7 +64,6 @@ function SetupCredProvider {
}
if (($endpoints | Measure-Object).Count -gt 0) {
- # Create the JSON object. It should look like '{"endpointCredentials": [{"endpoint":"http://example.index.json", "username":"optional", "password":"accesstoken"}]}'
$endpointCredentials = @{endpointCredentials=$endpoints} | ConvertTo-Json -Compress
# Create the environment variables the AzDo way
diff --git a/eng/common/internal-feed-operations.sh b/eng/common/internal-feed-operations.sh
index 1ff654d2f..5eb546990 100755
--- a/eng/common/internal-feed-operations.sh
+++ b/eng/common/internal-feed-operations.sh
@@ -62,7 +62,6 @@ function SetupCredProvider {
endpoints+=']'
if [ ${#endpoints} -gt 2 ]; then
- # Create the JSON object. It should look like '{"endpointCredentials": [{"endpoint":"http://example.index.json", "username":"optional", "password":"accesstoken"}]}'
local endpointCredentials="{\"endpointCredentials\": "$endpoints"}"
echo "##vso[task.setvariable variable=VSS_NUGET_EXTERNAL_FEED_ENDPOINTS]$endpointCredentials"
diff --git a/eng/common/sdl/init-sdl.ps1 b/eng/common/sdl/init-sdl.ps1
index c737eb0e7..d34d25287 100644
--- a/eng/common/sdl/init-sdl.ps1
+++ b/eng/common/sdl/init-sdl.ps1
@@ -11,6 +11,12 @@ $ErrorActionPreference = "Stop"
Set-StrictMode -Version 2.0
$LASTEXITCODE = 0
+# `tools.ps1` checks $ci to perform some actions. Since the SDL
+# scripts don't necessarily execute in the same agent that run the
+# build.ps1/sh script this variable isn't automatically set.
+$ci = $true
+. $PSScriptRoot\..\tools.ps1
+
# Don't display the console progress UI - it's a huge perf hit
$ProgressPreference = 'SilentlyContinue'
@@ -21,19 +27,9 @@ $uri = "https://dev.azure.com/dnceng/internal/_apis/git/repositories/sdl-tool-cf
$zipFile = "$WorkingDirectory/gdn.zip"
Add-Type -AssemblyName System.IO.Compression.FileSystem
-$gdnFolder = (Join-Path $WorkingDirectory ".gdn")
-Try
-{
- # We try to download the zip; if the request fails (e.g. the file doesn't exist), we catch it and init guardian instead
- Write-Host "Downloading gdn folder from internal config repostiory..."
- Invoke-WebRequest -Headers @{ "Accept"="application/zip"; "Authorization"="Basic $encodedPat" } -Uri $uri -OutFile $zipFile
- if (Test-Path $gdnFolder) {
- # Remove the gdn folder if it exists (it shouldn't unless there's too much caching; this is just in case)
- Remove-Item -Force -Recurse $gdnFolder
- }
- [System.IO.Compression.ZipFile]::ExtractToDirectory($zipFile, $WorkingDirectory)
- Write-Host $gdnFolder
-} Catch [System.Net.WebException] {
+$gdnFolder = (Join-Path $WorkingDirectory '.gdn')
+
+try {
# if the folder does not exist, we'll do a guardian init and push it to the remote repository
Write-Host "Initializing Guardian..."
Write-Host "$GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel"
@@ -48,4 +44,10 @@ Try
Write-Error "Guardian baseline failed with exit code $LASTEXITCODE."
}
& $(Join-Path $PSScriptRoot "push-gdn.ps1") -Repository $Repository -BranchName $BranchName -GdnFolder $gdnFolder -AzureDevOpsAccessToken $AzureDevOpsAccessToken -PushReason "Initialize gdn folder"
+ ExitWithExitCode 0
+}
+catch {
+ Write-Host $_.ScriptStackTrace
+ Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_
+ ExitWithExitCode 1
}
\ No newline at end of file
diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config
index 968b39bef..3bd8b29eb 100644
--- a/eng/common/sdl/packages.config
+++ b/eng/common/sdl/packages.config
@@ -1,4 +1,4 @@
-
+
diff --git a/eng/common/templates/job/execute-sdl.yml b/eng/common/templates/job/execute-sdl.yml
index bf09d2511..34ea01568 100644
--- a/eng/common/templates/job/execute-sdl.yml
+++ b/eng/common/templates/job/execute-sdl.yml
@@ -65,7 +65,7 @@ jobs:
continueOnError: ${{ parameters.sdlContinueOnError }}
- ${{ if eq(parameters.overrideParameters, '') }}:
- powershell: eng/common/sdl/execute-all-sdl-tools.ps1
- -GuardianPackageName Microsoft.Guardian.Cli.win10-x64.0.20.1
+ -GuardianPackageName Microsoft.Guardian.Cli.0.53.3
-NugetPackageDirectory $(Build.SourcesDirectory)\.packages
-AzureDevOpsAccessToken $(dn-bot-dotnet-build-rw-code-rw)
${{ parameters.additionalParameters }}
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index f50507a06..84651fea0 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -176,7 +176,32 @@ function GetDotNetInstallScript([string] $dotnetRoot) {
if (!(Test-Path $installScript)) {
Create-Directory $dotnetRoot
$ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
- Invoke-WebRequest "https://dot.net/$dotnetInstallScriptVersion/dotnet-install.ps1" -OutFile $installScript
+
+ $maxRetries = 5
+ $retries = 1
+
+ $uri = "https://dot.net/$dotnetInstallScriptVersion/dotnet-install.ps1"
+
+ while($true) {
+ try {
+ Write-Host "GET $uri"
+ Invoke-WebRequest $uri -OutFile $installScript
+ break
+ }
+ catch {
+ Write-Host "Failed to download '$uri'"
+ Write-Error $_.Exception.Message -ErrorAction Continue
+ }
+
+ if (++$retries -le $maxRetries) {
+ $delayInSeconds = [math]::Pow(2, $retries) - 1 # Exponential backoff
+ Write-Host "Retrying. Waiting for $delayInSeconds seconds before next attempt ($retries of $maxRetries)."
+ Start-Sleep -Seconds $delayInSeconds
+ }
+ else {
+ throw "Unable to download file in $maxRetries attempts."
+ }
+ }
}
return $installScript
@@ -366,7 +391,27 @@ function LocateVisualStudio([object]$vsRequirements = $null){
if (!(Test-Path $vsWhereExe)) {
Create-Directory $vsWhereDir
Write-Host "Downloading vswhere"
- Invoke-WebRequest "https://github.com/Microsoft/vswhere/releases/download/$vswhereVersion/vswhere.exe" -OutFile $vswhereExe
+ $maxRetries = 5
+ $retries = 1
+
+ while($true) {
+ try {
+ Invoke-WebRequest "https://netcorenativeassets.blob.core.windows.net/resource-packages/external/windows/vswhere/$vswhereVersion/vswhere.exe" -OutFile $vswhereExe
+ break
+ }
+ catch{
+ Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_
+ }
+
+ if (++$retries -le $maxRetries) {
+ $delayInSeconds = [math]::Pow(2, $retries) - 1 # Exponential backoff
+ Write-Host "Retrying. Waiting for $delayInSeconds seconds before next attempt ($retries of $maxRetries)."
+ Start-Sleep -Seconds $delayInSeconds
+ }
+ else {
+ Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Unable to download file in $maxRetries attempts."
+ }
+ }
}
if (!$vsRequirements) { $vsRequirements = $GlobalJson.tools.vs }
diff --git a/global.json b/global.json
index 4d71677b7..c7dc52b1f 100644
--- a/global.json
+++ b/global.json
@@ -11,6 +11,6 @@
"version": "3.1.100"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.21063.4"
+ "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.21110.10"
}
}
diff --git a/test/EntityFramework/FunctionalTests/Migrations/BasicMigrationScenarios.cs b/test/EntityFramework/FunctionalTests/Migrations/BasicMigrationScenarios.cs
index 69ed29c09..152241446 100644
--- a/test/EntityFramework/FunctionalTests/Migrations/BasicMigrationScenarios.cs
+++ b/test/EntityFramework/FunctionalTests/Migrations/BasicMigrationScenarios.cs
@@ -578,7 +578,7 @@ namespace System.Data.Entity.Migrations
Assert.Equal(initialCreate.MigrationId, scaffoldedMigration.MigrationId);
}
- [MigrationsTheory]
+ [MigrationsTheory(SkipForLocalDb = true, Justification = "Test is too flaky.")]
public void Update_blocks_automatic_migration_when_explicit_source_model()
{
ResetDatabase();