@@ -19,7 +19,12 @@ steps:
1919          queue : " juliaecosystem" 
2020          os : " macos" 
2121          arch : " aarch64" 
22-         if : build.message !~ /\[skip tests\]/ 
22+         if : | 
23+           build.message =~ /\[only tests\]/ || 
24+           build.message =~ /\[only julia\]/ || 
25+           build.message !~ /\[only/ && !build.pull_request.draft && 
26+             build.message !~ /\[skip tests\]/ && 
27+             build.message !~ /\[skip julia\]/ 
2328         timeout_in_minutes : 60 
2429        matrix :
2530          setup :
@@ -46,7 +51,12 @@ steps:
4651          queue : " juliaecosystem" 
4752          os : " macos" 
4853          arch : " aarch64" 
49-         if : build.message !~ /\[skip tests\]/ && !build.pull_request.draft 
54+         if : | 
55+           build.message =~ /\[only tests\]/ || 
56+           build.message =~ /\[only special\]/ || 
57+           build.message !~ /\[only/ && !build.pull_request.draft && 
58+             build.message !~ /\[skip tests\]/ && 
59+             build.message !~ /\[skip special\]/ 
5060         timeout_in_minutes : 60 
5161        matrix :
5262          setup :
@@ -75,7 +85,12 @@ steps:
7585          queue : " juliaecosystem" 
7686          os : " macos" 
7787          arch : " aarch64" 
78-         if : build.message !~ /\[skip tests\]/ && !build.pull_request.draft 
88+         if : | 
89+           build.message =~ /\[only tests\]/ || 
90+           build.message =~ /\[only special\]/ || 
91+           build.message !~ /\[only/ && !build.pull_request.draft && 
92+             build.message !~ /\[skip tests\]/ && 
93+             build.message !~ /\[skip special\]/ 
7994         timeout_in_minutes : 60 
8095      - label : " Opaque pointers" 
8196        plugins :
@@ -95,5 +110,114 @@ steps:
95110          queue : " juliaecosystem" 
96111          os : " macos" 
97112          arch : " aarch64" 
98-         if : build.message !~ /\[skip tests\]/ && !build.pull_request.draft 
113+         if : | 
114+           build.message =~ /\[only tests\]/ || 
115+           build.message =~ /\[only special\]/ || 
116+           build.message !~ /\[only/ && !build.pull_request.draft && 
117+             build.message !~ /\[skip tests\]/ && 
118+             build.message !~ /\[skip special\]/ 
99119         timeout_in_minutes : 60 
120+ 
121+   #  we want to benchmark every commit on the master branch, even if it failed CI
122+   - wait : ~ 
123+     #  continue_on_failure: true
124+ 
125+   - group : " :racehorse: Benchmarks" 
126+     steps :
127+       - label : " Benchmarks" 
128+         plugins :
129+           - JuliaCI/julia#v1: 
130+               version : " 1.10" 
131+         command : | 
132+           julia --project=perf -e ' 
133+             using Pkg 
134+ 
135+             println("--- :julia: Instantiating project") 
136+             Pkg.develop([PackageSpec(path=pwd())]) 
137+             Pkg.instantiate() 
138+             push!(LOAD_PATH, @__DIR__) 
139+ 
140+             println("+++ :julia: Benchmarking") 
141+             include("perf/runbenchmarks.jl")' 
142+          artifact_paths :
143+           - " benchmarkresults.json" 
144+         agents :
145+           queue : " juliaecosystem" 
146+           os : " macos" 
147+           arch : " aarch64" 
148+         if : | 
149+           build.message =~ /\[only benchmarks\]/ || 
150+           build.message !~ /\[only/ && !build.pull_request.draft && 
151+             build.message !~ /\[skip benchmarks\]/ 
152+          timeout_in_minutes : 30 
153+       #  - label: "Benchmarks (dry run)"
154+       #    plugins:
155+       #      - JuliaCI/julia#v1:
156+       #          version: "1.10"
157+       #    command: |
158+       #      julia --project -e '
159+       #        using Pkg
160+ 
161+       #        println("--- :julia: Instantiating project")
162+       #        Pkg.resolve()
163+       #        Pkg.instantiate()
164+       #        Pkg.activate("perf")
165+       #        Pkg.resolve()
166+       #        Pkg.instantiate()
167+       #        push!(LOAD_PATH, @__DIR__)
168+ 
169+       #        println("+++ :julia: Benchmarking")
170+       #        include("perf/runbenchmarks.jl")'
171+       #    artifact_paths:
172+       #      - "results.json"
173+       #    agents:
174+       #      queue: "juliaecosystem"
175+       #      os: "macos"
176+       #      arch: "aarch64"
177+       #    if: |
178+       #      build.message =~ /\[only benchmarks\]/ ||
179+       #      build.message !~ /\[only/ && !build.pull_request.draft &&
180+       #        build.message !~ /\[skip benchmarks\]/
181+       #    timeout_in_minutes: 30
182+ 
183+       #  if we will submit results, use the benchmark queue so that we will
184+       #  be running on the same system each time
185+       #  - label: "Benchmarks on Julia {{matrix.julia}}"
186+       #    plugins:
187+       #      - JuliaCI/julia#v1:
188+       #          version: "{{matrix.julia}}"
189+       #    env:
190+       #      BENCHMARKS: "true"
191+       #      CODESPEED_PROJECT: "$BUILDKITE_PIPELINE_NAME"
192+       #      CODESPEED_BRANCH: "$BUILDKITE_BRANCH"
193+       #      CODESPEED_COMMIT: "$BUILDKITE_COMMIT"
194+       #      CODESPEED_EXECUTABLE: "Julia {{matrix.julia}}"
195+       #    command: |
196+       #      julia --project -e '
197+       #        using Pkg
198+       #        ENV["CODESPEED_ENVIRONMENT"] = ENV["BUILDKITE_AGENT_NAME"]
199+ 
200+       #        println("--- :julia: Instantiating project")
201+       #        Pkg.resolve()
202+       #        Pkg.instantiate()
203+       #        Pkg.activate("perf")
204+       #        Pkg.resolve()
205+       #        Pkg.instantiate()
206+       #        push!(LOAD_PATH, @__DIR__)
207+ 
208+       #        println("+++ :julia: Benchmarking")
209+       #        include("perf/runbenchmarks.jl")'
210+       #    agents:
211+       #      queue: "benchmark"
212+       #      gpu: "rtx2070"
213+       #      cuda: "*"
214+       #    if: |
215+       #      build.branch =~ /^master$$/ && build.message =~ /\[only benchmarks\]/ ||
216+       #      build.branch =~ /^master$$/ && build.message !~ /\[only/ &&
217+       #        build.message !~ /\[skip benchmarks\]/
218+       #    matrix:
219+       #      setup:
220+       #        julia:
221+       #          - "1.10"
222+       #          - "1.11"
223+       #    timeout_in_minutes: 30
0 commit comments