|
- 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
|