|
|
@@ -0,0 +1,44 @@ |
|
|
|
|
|
# 执行示例 bundle exec rake sync_org_mirror_repo:init_org_gitea_uid |
|
|
|
|
|
# RAILS_ENV=production bundle exec rake sync_org_mirror_repo:init_org_gitea_uid |
|
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
|
|
namespace :sync_org_mirror_repo do |
|
|
|
|
|
desc "更新组织gitea_uid" |
|
|
|
|
|
task init_org_gitea_uid: :environment do |
|
|
|
|
|
puts "=========begin to init organization gitea_uid==========" |
|
|
|
|
|
need_init_orgs = Organization.where(gitea_uid: nil) |
|
|
|
|
|
puts "=========need init count is [#{need_init_orgs.size}]==========" |
|
|
|
|
|
need_init_orgs.find_each do |org| |
|
|
|
|
|
puts "=== fix org name is [#{org.name}] ===" |
|
|
|
|
|
user = User.first |
|
|
|
|
|
gitea_org = Gitea::Organization::GetService.call(user, org.name) |
|
|
|
|
|
org.update(gitea_uid: gitea_org["id"]) |
|
|
|
|
|
end |
|
|
|
|
|
puts "========end to init organization gitea_uid===========" |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
desc "同步组织创建失败的镜像项目" |
|
|
|
|
|
task fix_mirror_repo: :environment do |
|
|
|
|
|
puts "========begin to fix mirror repository =========" |
|
|
|
|
|
need_fix_repos = Repository.joins(:mirror, project: :owner) |
|
|
|
|
|
.where.not(mirrors: {id: nil}) |
|
|
|
|
|
.where(users: {type: 'Organization'}) |
|
|
|
|
|
need_fix_repos.find_each do |repo| |
|
|
|
|
|
puts "=== fix repository owner is [#{repo&.project&.owner&.login}] ===" |
|
|
|
|
|
puts "=== fix repository identifier is [#{repo.identifier}] ===" |
|
|
|
|
|
Gitea::Repository::DeleteService.call(repo.project.owner, repo.identifier) |
|
|
|
|
|
gitea_repository_params = { |
|
|
|
|
|
clone_addr: repo.mirror_url, |
|
|
|
|
|
repo_name: repo.identifier, |
|
|
|
|
|
uid: repo.project.owner.gitea_uid, |
|
|
|
|
|
private: repo.hidden, |
|
|
|
|
|
mirror: ActiveModel::Type::Boolean.new.cast(repo.is_mirror) || false, |
|
|
|
|
|
auth_username: repo.login, |
|
|
|
|
|
auth_password: repo.password |
|
|
|
|
|
} |
|
|
|
|
|
MigrateRemoteRepositoryJob.perform_later(repo.id, repo.project&.owner&.gitea_token, gitea_repository_params) |
|
|
|
|
|
repo.update_columns(user_id: repo.project&.user_id) |
|
|
|
|
|
end |
|
|
|
|
|
puts "========end to fix mirror repository =========" |
|
|
|
|
|
end |
|
|
|
|
|
end |