1
1
require "bundler/gem_tasks"
2
+ require "json"
3
+
4
+ task :release_gem , :tag do |_t , args |
5
+ tag = args [ :tag ]
6
+ raise "You must provide a tag to release." if tag . nil?
7
+
8
+ # Verify the tag format "vVERSION"
9
+ m = tag . match ( /v(?<version>\S *)/ )
10
+ raise "Tag #{ tag } does not match the expected format." if m . nil?
11
+
12
+ version = m [ :version ]
13
+ raise "You must provide a version." if version . nil?
14
+
15
+ api_token = ENV [ "RUBYGEMS_API_TOKEN" ]
16
+
17
+ require "gems"
18
+ if api_token
19
+ ::Gems . configure do |config |
20
+ config . key = api_token
21
+ end
22
+ end
23
+
24
+ Bundler . with_clean_env do
25
+ sh "rm -rf pkg"
26
+ sh "bundle update"
27
+ sh "bundle exec rake build"
28
+ end
29
+
30
+ path_to_be_pushed = "pkg/google-api-client-#{ version } .gem"
31
+ gem_was_published = nil
32
+ if File . file? path_to_be_pushed
33
+ begin
34
+ response = ::Gems . push File . new ( path_to_be_pushed )
35
+ puts response
36
+ raise unless response . include? "Successfully registered gem:"
37
+ gem_was_published = true
38
+ puts "Successfully built and pushed google-api-client for version #{ version } "
39
+ rescue StandardError => e
40
+ gem_was_published = false
41
+ puts "Error while releasing google-api-client version #{ version } : #{ e . message } "
42
+ end
43
+ else
44
+ raise "Cannot build google-api-client for version #{ version } "
45
+ end
46
+
47
+ Rake ::Task [ "kokoro:publish_docs" ] . invoke if gem_was_published
48
+ end
2
49
3
50
task default : :spec
4
51
@@ -22,13 +69,35 @@ namespace :kokoro do
22
69
task :nightly do
23
70
Rake ::Task [ "spec" ] . invoke
24
71
end
72
+
73
+ task :post do
74
+ require_relative "rakelib/link_checker.rb"
75
+
76
+ link_checker = LinkChecker . new
77
+ link_checker . run
78
+ exit link_checker . exit_status
79
+ end
80
+
81
+ task :release do
82
+ # Until code generation process is updated and release-please is set up, just publish docs
83
+ require_relative "rakelib/devsite/devsite_builder.rb"
84
+
85
+ DevsiteBuilder . new . publish_if_missing ENV [ "DOCS_BUILD_TAG" ]
86
+ end
87
+
88
+ desc "Publish docs for the latest git tag"
89
+ task :publish_docs do
90
+ require_relative "rakelib/devsite/devsite_builder.rb"
91
+
92
+ DevsiteBuilder . new . publish ENV [ "DOCS_BUILD_TAG" ]
93
+ end
25
94
end
26
95
27
96
def header str , token = "#"
28
97
line_length = str . length + 8
29
- puts ""
98
+ puts
30
99
puts token * line_length
31
100
puts "#{ token * 3 } #{ str } #{ token * 3 } "
32
101
puts token * line_length
33
- puts ""
102
+ puts
34
103
end
0 commit comments