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' ) project.gpid = gproject.id project.save! puts "Successfully created #{project.name}" # 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