jenkinsutil 1.0.64 → 1.0.65

Sign up to get free protection for your applications and to get access to all the features.
data/jenkins/test.groovy CHANGED
@@ -1,64 +1,56 @@
1
1
  #!groovy
2
2
 
3
- parallel(
4
- 'linux': {
5
- stage('linux test') {
6
- node('docker') {
7
- checkout scm
8
-
9
- def dockerRepository = "${env.JOB_NAME}".toLowerCase()
10
- def dockerTag = "${dockerRepository}:${env.BUILD_NUMBER}"
11
- def dockerContainerName = "${dockerRepository}_${env.BUILD_NUMBER}"
12
-
13
- sh """docker build \
14
- -t ${dockerTag} \
15
- ."""
16
-
17
- sh """docker run \
18
- -e BUILD_NUMBER=${env.BUILD_NUMBER} \
19
- -e DROPBOX_ACCESS_TOKEN=${env.DROPBOX_ACCESS_TOKEN} \
20
- --name ${dockerContainerName} \
21
- ${dockerTag}"""
22
-
23
- sh "docker cp ${dockerContainerName}:/artifacts ${env.WORKSPACE}"
24
- sh "docker stop ${dockerContainerName}"
25
-
26
- step([$class: 'JUnitResultArchiver', testResults: 'artifacts/**/*.xml'])
27
- //step([$class: 'RcovPublisher', reportDir: 'artifacts/coverage/rcov/'])
28
- }
29
- }
30
- },
31
- 'osx': {
32
- stage('osx test') {
33
- node('ruby-osx') {
34
- checkout scm
35
-
36
- sh "bundle install --path='./gems/'"
37
-
38
- sh """DROPBOX_ACCESS_TOKEN=${env.DROPBOX_ACCESS_TOKEN} \
39
- RUBYOPT='-W0' \
40
- CI_CAPTURE=off \
41
- bundle exec \
42
- rake ci:setup:testunit \
43
- test:all \
44
- build"""
45
-
46
- step([$class: 'JUnitResultArchiver', testResults: 'test/reports/**/*.xml'])
47
- }
48
- }
49
- },
50
- 'windows': {
51
- stage('windows test') {
52
- node('ruby-windows') {
53
- checkout scm
54
-
55
- bat 'call bundle install --path=./gems'
56
- bat 'set DROPBOX_ACCESS_TOKEN=${env.DROPBOX_ACCESS_TOKEN}'
57
- bat 'call bundle exec rake ci:setup:testunit test:default build'
58
-
59
- step([$class: 'JUnitResultArchiver', testResults: 'test/reports/**/*.xml'])
60
- //step([$class: 'RcovPublisher', reportDir: 'coverage/rcov/'])
61
- }
62
- }
63
- }
64
- )
3
+ stage('linux test') {
4
+ node('docker') {
5
+ checkout scm
6
+
7
+ def dockerRepository = "${env.JOB_NAME}".toLowerCase()
8
+ def dockerTag = "${dockerRepository}:${env.BUILD_NUMBER}"
9
+ def dockerContainerName = "${dockerRepository}_${env.BUILD_NUMBER}"
10
+
11
+ sh """docker build \
12
+ -t ${dockerTag} \
13
+ ."""
14
+
15
+ sh """docker run \
16
+ -e BUILD_NUMBER=${env.BUILD_NUMBER} \
17
+ -e DROPBOX_ACCESS_TOKEN=${env.DROPBOX_ACCESS_TOKEN} \
18
+ --name ${dockerContainerName} \
19
+ ${dockerTag}"""
20
+
21
+ sh "docker cp ${dockerContainerName}:/artifacts ${env.WORKSPACE}"
22
+ sh "docker stop ${dockerContainerName}"
23
+
24
+ step([$class: 'JUnitResultArchiver', testResults: 'artifacts/**/*.xml'])
25
+ //step([$class: 'RcovPublisher', reportDir: 'artifacts/coverage/rcov/'])
26
+ }
27
+ }
28
+ stage('osx test') {
29
+ node('ruby-osx') {
30
+ checkout scm
31
+
32
+ sh "bundle install --path='./gems/'"
33
+
34
+ sh """DROPBOX_ACCESS_TOKEN=${env.DROPBOX_ACCESS_TOKEN} \
35
+ RUBYOPT='-W0' \
36
+ CI_CAPTURE=off \
37
+ bundle exec \
38
+ rake ci:setup:testunit \
39
+ test:all \
40
+ build"""
41
+
42
+ step([$class: 'JUnitResultArchiver', testResults: 'test/reports/**/*.xml'])
43
+ }
44
+ }
45
+ stage('windows test') {
46
+ node('ruby-windows') {
47
+ checkout scm
48
+
49
+ bat 'call bundle install --path=./gems'
50
+ bat 'set DROPBOX_ACCESS_TOKEN=${env.DROPBOX_ACCESS_TOKEN}'
51
+ bat 'call bundle exec rake SSL_CERT_FILE=%cd%\\certs\\cacert.pem ci:setup:testunit test:default build'
52
+
53
+ step([$class: 'JUnitResultArchiver', testResults: 'test/reports/**/*.xml'])
54
+ //step([$class: 'RcovPublisher', reportDir: 'coverage/rcov/'])
55
+ }
56
+ }
@@ -1,4 +1,4 @@
1
- require 'dropbox_sdk'
1
+ require 'dropbox_api'
2
2
  require 'jenkins_util/logger_util'
3
3
  require 'jenkins_util/version'
4
4
  require 'pathname'
@@ -14,7 +14,7 @@ module DropboxUtil
14
14
  LoggerUtil.fatal('Root must be passed if flatten is false') if !flatten && root.nil?
15
15
  LoggerUtil.fatal('Please set environment variable DROPBOX_ACCESS_TOKEN') if ENV['DROPBOX_ACCESS_TOKEN'].nil?
16
16
 
17
- @dropbox_client ||= DropboxClient.new(ENV['DROPBOX_ACCESS_TOKEN'])
17
+ @dropbox_client ||= DropboxApi::Client.new(ENV['DROPBOX_ACCESS_TOKEN'])
18
18
  @sources = sources
19
19
  @destination = destination
20
20
  @flatten = flatten
@@ -23,14 +23,12 @@ module DropboxUtil
23
23
  upload_files
24
24
  end
25
25
 
26
- def self.delete(dropbox_location)
27
- @dropbox_client ||= DropboxClient.new(JenkinsUtil::DROPBOX_ACCESS_TOKEN)
28
-
29
- LoggerUtil.fatal('Location passed is nil') if dropbox_location.nil?
26
+ def self.delete(file_path)
27
+ retrier(file_path) { @dropbox_client.delete(file_path) } unless @dropbox_client.nil?
30
28
  end
31
29
 
32
30
  def self.upload_files
33
- LoggerUtil.log.debug(@dropbox_client.account_info.inspect) # Check auth
31
+ LoggerUtil.log.debug(@dropbox_client.get_current_account.inspect) # Check auth
34
32
  @sources = [@sources] unless @sources.respond_to?('each')
35
33
 
36
34
  @sources.each do |source|
@@ -40,7 +38,7 @@ module DropboxUtil
40
38
  upload_and_share(file)
41
39
  end
42
40
  end
43
- rescue DropboxAuthError
41
+ rescue DropboxApi::Errors::UploadError
44
42
  LoggerUtil.fatal('User is not authenticated, please verify access token')
45
43
  end
46
44
 
@@ -65,27 +63,43 @@ module DropboxUtil
65
63
  return if File.directory?(file)
66
64
 
67
65
  @uploaded_files ||= []
66
+ retrier(file) do
67
+ dropbox_file = @dropbox_client.upload(dropbox_file_destination(file), IO.read(file))
68
+ LoggerUtil.log.debug("Successfully uploaded #{file}")
68
69
 
69
- retries = 0
70
+ @dropbox_client.share_folder(@destination)
71
+ temp_link = @dropbox_client.get_temporary_link(dropbox_file.path_display)
72
+
73
+ LoggerUtil.log.info("path: #{dropbox_file.path_display}")
74
+ LoggerUtil.log.info("url: #{temp_link.link}")
75
+ end
76
+ end
70
77
 
78
+ def self.download(file_path)
79
+ retrier(file_path) { @dropbox_client.download(file_path) }
80
+ end
81
+
82
+ def self.retrier(file)
83
+ retries = 0
71
84
  begin
72
- dropbox_file = @dropbox_client.put_file(dropbox_file_destination(file), open(file), false)
73
- LoggerUtil.log.debug("Successfully uploaded #{file}")
74
- rescue DropboxError => e
85
+ response = yield
86
+ rescue DropboxApi::Errors::BasicError, DropboxApi::Errors::HttpError => e
75
87
  retries += 1
76
- if retries < 5
77
- LoggerUtil.log.debug("Attempt #{retries} failed. Retrying #{file}")
88
+ if retries <= 5
89
+ # Rate Limit and Namespace Lock Contentions introduced in v2 APIs
90
+ # https://www.dropbox.com/developers/reference/data-ingress-guide
91
+ delay = e.is_a?(DropboxApi::Errors::TooManyWriteOperationsError) ? e.retry_after * retries : retries
92
+ sleep(delay)
93
+ LoggerUtil.log.debug("Attempt #{retries} failed. Retrying #{file} after #{delay} seconds")
94
+
78
95
  retry
79
96
  end
80
97
 
81
- LoggerUtil.log.debug("Exceeded maximum retries. Failed to upload #{file}")
98
+ LoggerUtil.fatal("Exceeded maximum retries. Failed to #{caller_locations[0].label} #{file}")
82
99
  raise e
83
100
  end
84
101
 
85
- share = @dropbox_client.shares(dropbox_file['path'])
86
-
87
- LoggerUtil.log.info("path: #{dropbox_file['path']}")
88
- LoggerUtil.log.info("url: #{share['url']}")
102
+ response unless response.nil?
89
103
  end
90
104
 
91
105
  private_class_method :upload_files, :dropbox_file_destination, :upload_and_share
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jenkinsutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.64
4
+ version: 1.0.65
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett McGinnis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-19 00:00:00.000000000 Z
11
+ date: 2017-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: open4
@@ -51,25 +51,19 @@ dependencies:
51
51
  - !ruby/object:Gem::Version
52
52
  version: 1.1.3
53
53
  - !ruby/object:Gem::Dependency
54
- name: dropbox-sdk
54
+ name: dropbox_api
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '1.6'
60
- - - '='
61
- - !ruby/object:Gem::Version
62
- version: 1.6.5
59
+ version: 0.1.5
63
60
  type: :runtime
64
61
  prerelease: false
65
62
  version_requirements: !ruby/object:Gem::Requirement
66
63
  requirements:
67
64
  - - "~>"
68
65
  - !ruby/object:Gem::Version
69
- version: '1.6'
70
- - - '='
71
- - !ruby/object:Gem::Version
72
- version: 1.6.5
66
+ version: 0.1.5
73
67
  - !ruby/object:Gem::Dependency
74
68
  name: xcodeproj
75
69
  requirement: !ruby/object:Gem::Requirement
@@ -373,6 +367,7 @@ files:
373
367
  - Rakefile
374
368
  - bin/console
375
369
  - bin/setup
370
+ - certs/cacert.pem
376
371
  - exe/jenkinsutil
377
372
  - jenkins/deploy.Jenkinsfile
378
373
  - jenkins/deploy.groovy