You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.5 KiB
81 lines
2.5 KiB
namespace :gitlab do
|
|
namespace :sync do
|
|
|
|
module Helper
|
|
def self.change_password(uid, en_pwd, salt)
|
|
g = Gitlab.client
|
|
options = {:encrypted_password=>en_pwd, :password_salt=>salt}
|
|
g.put("/users/ext/#{uid}", :body => options)
|
|
# g.edit_user(uid, :encrypted_password=>en_pwd, :password_salt=>salt)
|
|
end
|
|
end
|
|
|
|
|
|
desc "sync users to gitlab"
|
|
task :users => :environment do
|
|
# User.where(username: 'root').find_each do |user|
|
|
User.where(login: 'guange1').find_each do |user|
|
|
begin
|
|
g = Gitlab.client
|
|
u = g.get("/users?search=#{user.mail}").first
|
|
unless u
|
|
u = g.create_user(user.mail, user.hashed_password, name: user.show_name, username: user.login, confirm: "true")
|
|
user.gid = u.id
|
|
user.save!
|
|
puts "create user #{user.login}"
|
|
end
|
|
Helper.change_password(u.id, user.hashed_password, user.salt)
|
|
rescue => e
|
|
puts e
|
|
end
|
|
end
|
|
end
|
|
|
|
desc "update user password"
|
|
task :password => :environment do
|
|
Helper.change_password(1,'5188b7a65acf294ee7deceb397b6f9c62214ea50','dcb8d9fffabec60c2d0d1030b679fbbb')
|
|
end
|
|
|
|
|
|
desc "sync projects to gitlab"
|
|
task :projects => :environment do
|
|
Project.where(id: 505).find_each do |project|
|
|
g = Gitlab.client
|
|
gid = project.owner.gid
|
|
raise "unknow gid" unless gid
|
|
path = project.repositories.where(:is_default => true).first.root_url.split('/').last
|
|
path = path.split('.').first
|
|
raise "unknow path" unless path
|
|
|
|
# import url http://xianbo_trustie2:1234@repository.trustie.net/xianbo/trustie2.git
|
|
# can use password
|
|
gproject = g.create_project(project.identifier,
|
|
path: path,
|
|
description: project.description,
|
|
wiki_enabled: false,
|
|
wall_enabled: false,
|
|
issues_enabled: false,
|
|
snippets_enabled: false,
|
|
public: false,
|
|
user_id: gid,
|
|
import_url: 'https://github.com/gitlabhq/gitlab-cli.git'
|
|
)
|
|
|
|
# add team members
|
|
#
|
|
GUEST = 10
|
|
REPORTER = 20
|
|
DEVELOPER = 30
|
|
MASTER = 40
|
|
OWNER = 50
|
|
|
|
project.members.each do |m|
|
|
g.add_team_member(gproject.id, m.user.gid, DEVELOPER)
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|