jenkinsutil 1.0.64 → 1.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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