Delete deploy key from Bitbucket after importing.
This commit is contained in:
parent
f2b37de54b
commit
6979b3afd5
|
|
@ -6,27 +6,27 @@ class RepositoryImportWorker
|
|||
|
||||
def perform(project_id)
|
||||
project = Project.find(project_id)
|
||||
result = gitlab_shell.send(:import_repository,
|
||||
|
||||
import_result = gitlab_shell.send(:import_repository,
|
||||
project.path_with_namespace,
|
||||
project.import_url)
|
||||
return project.import_fail unless import_result
|
||||
|
||||
result_of_data_import = if project.import_type == 'github'
|
||||
Gitlab::GithubImport::Importer.new(project).execute
|
||||
elsif project.import_type == 'gitlab'
|
||||
Gitlab::GitlabImport::Importer.new(project).execute
|
||||
elsif project.import_type == 'bitbucket'
|
||||
Gitlab::BitbucketImport::Importer.new(project).execute
|
||||
else
|
||||
true
|
||||
end
|
||||
data_import_result = if project.import_type == 'github'
|
||||
Gitlab::GithubImport::Importer.new(project).execute
|
||||
elsif project.import_type == 'gitlab'
|
||||
Gitlab::GitlabImport::Importer.new(project).execute
|
||||
elsif project.import_type == 'bitbucket'
|
||||
Gitlab::BitbucketImport::Importer.new(project).execute
|
||||
else
|
||||
true
|
||||
end
|
||||
return project.import_fail unless data_import_result
|
||||
|
||||
if result && result_of_data_import
|
||||
project.import_finish
|
||||
project.save
|
||||
project.satellite.create unless project.satellite.exists?
|
||||
project.update_repository_size
|
||||
else
|
||||
project.import_fail
|
||||
end
|
||||
project.import_finish
|
||||
project.save
|
||||
project.satellite.create unless project.satellite.exists?
|
||||
project.update_repository_size
|
||||
Gitlab::BitbucketImport::KeyDeleter.new(project).execute if project.import_type == 'bitbucket'
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -61,17 +61,28 @@ module Gitlab
|
|||
JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}").body)
|
||||
end
|
||||
|
||||
def deploy_key(project_identifier)
|
||||
JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/deploy-keys").body).find { |key| key["label"] =~ /GitLab/ }
|
||||
def find_deploy_key(project_identifier, key)
|
||||
JSON.parse(api.get("/api/1.0/repositories/#{project_identifier}/deploy-keys").body).find { |deploy_key|
|
||||
deploy_key["key"].chomp == key.chomp
|
||||
}
|
||||
end
|
||||
|
||||
def add_deploy_key(project_identifier, key)
|
||||
deploy_key = find_deploy_key(project_identifier, key)
|
||||
return if deploy_key
|
||||
|
||||
JSON.parse(api.post("/api/1.0/repositories/#{project_identifier}/deploy-keys", key: key, label: "GitLab import key").body)
|
||||
end
|
||||
|
||||
def delete_deploy_key(project_identifier, key)
|
||||
deploy_key = find_deploy_key(project_identifier, key)
|
||||
return unless deploy_key
|
||||
|
||||
api.delete("/api/1.0/repositories/#{project_identifier}/deploy-keys/#{deploy_key["pk"]}").code == "204"
|
||||
end
|
||||
|
||||
def projects
|
||||
JSON.parse(api.get("/api/1.0/user/repositories").body).
|
||||
select { |repo| repo["scm"] == "git" }
|
||||
JSON.parse(api.get("/api/1.0/user/repositories").body).select { |repo| repo["scm"] == "git" }
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@ module Gitlab
|
|||
return false unless BitbucketImport.public_key.present?
|
||||
|
||||
project_identifier = "#{repo["owner"]}/#{repo["slug"]}"
|
||||
return true if client.deploy_key(project_identifier)
|
||||
|
||||
client.add_deploy_key(project_identifier, BitbucketImport.public_key)
|
||||
|
||||
true
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
module Gitlab
|
||||
module BitbucketImport
|
||||
class KeyDeleter
|
||||
attr_reader :project, :current_user, :client
|
||||
|
||||
def initialize(project)
|
||||
@project = project
|
||||
@current_user = project.creator
|
||||
@client = Client.new(current_user.bitbucket_access_token, current_user.bitbucket_access_token_secret)
|
||||
end
|
||||
|
||||
def execute
|
||||
return false unless BitbucketImport.public_key.present?
|
||||
|
||||
client.delete_deploy_key(project.import_source, BitbucketImport.public_key)
|
||||
|
||||
true
|
||||
rescue
|
||||
false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue