88 branches :
99 - main
1010 pull_request :
11+ paths :
12+ - " src/**"
13+ - " Directory.Build.props"
14+ - " Directory.Build.targets"
15+ - " Directory.Packages.props"
16+ - " global.json"
17+ - " .github/workflows/smoke-test.yml"
1118 schedule :
1219 - cron : " 0 0 * * *" # every day at midnight
1320
@@ -16,28 +23,9 @@ permissions:
1623
1724jobs :
1825 smoke-test :
19- if : github.repository == 'microsoft/component-detection'
26+ if : github.repository == 'microsoft/component-detection' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false)
2027 runs-on : ["self-hosted", "1ES.Pool=1ES-OSE-GH-Pool"]
21- strategy :
22- matrix :
23- language :
24- [
25- { name: "CocoaPods", repo: "realm/realm-swift" },
26- { name: "Gradle", repo: "microsoft/ApplicationInsights-Java" },
27- { name: "Go", repo: "kubernetes/kubernetes" },
28- { name: "Maven", repo: "apache/kafka" },
29- { name: "NPM", repo: "axios/axios" },
30- { name: "NuGet", repo: "Radarr/Radarr" },
31- { name: "Pip", repo: "django/django" },
32- { name: "Pnpm", repo: "pnpm/pnpm" },
33- { name: "Poetry", repo: "Textualize/rich" },
34- { name: "Ruby", repo: "rails/rails" },
35- { name: "Rust", repo: "alacritty/alacritty" },
36- { name: "Yarn", repo: "gatsbyjs/gatsby" },
37- ]
38- fail-fast : false
39- max-parallel : 4 # limit the total number of running jobs to avoid rate limiting
40- name : ${{ matrix.language.name }}
28+ name : Smoke Test
4129 steps :
4230 - name : Harden Runner
4331 uses : step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
@@ -67,23 +55,39 @@ jobs:
6755 sudo chmod 777 /usr/share/ant/lib
6856 curl https://downloads.apache.org/ant/ivy/2.5.2/apache-ivy-2.5.2-bin.tar.gz | tar xOz apache-ivy-2.5.2/ivy-2.5.2.jar > /usr/share/ant/lib/ivy.jar
6957
70- - name : Checkout Smoke Test Repo
71- uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
72- with :
73- persist-credentials : false
74- repository : ${{ matrix.language.repo }}
75- path : smoke-test-repo
58+ - name : Checkout Smoke Test Repos
59+ run : |
60+ mkdir -p smoke-test-repos
61+ repos=(
62+ "realm/realm-swift" # CocoaPods
63+ "microsoft/ApplicationInsights-Java" # Gradle
64+ "kubernetes/kubernetes" # Go
65+ "apache/kafka" # Maven
66+ "axios/axios" # NPM
67+ "Radarr/Radarr" # NuGet
68+ "django/django" # Pip
69+ "pnpm/pnpm" # Pnpm
70+ "Textualize/rich" # Poetry
71+ "rails/rails" # Ruby
72+ "alacritty/alacritty" # Rust
73+ "gatsbyjs/gatsby" # Yarn
74+ )
75+ for repo in "${repos[@]}"; do
76+ dir="smoke-test-repos/$(basename "$repo")"
77+ echo "Cloning $repo into $dir..."
78+ git clone --depth 1 "https://github.com/$repo.git" "$dir"
79+ done
7680
7781 - name : Restore Smoke Test NuGet Packages
78- if : ${{ matrix.language.name == 'NuGet'}}
79- working-directory : smoke-test-repo/src
82+ working-directory : smoke-test-repos/Radarr/src
8083 run : dotnet restore
8184
8285 - name : Run Smoke Test
8386 working-directory : src/Microsoft.ComponentDetection
8487 run : |
85- for i in $(seq 1 10); do
86- dotnet run -c Release -- scan --SourceDirectory ${{ github.workspace }}/smoke-test-repo --Verbosity Verbose || exit 1
88+ ITERATIONS=${{ github.event_name == 'schedule' && 10 || 1 }}
89+ for i in $(seq 1 $ITERATIONS); do
90+ dotnet run -c Release -- scan --SourceDirectory ${{ github.workspace }}/smoke-test-repos --Verbosity Verbose || exit 1
8791 done
8892
8993 create-issue :
0 commit comments