parameters: - name: buildName type: string - name: targetRid type: string - name: architecture type: string - name: dotnetDotnetRunId type: string jobs: - job: ${{ parameters.buildName }}_${{ parameters.architecture }} timeoutInMinutes: 150 pool: name: NetCore1ESPool-Svc-Internal demands: ImageOverride -equals 1es-ubuntu-2004 variables: - template: ../variables/pipelines.yml steps: - script: | dotnet_dotnet_build='${{ replace(parameters.dotnetDotnetRunId, ' ', '') }}' if [[ -z "$dotnet_dotnet_build" ]]; then dotnet_dotnet_build=$(az pipelines runs list --branch '$(Build.SourceBranch)' --organization '$(AZDO_ORG)' --project '$(AZDO_PROJECT)' --pipeline-ids '$(DOTNET_DOTNET_CI_PIPELINE_ID)' --status completed --top 1 --query "[].id" --output tsv) fi if [[ -z "$dotnet_dotnet_build" ]]; then echo "Could not find a completed dotnet-dotnet build for branch '$(Build.SourceBranch)'" exit 1 fi echo "Dotnet-dotnet build: https://dev.azure.com/dnceng/internal/_build/results?buildId=$dotnet_dotnet_build&view=results" installer_sha=$(az pipelines build tag list --organization '$(AZDO_ORG)' --project '$(AZDO_PROJECT)' --build-id $dotnet_dotnet_build --output tsv | sed "s,installer-,,g") installer_build=$(az pipelines runs list --organization '$(AZDO_ORG)' --project '$(AZDO_PROJECT)' --pipeline-ids '$(INSTALLER_OFFICIAL_CI_PIPELINE_ID)' --query "[?sourceVersion == '$installer_sha'].id" --output tsv) if [[ -z "$installer_build" ]]; then echo "Could not find a build of installer for commit '$installer_sha'" exit 1 fi echo "Installer build: https://dev.azure.com/dnceng/internal/_build/results?buildId=$installer_build&view=results" echo "##vso[build.addbuildtag]installer-$installer_sha" echo "##vso[task.setvariable variable=InstallerBuildId]$installer_build" echo "##vso[task.setvariable variable=DotnetDotnetBuildId]$dotnet_dotnet_build" displayName: Find associated builds name: Get_Build_Ids env: AZURE_DEVOPS_EXT_PAT: $(System.AccessToken) - task: DownloadPipelineArtifact@2 displayName: Download MSFT SDK inputs: buildType: specific buildVersionToDownload: specific project: internal pipeline: $(INSTALLER_OFFICIAL_CI_PIPELINE_ID) buildId: $(InstallerBuildId) artifact: BlobArtifacts patterns: '**/dotnet-sdk-+([0-9]).+([0-9]).+([0-9])?(-@(alpha|preview|rc|rtm)*)-linux-${{ parameters.architecture }}.tar.gz' allowPartiallySucceededBuilds: true allowFailedBuilds: true downloadPath: $(Pipeline.Workspace)/Artifacts checkDownloadedFiles: true - task: DownloadPipelineArtifact@2 displayName: Download Source Build SDK inputs: buildType: specific buildVersionToDownload: specific project: internal pipeline: $(DOTNET_DOTNET_CI_PIPELINE_ID) buildId: $(DotnetDotnetBuildId) artifact: ${{ parameters.buildName }}_${{ parameters.architecture }}_Artifacts patterns: '**/dotnet-sdk-+([0-9]).+([0-9]).+([0-9])?(-@(alpha|preview|rc|rtm)*)-${{ parameters.targetRid }}.tar.gz' allowPartiallySucceededBuilds: true allowFailedBuilds: true downloadPath: $(Pipeline.Workspace)/Artifacts checkDownloadedFiles: true - script: | msft_sdk_tarball_name=$(find "$(Pipeline.Workspace)/Artifacts" -name "dotnet-sdk-*-linux-${{ parameters.architecture }}.tar.gz" -exec basename {} \;) if [[ -z "$msft_sdk_tarball_name" ]]; then echo "Microsoft SDK tarball does not exist in '$(Pipeline.Workspace)/Artifacts'. The associated build https://dev.azure.com/dnceng/internal/_build/results?buildId=$(InstallerBuildId) might have failed." exit 1 fi sdk_tarball_name=$(find "$(Pipeline.Workspace)/Artifacts" -name "dotnet-sdk-*-${{ parameters.targetRid }}.tar.gz" -exec basename {} \;) if [[ -z "$sdk_tarball_name" ]]; then echo "Source-build SDK tarball does not exist in '$(Pipeline.Workspace)/Artifacts'. The associated build https://dev.azure.com/dnceng/internal/_build/results?buildId=$(DotnetDotnetBuildId) might have failed" exit 1 fi eng/common/build.sh -bl --projects $(Build.SourcesDirectory)/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Microsoft.DotNet.SourceBuild.SmokeTests.csproj --restore echo "##vso[task.setvariable variable=MsftSdkTarballPath]$(Pipeline.Workspace)/Artifacts/$msft_sdk_tarball_name" echo "##vso[task.setvariable variable=SdkTarballPath]$(Pipeline.Workspace)/Artifacts/$sdk_tarball_name" displayName: Prepare Tests workingDirectory: $(Build.SourcesDirectory) - script: > .dotnet/dotnet test $(Build.SourcesDirectory)/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/Microsoft.DotNet.SourceBuild.SmokeTests.csproj --filter "Category=SdkContent" --logger:'trx;LogFileName=$(Agent.JobName)_SDKDiffTests.trx' --logger:'console;verbosity=detailed' -c Release -bl:$(Build.SourcesDirectory)/artifacts/log/Debug/BuildTests_$(date +"%m%d%H%M%S").binlog -flp:LogFile=$(Build.SourcesDirectory)/artifacts/logs/BuildTests_$(date +"%m%d%H%M%S").log -clp:v=m -e SMOKE_TESTS_MSFT_SDK_TARBALL_PATH=$(MsftSdkTarballPath) -e SMOKE_TESTS_SDK_TARBALL_PATH=$(SdkTarballPath) -e SMOKE_TESTS_SOURCEBUILT_ARTIFACTS_PATH=$(SourceBuiltArtifactsPath) -e SMOKE_TESTS_WARN_SDK_CONTENT_DIFFS=false -e SMOKE_TESTS_RUNNING_IN_CI=true -e SMOKE_TESTS_TARGET_RID=${{ parameters.targetRid }} -e SMOKE_TESTS_PORTABLE_RID=linux-${{ parameters.architecture }} -e SMOKE_TESTS_CUSTOM_PACKAGES_PATH= displayName: Run Tests workingDirectory: $(Build.SourcesDirectory) - script: | set -x targetFolder=$(Build.StagingDirectory)/BuildLogs/ mkdir -p ${targetFolder} cd "$(Build.SourcesDirectory)" find artifacts/ -type f -name "BuildTests*.binlog" -exec cp {} --parents -t ${targetFolder} \; find artifacts/ -type f -name "BuildTests*.log" -exec cp {} --parents -t ${targetFolder} \; find artifacts/ -type f -name "Build.binlog" -exec cp {} --parents -t ${targetFolder} \; cd "$(Build.SourcesDirectory)/src/SourceBuild/content" find test/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \; find test/ -type f -name "Updated*.diff" -exec cp {} --parents -t ${targetFolder} \; find test/ -type f -name "Updated*.txt" -exec cp {} --parents -t ${targetFolder} \; displayName: Prepare BuildLogs staging directory continueOnError: true condition: succeededOrFailed() - publish: '$(Build.StagingDirectory)/BuildLogs' artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) displayName: Publish BuildLogs continueOnError: true condition: succeededOrFailed() - task: PublishTestResults@2 displayName: Publish Test Results condition: succeededOrFailed() continueOnError: true inputs: testRunner: vSTest testResultsFiles: '*.trx' searchFolder: $(Build.SourcesDirectory)/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/TestResults mergeTestResults: true publishRunAttachments: true testRunTitle: $(Agent.JobName)