@@ -56,18 +56,6 @@ def java_version
5656 end
5757end
5858
59- def dotnet_version
60- File . foreach ( 'dotnet/selenium-dotnet-version.bzl' ) do |line |
61- return line . split ( '=' ) . last . strip . tr ( '"' , '' ) if line . include? ( 'SE_VERSION' )
62- end
63- end
64-
65- def python_version
66- File . foreach ( 'py/BUILD.bazel' ) do |line |
67- return line . split ( '=' ) . last . strip . tr ( '"' , '' ) if line . include? ( 'SE_VERSION' )
68- end
69- end
70-
7159# The build system used by webdriver is layered on top of rake, and we call it
7260# "crazy fun" for no readily apparent reason.
7361
@@ -336,45 +324,22 @@ task ios_driver: [
336324 '//javascript/webdriver/atoms/fragments:get_location_in_view:ios'
337325]
338326
339- task 'dotnet-release-zip' : [
340- '//dotnet:all'
341- ] do
342- [
343- "build/dist/selenium-dotnet-#{ dotnet_version } .zip" ,
344- "build/dist/selenium-dotnet-strongnamed-#{ dotnet_version } .zip" ,
345- ] . each do |f |
346- rm_f ( f ) if File . exists? ( f )
347- end
348- mkdir_p 'build/dist'
349- File . delete
350-
351- cp "bazel-bin/dotnet/release.zip" , "build/dist/selenium-dotnet-#{ dotnet_version } .zip" , preserve : false
352- chmod 0666 , "build/dist/selenium-dotnet-#{ dotnet_version } .zip"
353- cp "bazel-bin/dotnet/strongnamed.zip" , "build/dist/selenium-dotnet-strongnamed-#{ dotnet_version } .zip" , preserve : false
354- chmod 0666 , "build/dist/selenium-dotnet-strongnamed-#{ dotnet_version } .zip"
355- end
356-
357- task 'java-release-zip' : [
358- '//java/src/org/openqa/selenium:client-zip' ,
359- '//java/src/org/openqa/selenium/grid:server-zip' ,
360- '//java/src/org/openqa/selenium/grid:executable-grid' ,
361- ] do
362- [
363- "build/dist/selenium-server-#{ java_version } .zip" ,
364- "build/dist/selenium-java-#{ java_version } .zip" ,
365- "build/dist/selenium-server-#{ java_version } .jar"
366- ] . each do |f |
367- rm_f ( f ) if File . exists? ( f )
368- end
369-
327+ task :'java-release-zip' do
328+ Bazel . execute ( 'build' , [ '--stamp' ] , '//java/src/org/openqa/selenium:client-zip' )
329+ Bazel . execute ( 'build' , [ '--stamp' ] , '//java/src/org/openqa/selenium/grid:server-zip' )
330+ Bazel . execute ( 'build' , [ '--stamp' ] , '//java/src/org/openqa/selenium/grid:executable-grid' )
370331 mkdir_p 'build/dist'
371- File . delete
372- cp "bazel-bin/java/src/org/openqa/selenium/grid/server-zip.zip" , "build/dist/selenium-server-#{ java_version } .zip" , preserve : false
373- chmod 0666 , "build/dist/selenium-server-#{ java_version } .zip"
374- cp "bazel-bin/java/src/org/openqa/selenium/client-zip.zip" , "build/dist/selenium-java-#{ java_version } .zip" , preserve : false
375- chmod 0666 , "build/dist/selenium-java-#{ java_version } .zip"
376- cp "bazel-bin/java/src/org/openqa/selenium/grid/selenium" , "build/dist/selenium-server-#{ java_version } .jar" , preserve : false
377- chmod 0777 , "build/dist/selenium-server-#{ java_version } .jar"
332+ FileUtils . rm_f ( 'build/dist/**/*.{server,java}*' , force : true )
333+
334+ FileUtils . copy ( 'bazel-bin/java/src/org/openqa/selenium/grid/server-zip.zip' ,
335+ "build/dist/selenium-server-#{ java_version } .zip" )
336+ FileUtils . chmod ( 666 , "build/dist/selenium-server-#{ java_version } .zip" )
337+ FileUtils . copy ( 'bazel-bin/java/src/org/openqa/selenium/client-zip.zip' ,
338+ "build/dist/selenium-java-#{ java_version } .zip" )
339+ FileUtils . chmod ( 666 , "build/dist/selenium-java-#{ java_version } .zip" )
340+ FileUtils . copy ( 'bazel-bin/java/src/org/openqa/selenium/grid/selenium' ,
341+ "build/dist/selenium-server-#{ java_version } .jar" )
342+ FileUtils . chmod ( 777 , "build/dist/selenium-server-#{ java_version } .jar" )
378343end
379344
380345task 'release-java' : %i[ java-release-zip publish-maven ]
@@ -406,46 +371,27 @@ def read_m2_user_pass
406371 return [ user , pass ]
407372end
408373
409- task :prepare_release do
410- RELEASE_TARGETS = [
411- '//java/src/org/openqa/selenium:client-zip' ,
412- '//java/src/org/openqa/selenium/grid:server-zip' ,
413- '//java/src/org/openqa/selenium/grid:executable-grid' ,
414- '//dotnet/src/webdriver:webdriver-pack' ,
415- '//dotnet/src/webdriver:webdriver-strongnamed-pack' ,
416- '//dotnet/src/support:support-pack' ,
417- '//dotnet/src/support:support-strongnamed-pack' ,
418- '//javascript/node/selenium-webdriver:selenium-webdriver' ,
419- '//py:selenium-wheel' ,
420- '//py:selenium-sdist' ,
421- ]
422-
423- RELEASE_TARGETS . each do |target |
424- Bazel ::execute ( 'build' , [ '--config' , 'release' ] , target )
425- end
426- Bazel ::execute ( 'build' , [ '--stamp' ] , '//rb:selenium-webdriver' )
427- end
428-
429- PYPI_ASSETS = [
430- "bazel-bin/py/selenium-#{ python_version } -py3-none-any.whl" ,
431- "bazel-bin/py/selenium-#{ python_version } .tar.gz"
432- ]
433-
434- task 'publish-pypi' do
435- PYPI_ASSETS . each do |asset |
436- sh "python3 -m twine upload #{ asset } "
437- end
438- end
439-
440- NUGET_RELEASE_ASSETS = [
441- "./bazel-bin/dotnet/src/webdriver/Selenium.WebDriver.#{ dotnet_version } .nupkg" ,
442- "./bazel-bin/dotnet/src/support/Selenium.Support.#{ dotnet_version } .nupkg"
443- ]
374+ task :prepare_release , [ :args ] do |_task , arguments |
375+ args = arguments [ :args ] ? [ arguments [ :args ] ] : %w[ --config release ]
376+
377+ RELEASE_TARGETS = [
378+ '//java/src/org/openqa/selenium:client-zip' ,
379+ '//java/src/org/openqa/selenium/grid:server-zip' ,
380+ '//java/src/org/openqa/selenium/grid:executable-grid' ,
381+ '//dotnet/src/webdriver:webdriver-pack' ,
382+ '//dotnet/src/webdriver:webdriver-strongnamed-pack' ,
383+ '//dotnet/src/support:support-pack' ,
384+ '//dotnet/src/support:support-strongnamed-pack' ,
385+ '//javascript/node/selenium-webdriver:selenium-webdriver' ,
386+ '//py:selenium-wheel' ,
387+ '//py:selenium-sdist'
388+ ]
444389
445- task 'publish-nuget' : '//dotnet:all' do
446- NUGET_RELEASE_ASSETS . each do |asset |
447- sh "dotnet nuget push #{ asset } --api-key #{ ENV [ 'NUGET_API_KEY' ] } --source https://api.nuget.org/v3/index.json"
390+ RELEASE_TARGETS . each do |target |
391+ Bazel . execute ( 'build' , args , target )
448392 end
393+ # Ruby cannot be executed with config remote or release
394+ Bazel . execute ( 'build' , [ '--stamp' ] , '//rb:selenium-webdriver' )
449395end
450396
451397task 'publish-maven' : JAVA_RELEASE_TARGETS do
@@ -558,46 +504,180 @@ namespace :node do
558504 end
559505 end
560506
561- task :build do
562- sh 'bazel build //javascript/node/selenium-webdriver'
507+ desc 'Build Node npm package'
508+ task :build , [ :args ] do |_task , arguments |
509+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ ]
510+ Bazel . execute ( 'build' , args , '//javascript/node/selenium-webdriver' )
563511 end
564512
565- task 'dry-run' : [
566- 'node:build'
567- ] do
568- sh 'bazel run javascript/node/selenium-webdriver:selenium-webdriver.pack'
513+ task :'dry-run' do
514+ Bazel . execute ( 'run' , [ '--stamp' ] , '//javascript/node/selenium-webdriver:selenium-webdriver.pack' )
569515 end
570516
571- task deploy : [
572- 'node:build'
573- ] do
574- sh 'bazel run javascript/node/selenium-webdriver:selenium-webdriver.publish'
517+ desc 'Release Node npm package'
518+ task :release do
519+ Bazel . execute ( 'run' , [ '--stamp' ] , '//javascript/node/selenium-webdriver:selenium-webdriver.publish' )
575520 end
576521
577- task :docs do
578- sh 'node javascript/node/gendocs.js'
579- end
522+ desc 'Release Node npm package'
523+ task deploy : :release
580524end
581525
526+ def py_version
527+ File . foreach ( 'py/BUILD.bazel' ) do |line |
528+ return line . split ( '=' ) . last . strip . tr ( '"' , '' ) if line . include? ( 'SE_VERSION' )
529+ end
530+ end
582531namespace :py do
532+ desc 'Build Python wheel and sdist with optional arguments'
533+ task :build , [ :args ] do |_task , arguments |
534+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ ]
535+ Bazel . execute ( 'build' , args , '//py:selenium-wheel' )
536+ Bazel . execute ( 'build' , args , '//py:selenium-sdist' )
537+ end
538+
539+ desc 'Release Python wheel and sdist to pypi'
540+ task :release , [ :args ] do |_task , arguments |
541+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ '--stamp' ]
542+ Rake ::Task [ 'py:build' ] . invoke ( args )
543+ sh "python3 -m twine upload `bazel-bin/py/selenium`-#{ py_version } -py3-none-any.whl"
544+ sh "python3 -m twine upload bazel-bin/py/selenium-#{ py_version } .tar.gz"
545+ end
546+
547+ desc 'Update generated Python files for local development'
583548 task :update do
584549 Bazel . execute ( 'build' , [ ] , '//py:selenium' )
585550
586- FileUtils . rm_r ( " py/selenium/webdriver/common/devtools/" , force : true )
551+ FileUtils . rm_r ( ' py/selenium/webdriver/common/devtools/' , force : true )
587552 FileUtils . cp_r ( 'bazel-bin/py/selenium/webdriver/.' , 'py/selenium/webdriver' , remove_destination : true )
588553 end
589554
590- bazel :unit do
591- Bazel . execute ( 'test' , [ ] , '//py:unit' )
592- end
593-
555+ desc 'Generate Python documentation'
594556 task docs : :update do
595557 sh 'tox -c py/tox.ini -e docs' , verbose : true
596558 end
597559
560+ desc 'Install Python wheel locally'
598561 task :install do
599562 Bazel . execute ( 'build' , [ ] , '//py:selenium-wheel' )
600- sh 'pip install bazel-bin/py/selenium-*.whl'
563+ begin
564+ sh 'pip install bazel-bin/py/selenium-*.whl'
565+ rescue
566+ puts 'Ensure that Python and pip are installed on your system'
567+ raise
568+ end
569+ end
570+ end
571+
572+ namespace :rb do
573+ desc 'Generate ruby gems'
574+ task :build , [ :args ] do |_task , arguments |
575+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ ]
576+ Bazel . execute ( 'build' , args , '//rb:selenium-webdriver' )
577+ Bazel . execute ( 'build' , args , '//rb:selenium-devtools' )
578+ end
579+
580+ desc 'Update generated Ruby files for local development'
581+ task :update do
582+ Bazel . execute ( 'build' , [ ] , '@bundle//:bundle' )
583+ Rake ::Task [ 'rb:build' ] . invoke
584+ Rake ::Task [ 'grid' ] . invoke
585+ end
586+
587+ desc 'Push ruby gems to rubygems'
588+ task :release , [ :args ] do |_task , arguments |
589+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ '--stamp' ]
590+ Bazel . execute ( 'run' , args , '//rb:selenium-webdriver' )
591+ Bazel . execute ( 'run' , args , '//rb:selenium-devtools' )
592+ end
593+ end
594+
595+ namespace :dotnet do
596+ def version
597+ File . foreach ( 'dotnet/selenium-dotnet-version.bzl' ) do |line |
598+ return line . split ( '=' ) . last . strip . tr ( '"' , '' ) if line . include? ( 'SE_VERSION' )
599+ end
600+ end
601+
602+ def dotnet_version
603+ File . foreach ( 'dotnet/selenium-dotnet-version.bzl' ) do |line |
604+ return line . split ( '=' ) . last . strip . tr ( '"' , '' ) if line . include? ( 'SE_VERSION' )
605+ end
606+ end
607+ namespace :dotnet do
608+ desc 'Build nupkg files'
609+ task :build , [ :args ] do |_task , arguments |
610+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ ]
611+ Bazel . execute ( 'build' , args , '//dotnet:all' )
612+ end
613+
614+ desc 'Create zipped assets for .NET for uploading to GitHub'
615+ task :zip_assets , [ :args ] do |_task , arguments |
616+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ '--stamp' ]
617+ Rake ::Task [ 'dotnet:build' ] . invoke ( args )
618+ mkdir_p 'build/dist'
619+ FileUtils . rm_f ( 'build/dist/*dotnet*' , force : true )
620+
621+ FileUtils . copy ( 'bazel-bin/dotnet/release.zip' , "build/dist/selenium-dotnet-#{ dotnet_version } .zip" )
622+ FileUtils . chmod ( 666 , "build/dist/selenium-dotnet-#{ dotnet_version } .zip" )
623+ FileUtils . copy ( 'bazel-bin/dotnet/strongnamed.zip' , "build/dist/selenium-dotnet-strongnamed-#{ dotnet_version } .zip" )
624+ FileUtils . chmod ( 666 , "build/dist/selenium-dotnet-strongnamed-#{ dotnet_version } .zip" )
625+ end
626+
627+ desc 'Upload nupkg files to Nuget'
628+ task :release , [ :args ] do |_task , arguments |
629+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ '--stamp' ]
630+ Rake ::Task [ 'dotnet:build' ] . invoke ( args )
631+ Rake ::Task [ 'dotnet:zip_assets' ] . invoke ( args )
632+
633+ [ "./bazel-bin/dotnet/src/webdriver/Selenium.WebDriver.#{ dotnet_version } .nupkg" ,
634+ "./bazel-bin/dotnet/src/support/Selenium.Support.#{ dotnet_version } .nupkg" ] . each do |asset |
635+ sh "dotnet nuget push #{ asset } --api-key #{ ENV . fetch ( 'NUGET_API_KEY' , nil ) } --source https://api.nuget.org/v3/index.json"
636+ end
637+ end
638+ end
639+
640+ namespace :java do
641+ desc 'Build Java Client Jars'
642+ task :build , [ :args ] do |_task , arguments |
643+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ ]
644+ Bazel . execute ( 'build' , args , '//java/src/org/openqa/selenium:client-combined' )
645+ end
646+
647+ desc 'Build Grid Jar'
648+ task :grid , [ :args ] do |_task , arguments |
649+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ ]
650+ Bazel . execute ( 'build' , args , '//java/src/org/openqa/selenium/grid:grid' )
651+ end
652+
653+ desc 'Package Java bindings and grid into releasable packages'
654+ task :package , [ :args ] do |_task , arguments |
655+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ ]
656+ Rake ::Task [ 'java:build' ] . invoke ( args )
657+ Rake ::Task [ 'java-release-zip' ] . invoke
658+ end
659+
660+ desc 'Deploy all jars to Maven'
661+ task :release , [ :args ] do |_task , arguments |
662+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ '--stamp' ]
663+ Rake ::Task [ 'java:package' ] . invoke ( args )
664+ Rake ::Task [ 'publish-maven' ] . invoke
665+ end
666+
667+ desc 'Install jars to local m2 directory'
668+ task install : :'maven-install'
669+ end
670+
671+ namespace :rust do
672+ desc 'Build Selenium Manager'
673+ task :build , [ :args ] do |_task , arguments |
674+ args = arguments [ :args ] ? [ arguments [ :args ] ] : [ ]
675+ Bazel . execute ( 'build' , args , '//rust:selenium-manager' )
676+ end
677+
678+ desc 'Update the rust lock files'
679+ task :update do
680+ sh 'CARGO_BAZEL_REPIN=true bazel sync --only=crates'
601681 end
602682end
603683
0 commit comments