95 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
require "json"
 | 
						|
 | 
						|
namespace :kokoro do
 | 
						|
  task :load_env_vars do
 | 
						|
    load_env_vars
 | 
						|
  end
 | 
						|
 | 
						|
  task :dry_run do
 | 
						|
    ENV["DRY_RUN"] = "true"
 | 
						|
  end
 | 
						|
 | 
						|
  task :presubmit do
 | 
						|
    Rake::Task["kokoro:run_tests"].invoke
 | 
						|
  end
 | 
						|
 | 
						|
  task :continuous do
 | 
						|
    Rake::Task["kokoro:run_tests"].invoke
 | 
						|
  end
 | 
						|
 | 
						|
  task :nightly do
 | 
						|
    Rake::Task["kokoro:run_tests"].invoke
 | 
						|
  end
 | 
						|
 | 
						|
  task :post do
 | 
						|
    require_relative "rakelib/devsite/link_checker.rb"
 | 
						|
 | 
						|
    link_checker = LinkChecker.new
 | 
						|
    link_checker.run
 | 
						|
    exit link_checker.exit_status
 | 
						|
  end
 | 
						|
 | 
						|
  task :release do
 | 
						|
    require_relative "rakelib/releaser.rb"
 | 
						|
 | 
						|
    load_env_vars if ENV["KOKORO_GFILE_DIR"]
 | 
						|
    package = ENV["PACKAGE"]
 | 
						|
    raise "PACKAGE missing" unless package
 | 
						|
    dry_run = ENV["DRY_RUN"]
 | 
						|
 | 
						|
    if package == "ALL_GENERATED"
 | 
						|
      Dir.glob("generated/google-apis-*") do |gem_dir|
 | 
						|
        gem_name = File.basename(gem_dir)
 | 
						|
        releaser = Releaser.new(gem_name, gem_dir, dry_run: dry_run)
 | 
						|
        if releaser.needs_gem_publish?
 | 
						|
          releaser.publish_gem
 | 
						|
          releaser.publish_docs
 | 
						|
        end
 | 
						|
      end
 | 
						|
    else
 | 
						|
      releaser = Releaser.new(package, package, dry_run: dry_run)
 | 
						|
      releaser.publish_gem if releaser.needs_gem_publish?
 | 
						|
      releaser.publish_docs
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  task :run_tests do
 | 
						|
    gem_directories = ["google-apis-core", "google-apis-generator", "google-api-client"]
 | 
						|
    gem_directories.each do |dir|
 | 
						|
      next unless File.file?(File.join(dir, "Gemfile"))
 | 
						|
      cd dir do
 | 
						|
        Bundler.with_clean_env do
 | 
						|
          sh "bundle install"
 | 
						|
          sh "bundle exec rake spec"
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
def load_env_vars
 | 
						|
  service_account = "#{ENV['KOKORO_GFILE_DIR']}/service-account.json"
 | 
						|
  raise "#{service_account} is not a file" unless File.file? service_account
 | 
						|
  ENV["GOOGLE_APPLICATION_CREDENTIALS"] = service_account
 | 
						|
  filename = "#{ENV['KOKORO_GFILE_DIR']}/ruby_env_vars.json"
 | 
						|
  raise "#{filename} is not a file" unless File.file? filename
 | 
						|
  env_vars = JSON.parse File.read(filename)
 | 
						|
  env_vars.each do |k, v|
 | 
						|
    if ENV[k]
 | 
						|
      puts "Ignoring #{k} because it is already set"
 | 
						|
    else
 | 
						|
      puts "Setting #{k}"
 | 
						|
    end
 | 
						|
    ENV[k] ||= v
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
def header str, token = "#"
 | 
						|
  line_length = str.length + 8
 | 
						|
  puts
 | 
						|
  puts token * line_length
 | 
						|
  puts "#{token * 3} #{str} #{token * 3}"
 | 
						|
  puts token * line_length
 | 
						|
  puts
 | 
						|
end
 |