Commit ecae936d344b7d29f1898f81ac283d444c086f0d
Exists in
spb-stable
and in
3 other branches
Merge branch 'batch_key_import' into 'master'
Batch Key Import
Showing
4 changed files
with
26 additions
and
6 deletions
Show diff stats
CHANGELOG
| ... | ... | @@ -21,7 +21,7 @@ v 6.7.0 |
| 21 | 21 | - Reuse the GitLab LDAP connection within each request |
| 22 | 22 | - Changed markdown new line behaviour to conform to markdown standards |
| 23 | 23 | - Fix global search |
| 24 | - | |
| 24 | + - Faster authorized_keys rebuilding in `rake gitlab:shell:setup` (requires gitlab-shell 1.8.5) | |
| 25 | 25 | |
| 26 | 26 | v 6.6.2 |
| 27 | 27 | - Fix 500 error on branch/tag create or remove via UI | ... | ... |
lib/gitlab/backend/shell.rb
| ... | ... | @@ -2,6 +2,12 @@ module Gitlab |
| 2 | 2 | class Shell |
| 3 | 3 | class AccessDenied < StandardError; end |
| 4 | 4 | |
| 5 | + class KeyAdder < Struct.new(:io) | |
| 6 | + def add_key(id, key) | |
| 7 | + io.puts("#{id}\t#{key.strip}") | |
| 8 | + end | |
| 9 | + end | |
| 10 | + | |
| 5 | 11 | # Init new repository |
| 6 | 12 | # |
| 7 | 13 | # name - project path with namespace |
| ... | ... | @@ -130,6 +136,16 @@ module Gitlab |
| 130 | 136 | system "#{gitlab_shell_path}/bin/gitlab-keys", "add-key", key_id, key_content |
| 131 | 137 | end |
| 132 | 138 | |
| 139 | + # Batch-add keys to authorized_keys | |
| 140 | + # | |
| 141 | + # Ex. | |
| 142 | + # batch_add_keys { |adder| adder.add_key("key-42", "sha-rsa ...") } | |
| 143 | + def batch_add_keys(&block) | |
| 144 | + IO.popen(%W(#{gitlab_shell_path}/bin/gitlab-keys batch-add-keys), 'w') do |io| | |
| 145 | + block.call(KeyAdder.new(io)) | |
| 146 | + end | |
| 147 | + end | |
| 148 | + | |
| 133 | 149 | # Remove ssh key from gitlab shell |
| 134 | 150 | # |
| 135 | 151 | # Ex. | ... | ... |
lib/tasks/gitlab/check.rake
| ... | ... | @@ -727,7 +727,7 @@ namespace :gitlab do |
| 727 | 727 | end |
| 728 | 728 | |
| 729 | 729 | def check_gitlab_shell |
| 730 | - required_version = Gitlab::VersionInfo.new(1, 8, 4) | |
| 730 | + required_version = Gitlab::VersionInfo.new(1, 8, 5) | |
| 731 | 731 | current_version = Gitlab::VersionInfo.parse(gitlab_shell_version) |
| 732 | 732 | |
| 733 | 733 | print "GitLab Shell version >= #{required_version} ? ... " | ... | ... |
lib/tasks/gitlab/shell.rake
| ... | ... | @@ -34,14 +34,18 @@ namespace :gitlab do |
| 34 | 34 | |
| 35 | 35 | Gitlab::Shell.new.remove_all_keys |
| 36 | 36 | |
| 37 | - Key.find_each(batch_size: 1000) do |key| | |
| 38 | - if Gitlab::Shell.new.add_key(key.shell_id, key.key) | |
| 37 | + Gitlab::Shell.new.batch_add_keys do |adder| | |
| 38 | + Key.find_each(batch_size: 1000) do |key| | |
| 39 | + adder.add_key(key.shell_id, key.key) | |
| 39 | 40 | print '.' |
| 40 | - else | |
| 41 | - print 'F' | |
| 42 | 41 | end |
| 43 | 42 | end |
| 44 | 43 | |
| 44 | + unless $?.success? | |
| 45 | + puts "Failed to add keys...".red | |
| 46 | + exit 1 | |
| 47 | + end | |
| 48 | + | |
| 45 | 49 | rescue Gitlab::TaskAbortedByUserError |
| 46 | 50 | puts "Quitting...".red |
| 47 | 51 | exit 1 | ... | ... |