@@ -56,6 +56,18 @@ 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+
5971# The build system used by webdriver is layered on top of rake, and we call it
6072# "crazy fun" for no readily apparent reason.
6173
@@ -127,7 +139,7 @@ task all: [
127139 :"selenium-java" ,
128140 '//java/test/org/openqa/selenium/environment:webserver'
129141]
130- task all_zip : [ :'prep -release-zip' ]
142+ task all_zip : [ :'java-release-zip' , :'dotnet -release-zip']
131143task tests : [
132144 '//java/test/org/openqa/selenium/htmlunit:htmlunit' ,
133145 '//java/test/org/openqa/selenium/firefox:test-synthesized' ,
@@ -324,7 +336,28 @@ task ios_driver: [
324336 '//javascript/webdriver/atoms/fragments:get_location_in_view:ios'
325337]
326338
327- task 'prep-release-zip' : [
339+ task 'dotnet-release-zip' : [
340+ '//dotnet/src/webdriver:webdriver-pack' ,
341+ '//dotnet/src/webdriver:webdriver-strongnamed-pack' ,
342+ '//dotnet/src/support:support-pack' ,
343+ '//dotnet/src/support:support-strongnamed-pack' ,
344+ ] do
345+ [
346+ "build/dist/selenium-dotnet-#{ dotnet_version } .zip" ,
347+ "build/dist/selenium-dotnet-strongnamed-#{ dotnet_version } .zip" ,
348+ ] . each do |f |
349+ rm_f ( f ) if File . exists? ( f )
350+ end
351+ mkdir_p 'build/dist'
352+ File . delete
353+
354+ cp "bazel-bin/dotnet/release.zip" , "build/dist/selenium-dotnet-#{ dotnet_version } .zip" , preserve : false
355+ chmod 0666 , "build/dist/selenium-dotnet-#{ dotnet_version } .zip"
356+ cp "bazel-bin/dotnet/strongnamed.zip" , "build/dist/selenium-dotnet-strongnamed-#{ dotnet_version } .zip" , preserve : false
357+ chmod 0666 , "build/dist/selenium-dotnet-strongnamed-#{ dotnet_version } .zip"
358+ end
359+
360+ task 'java-release-zip' : [
328361 '//java/src/org/openqa/selenium:client-zip' ,
329362 '//java/src/org/openqa/selenium/grid:server-zip' ,
330363 '//java/src/org/openqa/selenium/grid:executable-grid' ,
@@ -347,7 +380,7 @@ task 'prep-release-zip': [
347380 chmod 0777 , "build/dist/selenium-server-#{ java_version } .jar"
348381end
349382
350- task 'release-java' : %i[ prep -release-zip publish-maven ]
383+ task 'release-java' : %i[ java -release-zip publish-maven ]
351384
352385def read_m2_user_pass
353386 # First check env vars, then the settings.xml config inside .m2
@@ -376,13 +409,55 @@ def read_m2_user_pass
376409 return [ user , pass ]
377410end
378411
412+ task :prepare_release do
413+ RELEASE_TARGETS = [
414+ '//java/src/org/openqa/selenium:client-zip' ,
415+ '//java/src/org/openqa/selenium/grid:server-zip' ,
416+ '//java/src/org/openqa/selenium/grid:executable-grid' ,
417+ '//dotnet/src/webdriver:webdriver-pack' ,
418+ '//dotnet/src/webdriver:webdriver-strongnamed-pack' ,
419+ '//dotnet/src/support:support-pack' ,
420+ '//dotnet/src/support:support-strongnamed-pack' ,
421+ '//javascript/node/selenium-webdriver:selenium-webdriver' ,
422+ '//py:selenium-wheel' ,
423+ '//py:selenium-sdist' ,
424+ ]
425+
426+ RELEASE_TARGETS . each do |target |
427+ Bazel ::execute ( 'build' , [ '--config' , 'release' ] , target )
428+ end
429+ Bazel ::execute ( 'build' , [ '--stamp' ] , '//rb:selenium-webdriver' )
430+ end
431+
432+ PYPI_ASSETS = [
433+ "bazel-bin/py/selenium-#{ python_version } -py3-none-any.whl" ,
434+ "bazel-bin/py/selenium-#{ python_version } .tar.gz"
435+ ]
436+
437+ task 'publish-pypi' do
438+ PYPI_ASSETS . each do |asset |
439+ sh "python3 -m twine upload #{ asset } "
440+ end
441+ end
442+
379443task 'publish-maven' : JAVA_RELEASE_TARGETS do
380444 creds = read_m2_user_pass
381445 JAVA_RELEASE_TARGETS . each do |p |
382446 Bazel ::execute ( 'run' , [ '--stamp' , '--define' , 'maven_repo=https://oss.sonatype.org/service/local/staging/deploy/maven2' , '--define' , "maven_user=#{ creds [ 0 ] } " , '--define' , "maven_password=#{ creds [ 1 ] } " , '--define' , 'gpg_sign=true' ] , p )
383447 end
384448end
385449
450+ NUGET_RELEASE_ASSETS = [
451+ "./bazel-bin/dotnet/src/webdriver/Selenium.WebDriver.#{ dotnet_version } .nupkg" ,
452+ "./bazel-bin/dotnet/src/webdriver/Selenium.Support.#{ dotnet_version } .nupkg"
453+ ]
454+
455+ task 'publish-nuget' do
456+ NUGET_RELEASE_ASSETS . each do |asset |
457+ sh "dotnet nuget push #{ asset } --api-key #{ ENV [ :NUGET_API_KEY ] } --source https://api.nuget.org/v3/index.json"
458+ end
459+ end
460+
386461task 'publish-maven-snapshot' : JAVA_RELEASE_TARGETS do
387462 creds = read_m2_user_pass
388463 if java_version . end_with? ( '-SNAPSHOT' )
0 commit comments