bumperok 0.0.7 → 0.0.8

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -0
  3. data/bin/bumper +20 -0
  4. data/lib/bumper.rb +37 -1
  5. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3302f875a41afa1a6c2fefb262bb245eebf074ce
4
- data.tar.gz: b28da6abfbd4916ba63a9a0ea70d0bad8609270f
3
+ metadata.gz: 83feb89e71b699deb3abb1c4f9c3cac01b200283
4
+ data.tar.gz: d9052d093bd51d89cd932da8538da9491530b9c3
5
5
  SHA512:
6
- metadata.gz: ca4852c7e486634267e4e8a5c13e17cd6dfacb25e049532a63cf79ddaf0b46aed7f7428634884b3edb7814e440a5a316dde2fe4914823fecb318e3e107d47dd2
7
- data.tar.gz: 4eb9b94a81d75936cc8f50f28f2d3615fe8c70e743d3a772e4883c0c6eb83c2325fc49a057f540e45fb58babbd397d15455d3423099a56923f1364c7b8c56def
6
+ metadata.gz: b5f1adfed5f9ff9d30720f2eec8baf16c7c53d82ff63f1778654e5a019211cdd86d205c877dd142787e92b6c6f38d146d282c278618ec8fd06e3cd3b01bbbd9e
7
+ data.tar.gz: e1ac64360f42f7221b8b2202a8ebce40c5f48c25aaad551989e1e34b033a6e7040540810c97961de7a139a2a971c27275213c70b33728c4caf99a3614d1be429
data/Rakefile CHANGED
@@ -17,6 +17,7 @@ Hoe.spec "bumperok" do
17
17
  dependency 'git', '~> 1.2'
18
18
  dependency 'git-ssh-wrapper', '~> 0.2'
19
19
  dependency 'jenkins_api_client', '~> 0.2'
20
+ dependency 'gitlab', '~> 3.4'
20
21
  end
21
22
 
22
23
  # vim: syntax=ruby
data/bin/bumper CHANGED
@@ -33,6 +33,18 @@ OptionParser.new do |opts|
33
33
  options.git_submodule = m
34
34
  end
35
35
 
36
+ opts.on("-iPROJECT_ID", "--project-id=PROJECT_ID", "Project id for gitlab") do |p|
37
+ options.project_id = p
38
+ end
39
+
40
+ opts.on("-kKEY", "--key=KEY", "User key for gitlab") do |k|
41
+ options.key = k
42
+ end
43
+
44
+ opts.on("-eENDPOINT", "--endpoint=ENDPOINT", "Endpoint url for gitlab") do |e|
45
+ options.endpoint = e
46
+ end
47
+
36
48
  end.parse!
37
49
 
38
50
  case options.cmd
@@ -50,6 +62,14 @@ when 'submodule'
50
62
  if options.git_url and options.git_submodule
51
63
  Bumper.submodule_update_version("#{options.git_submodule[0].upcase}#{options.git_submodule[1..-1]}", options.git_submodule, options.git_url)
52
64
  end
65
+ when 'merge'
66
+ if options.git_url and options.git_submodule and options.project_id
67
+ if options.endpoint
68
+ Bumper.create_merge_request_from_submodule(options.git_submodule, options.git_url, options.project_id, options.key, options.endpoint)
69
+ else
70
+ Bumper.create_merge_request_from_submodule(options.git_submodule, options.git_url, options.project_id, options.key)
71
+ end
72
+ end
53
73
  else
54
74
  raise "#{options.cmd} is unsupported command"
55
75
  end
@@ -2,9 +2,10 @@ require 'git'
2
2
  require 'logger'
3
3
  require 'git-ssh-wrapper'
4
4
  require 'jenkins_api_client'
5
+ require 'gitlab'
5
6
 
6
7
  class Bumper
7
- VERSION = "0.0.7"
8
+ VERSION = "0.0.8"
8
9
 
9
10
  def self.tag git_path, tag_name
10
11
  wrapper = GitSSHWrapper.with_wrapper(private_key_path: '~/.ssh/bumber_at_sibext', log_level: 'ERROR') do |w|
@@ -37,11 +38,46 @@ class Bumper
37
38
  `#{git(project_path)} checkout master`
38
39
  `#{git(project_path)} branch -D UpdateFrom#{display}`
39
40
  end
41
+ end
40
42
 
43
+ def self.create_merge_request_from_submodule submodule_name, git, gitlab_project_id, gitlab_key, gitlab_url='http://src.sibext.com/api/v3'
44
+ Gitlab.endpoint=gitlab_url
45
+ Gitlab.private_token=gitlab_key
46
+ begin
47
+ merge = Gitlab.merge_requests(gitlab_project_id).sort { |a,b| a.created_at <=> b.created_at }.last
48
+ rescue Gitlab::Error::NotFound => e
49
+ merge = nil
50
+ end
51
+ if merge
52
+ submodule_update_feature submodule_name, git, merge.source_branch
53
+ Gitlab.create_merge_request project_id, merge.title, source_branch: merge.source_branch, target_branch: 'master'
54
+ end
41
55
  end
42
56
 
57
+ private
58
+
43
59
  def self.git git_path
44
60
  "git '--git-dir=#{git_path}/.git' '--work-tree=#{git_path}'"
45
61
  end
46
62
 
63
+ def self.bumper_ssh &block
64
+ GitSSHWrapper.with_wrapper(private_key_path: '~/.ssh/bumber_at_sibext', log_level: 'ERROR', block)
65
+ end
66
+
67
+ def self.submodule_update_feature name, git, branch
68
+ project_path = 'git_with_submodule'
69
+ bumper_ssh do |w|
70
+ w.set_env
71
+ `rm -Rf #{project_path}`
72
+ `git clone --recursive #{git} #{project_path}`
73
+ `#{git(project_path)} checkout -b #{branch}`
74
+ `cd #{project_path} && git submodule update --remote #{name}`
75
+ `#{git(project_path)} commit -am'New updates from #{name}'`
76
+ `#{git(project_path)} push --force origin #{branch}`
77
+ `#{git(project_path)} checkout master`
78
+ `#{git(project_path)} branch -D #{branch}`
79
+ end
80
+ end
81
+
82
+
47
83
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bumperok
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikolay Moskvin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-12 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: gitlab
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.4'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.4'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rdoc
57
71
  requirement: !ruby/object:Gem::Requirement