Skip to content

Commit 48d426b

Browse files
committed
[build] verify release targets are correct during build
1 parent aff69c0 commit 48d426b

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

Rakefile

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ task '//java/test/org/openqa/selenium/environment/webserver:webserver:uber' => [
9292
'//java/test/org/openqa/selenium/environment:webserver'
9393
]
9494

95-
# Java targets required for release. These should all be java_export targets.
96-
# Generated from: bazel query 'kind(maven_publish, set(//java/... //third_party/...))' | sort
95+
# use #java_release_targets to access this list
9796
JAVA_RELEASE_TARGETS = %w[
9897
//java/src/org/openqa/selenium/chrome:chrome.publish
9998
//java/src/org/openqa/selenium/chromium:chromium.publish
@@ -119,6 +118,34 @@ JAVA_RELEASE_TARGETS = %w[
119118
//java/src/org/openqa/selenium:core.publish
120119
].freeze
121120

121+
def java_release_targets
122+
@targets_verified ||= verify_java_release_targets
123+
124+
JAVA_RELEASE_TARGETS
125+
end
126+
127+
def verify_java_release_targets
128+
query = 'kind(maven_publish, set(//java/... //third_party/...))'
129+
current_targets = []
130+
131+
Bazel.execute('query', [], query) do |output|
132+
current_targets = output.lines.map(&:strip).reject(&:empty?)
133+
end
134+
135+
missing_targets = current_targets - JAVA_RELEASE_TARGETS
136+
extra_targets = JAVA_RELEASE_TARGETS - current_targets
137+
138+
return if missing_targets.empty? && extra_targets.empty?
139+
140+
error_message = 'Java release targets are out of sync with Bazel query results.'
141+
142+
error_message += "\nMissing targets: #{missing_targets.join(', ')}" unless missing_targets.empty?
143+
144+
error_message += "\nObsolete targets: #{extra_targets.join(', ')}" unless extra_targets.empty?
145+
146+
raise error_message
147+
end
148+
122149
# Notice that because we're using rake, anything you can do in a normal rake
123150
# build can also be done here. For example, here we set the default task
124151
task default: [:grid]
@@ -363,7 +390,7 @@ end
363390

364391
desc 'Install jars to local m2 directory'
365392
task :'maven-install' do
366-
JAVA_RELEASE_TARGETS.each do |p|
393+
java_release_targets.each do |p|
367394
Bazel.execute('run',
368395
['--stamp',
369396
'--define',
@@ -825,7 +852,7 @@ namespace :java do
825852
desc 'Build Java Client Jars'
826853
task :build do |_task, arguments|
827854
args = arguments.to_a.compact
828-
JAVA_RELEASE_TARGETS.each { |target| Bazel.execute('build', args, target) }
855+
java_release_targets.each { |target| Bazel.execute('build', args, target) }
829856
end
830857

831858
desc 'Build Grid Server'
@@ -872,7 +899,7 @@ namespace :java do
872899
Rake::Task['java:package'].invoke('--config=release')
873900
Rake::Task['java:build'].invoke('--config=release')
874901
# Because we want to `run` things, we can't use the `release` config
875-
JAVA_RELEASE_TARGETS.each { |target| Bazel.execute('run', ['--config=release'], target) }
902+
java_release_targets.each { |target| Bazel.execute('run', ['--config=release'], target) }
876903
end
877904

878905
desc 'Install jars to local m2 directory'

0 commit comments

Comments
 (0)