[ADD]fix error script
This commit is contained in:
parent
9681a1a491
commit
ef0c44f29c
|
@ -0,0 +1,22 @@
|
|||
class Gitea::Organization::GetService < Gitea::ClientService
|
||||
attr_reader :user, :org_name
|
||||
|
||||
def initialize(user, org_name)
|
||||
@user = user
|
||||
@org_name = org_name
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
render_status(response)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: user.gitea_token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/orgs/#{org_name}".freeze
|
||||
end
|
||||
end
|
|
@ -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
|
Loading…
Reference in New Issue