bumperok 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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