2023-10-12 14:28:42 +00:00
|
|
|
# Pipeline documentation at https://github.com/dotnet/dotnet/blob/main/docs/license-scanning.md
|
|
|
|
|
|
|
|
schedules:
|
2023-10-30 19:46:36 +00:00
|
|
|
- cron: "0 7 * * 1"
|
|
|
|
displayName: Run on Mondays at 7am UTC
|
2023-10-12 14:28:42 +00:00
|
|
|
branches:
|
|
|
|
include:
|
|
|
|
- main
|
2023-10-30 19:46:36 +00:00
|
|
|
- release/*.0.1xx*
|
|
|
|
- internal/release/*.0.1xx*
|
2023-10-12 14:28:42 +00:00
|
|
|
|
|
|
|
pr: none
|
|
|
|
trigger: none
|
|
|
|
|
|
|
|
parameters:
|
|
|
|
# Provides a way to scan a specific repo. If not provided, all repos of the VMR will be scanned.
|
|
|
|
- name: specificRepoName
|
|
|
|
type: string
|
|
|
|
displayName: "Specific repo name to scan (e.g. runtime, sdk). If empty, scans all repos of the VMR."
|
|
|
|
default: " " # Set it to an empty string to allow it be an optional parameter
|
|
|
|
|
|
|
|
variables:
|
|
|
|
installerRoot: '$(Build.SourcesDirectory)/src/installer'
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
- job: Setup
|
|
|
|
pool:
|
|
|
|
name: NetCore1ESPool-Svc-Internal
|
|
|
|
demands: ImageOverride -equals 1es-ubuntu-2004
|
|
|
|
steps:
|
|
|
|
- script: |
|
|
|
|
vmrSrcDir="$(Build.SourcesDirectory)/src"
|
|
|
|
|
|
|
|
# Builds an Azure DevOps matrix definition. Each entry in the matrix is a path,
|
|
|
|
# allowing a job to be run for each src repo.
|
|
|
|
matrix=""
|
|
|
|
|
|
|
|
# Trim leading/trailing spaces from the repo name
|
|
|
|
specificRepoName=$(echo "${{ parameters.specificRepoName }}" | awk '{$1=$1};1')
|
|
|
|
|
|
|
|
# If the repo name is provided, only scan that repo.
|
|
|
|
if [ ! -z "$specificRepoName" ]; then
|
|
|
|
matrix="\"$specificRepoName\": { \"repoPath\": \"$vmrSrcDir/$specificRepoName\" }"
|
|
|
|
else
|
|
|
|
for dir in $vmrSrcDir/*/
|
|
|
|
do
|
|
|
|
if [ ! -z "$matrix" ]; then
|
|
|
|
matrix="$matrix,"
|
|
|
|
fi
|
|
|
|
repoName=$(basename $dir)
|
|
|
|
matrix="$matrix \"$repoName\": { \"repoPath\": \"$dir\" }"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
matrix="{ $matrix }"
|
|
|
|
|
|
|
|
echo "##vso[task.setvariable variable=matrix;isOutput=true]$matrix"
|
|
|
|
name: GetMatrix
|
|
|
|
displayName: Get Matrix
|
|
|
|
|
|
|
|
- job: LicenseScan
|
|
|
|
dependsOn: Setup
|
|
|
|
pool:
|
|
|
|
name: NetCore1ESPool-Svc-Internal
|
|
|
|
demands: ImageOverride -equals 1es-ubuntu-2004
|
|
|
|
timeoutInMinutes: 420
|
|
|
|
strategy:
|
|
|
|
matrix: $[ dependencies.Setup.outputs['GetMatrix.matrix'] ]
|
|
|
|
steps:
|
|
|
|
|
|
|
|
- script: $(Build.SourcesDirectory)/prep.sh --no-artifacts --no-bootstrap --no-prebuilts
|
|
|
|
displayName: 'Install .NET SDK'
|
|
|
|
|
|
|
|
- task: PipAuthenticate@1
|
|
|
|
displayName: 'Pip Authenticate'
|
|
|
|
inputs:
|
|
|
|
artifactFeeds: public/dotnet-public-pypi
|
|
|
|
onlyAddExtraIndex: false
|
|
|
|
|
|
|
|
- script: $(installerRoot)/eng/install-scancode.sh
|
|
|
|
displayName: Install Scancode
|
|
|
|
|
|
|
|
- script: >
|
|
|
|
$(Build.SourcesDirectory)/.dotnet/dotnet test
|
|
|
|
$(Build.SourcesDirectory)/test/Microsoft.DotNet.SourceBuild.SmokeTests/Microsoft.DotNet.SourceBuild.SmokeTests.csproj
|
|
|
|
--filter "FullyQualifiedName=Microsoft.DotNet.SourceBuild.SmokeTests.LicenseScanTests.ScanForLicenses"
|
|
|
|
--logger:'trx;LogFileName=$(Agent.JobName)_LicenseScan.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_LICENSE_SCAN_PATH=$(repoPath)
|
|
|
|
-e SMOKE_TESTS_RUNNING_IN_CI=true
|
|
|
|
-e SMOKE_TESTS_WARN_LICENSE_SCAN_DIFFS=false
|
|
|
|
-e SMOKE_TESTS_TARGET_RID=linux-x64
|
|
|
|
-e SMOKE_TESTS_PORTABLE_RID=linux-x64
|
|
|
|
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} \;
|
|
|
|
echo "Updated:"
|
|
|
|
find test/ -type f -name "Updated*.json"
|
|
|
|
find test/ -type f -name "Updated*.json" -exec cp {} --parents -t ${targetFolder} \;
|
|
|
|
echo "Results:"
|
|
|
|
find test/ -type f -name "scancode-results*.json"
|
|
|
|
find test/ -type f -name "scancode-results*.json" -exec cp {} --parents -t ${targetFolder} \;
|
|
|
|
echo "All:"
|
|
|
|
ls -R test/
|
|
|
|
echo "BuildLogs:"
|
|
|
|
ls -R ${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)/test/Microsoft.DotNet.SourceBuild.SmokeTests/TestResults
|
|
|
|
mergeTestResults: true
|
|
|
|
publishRunAttachments: true
|
|
|
|
testRunTitle: $(Agent.JobName)
|