@@ -56,18 +56,6 @@ def java_version
56
56
end
57
57
end
58
58
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
-
71
59
# The build system used by webdriver is layered on top of rake, and we call it
72
60
# "crazy fun" for no readily apparent reason.
73
61
@@ -336,45 +324,22 @@ task ios_driver: [
336
324
'//javascript/webdriver/atoms/fragments:get_location_in_view:ios'
337
325
]
338
326
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' )
370
331
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" )
378
343
end
379
344
380
345
task 'release-java' : %i[ java-release-zip publish-maven ]
@@ -406,46 +371,27 @@ def read_m2_user_pass
406
371
return [ user , pass ]
407
372
end
408
373
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
+ ]
444
389
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 )
448
392
end
393
+ # Ruby cannot be executed with config remote or release
394
+ Bazel . execute ( 'build' , [ '--stamp' ] , '//rb:selenium-webdriver' )
449
395
end
450
396
451
397
task 'publish-maven' : JAVA_RELEASE_TARGETS do
@@ -558,46 +504,180 @@ namespace :node do
558
504
end
559
505
end
560
506
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' )
563
511
end
564
512
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' )
569
515
end
570
516
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' )
575
520
end
576
521
577
- task :docs do
578
- sh 'node javascript/node/gendocs.js'
579
- end
522
+ desc 'Release Node npm package'
523
+ task deploy : :release
580
524
end
581
525
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
582
531
namespace :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'
583
548
task :update do
584
549
Bazel . execute ( 'build' , [ ] , '//py:selenium' )
585
550
586
- FileUtils . rm_r ( " py/selenium/webdriver/common/devtools/" , force : true )
551
+ FileUtils . rm_r ( ' py/selenium/webdriver/common/devtools/' , force : true )
587
552
FileUtils . cp_r ( 'bazel-bin/py/selenium/webdriver/.' , 'py/selenium/webdriver' , remove_destination : true )
588
553
end
589
554
590
- bazel :unit do
591
- Bazel . execute ( 'test' , [ ] , '//py:unit' )
592
- end
593
-
555
+ desc 'Generate Python documentation'
594
556
task docs : :update do
595
557
sh 'tox -c py/tox.ini -e docs' , verbose : true
596
558
end
597
559
560
+ desc 'Install Python wheel locally'
598
561
task :install do
599
562
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'
601
681
end
602
682
end
603
683
0 commit comments