diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml
index 726ae1444fbd395edabd80fc5b8099ae9fc90959..47ef331fa20e2c75098320cecaea7b3bf78ff0dc 100644
--- a/.azure/pipelines/ci.yml
+++ b/.azure/pipelines/ci.yml
@@ -126,9 +126,11 @@ jobs:
         /bl:artifacts/log/build.signcheck.binlog
          $(_BuildArgs)
       displayName: Run sign check
-      condition: eq(variables['_SignType'], 'real')
+      condition: and(succeeded(), eq(variables['_SignType'], 'real'))
 
     artifacts:
+    - name: Windows_Logs
+      path: artifacts/log/
     - name: Windows_Packages
       path: artifacts/packages/
     - name: Windows_VSIX
@@ -137,8 +139,6 @@ jobs:
       path: artifacts/manifests/
     - name: Windows_Installers
       path: artifacts/installers/
-    - name: Windows_Logs
-      path: artifacts/log/
       publishOnError: true
 
 # Build Windows ARM
diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml
index 7de0612fad2746db2160babbbf541b982bba39b7..96586165ce2119609f3f50a3c3f63bb48a755d89 100644
--- a/.azure/pipelines/jobs/default-build.yml
+++ b/.azure/pipelines/jobs/default-build.yml
@@ -191,6 +191,23 @@ jobs:
       continueOnError: true
       condition: always()
 
+  - ${{ each artifact in parameters.artifacts }}:
+    - task: PublishBuildArtifacts@1
+      displayName: Upload artifacts from ${{ artifact.path }}
+      condition: and(or(succeeded(), eq('${{ artifact.publishOnError }}', 'true')), or(eq(variables['system.pullrequest.isfork'], false), eq('${{ artifact.includeForks }}', 'true')))
+      continueOnError: true
+      inputs:
+        ${{ if eq(parameters.buildDirectory, '') }}:
+          pathtoPublish: ${{ artifact.path }}
+        ${{ if ne(parameters.buildDirectory, '') }}:
+          pathtoPublish: ${{ parameters.buildDirectory }}\${{ artifact.path }}
+        ${{ if eq(artifact.name, '') }}:
+          artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration)
+        ${{ if ne(artifact.name, '') }}:
+          artifactName: ${{ artifact.name }}
+        artifactType: Container
+        parallel: true
+
   - task: PublishTestResults@2
     displayName: Publish test results
     condition: always()
@@ -218,22 +235,6 @@ jobs:
       testResultsFiles: '**/TEST-com.microsoft.signalr*.xml'
       buildConfiguration: $(BuildConfiguration)
       buildPlatform: $(AgentOsName)
-  - ${{ each artifact in parameters.artifacts }}:
-    - task: PublishBuildArtifacts@1
-      displayName: Upload artifacts from ${{ artifact.path }}
-      condition: and(or(succeeded(), eq('${{ artifact.publishOnError }}', 'true')), or(eq(variables['system.pullrequest.isfork'], false), eq('${{ artifact.includeForks }}', 'true')))
-      continueOnError: true
-      inputs:
-        ${{ if eq(parameters.buildDirectory, '') }}:
-          pathtoPublish: ${{ artifact.path }}
-        ${{ if ne(parameters.buildDirectory, '') }}:
-          pathtoPublish: ${{ parameters.buildDirectory }}\${{ artifact.path }}
-        ${{ if eq(artifact.name, '') }}:
-          artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration)
-        ${{ if ne(artifact.name, '') }}:
-          artifactName: ${{ artifact.name }}
-        artifactType: Container
-        parallel: true
 
   - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows')) }}:
     - task: MicroBuildCleanup@1