|
|
|
@@ -3,7 +3,7 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService |
|
|
|
include ActiveModel::Model |
|
|
|
|
|
|
|
attr_reader :project, :type, :external_token, :external_repo_address, :sync_granularity, :external_branch_name, :gitlink_branch_name, :first_sync_direction |
|
|
|
attr_accessor :sync_repository1, :sync_repository2, :sync_repository_branch1, :sync_repository_branch2 |
|
|
|
attr_accessor :sync_repository1, :sync_repository2, :sync_repository_branch1, :sync_repository_branch2, :gitea_webhook |
|
|
|
|
|
|
|
validates :type, inclusion: {in: %w(SyncRepositories::Gitee SyncRepositories::Github)} |
|
|
|
validates :external_repo_address, format: { with: CustomRegexp::URL_REGEX, multiline: true, message: "地址格式不正确" } |
|
|
|
@@ -24,6 +24,7 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService |
|
|
|
def call |
|
|
|
raise Error, errors.full_messages.join(",") unless valid? |
|
|
|
|
|
|
|
create_webhook |
|
|
|
if sync_granularity == 2 |
|
|
|
# 创建两个不同方向的同步仓库 |
|
|
|
create_sync_repository |
|
|
|
@@ -35,7 +36,6 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService |
|
|
|
create_sync_repository |
|
|
|
touch_first_sync |
|
|
|
end |
|
|
|
create_webhook |
|
|
|
|
|
|
|
[@sync_repository1, @sync_repository2, @sync_repository_branch1, @sync_repository_branch2] |
|
|
|
end |
|
|
|
@@ -52,8 +52,8 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService |
|
|
|
repository1 = Reposync::CreateSyncRepoService.call(repo_name(1), gitlink_repo_address, gitlink_token, external_repo_address, external_token, sync_granularity, 1) |
|
|
|
repository2 = Reposync::CreateSyncRepoService.call(repo_name(2), gitlink_repo_address, gitlink_token, external_repo_address, external_token, sync_granularity, 2) |
|
|
|
raise Error, '创建同步仓库失败' if repository1[0].to_i > 0 || repository2[0].to_i > 0 |
|
|
|
@sync_repository1 = SyncRepository.create!(project: project, type: type, repo_name: repo_name(1), external_repo_address: external_repo_address, external_token: external_token, sync_granularity: sync_granularity, sync_direction: 1) |
|
|
|
@sync_repository2 = SyncRepository.create!(project: project, type: type, repo_name: repo_name(2), external_repo_address: external_repo_address, external_token: external_token, sync_granularity: sync_granularity, sync_direction: 2) |
|
|
|
@sync_repository1 = SyncRepository.create!(project: project, type: type, repo_name: repo_name(1), external_repo_address: external_repo_address, external_token: external_token, sync_granularity: sync_granularity, sync_direction: 1, webhook_gid: @gitea_webhook["id"]) |
|
|
|
@sync_repository2 = SyncRepository.create!(project: project, type: type, repo_name: repo_name(2), external_repo_address: external_repo_address, external_token: external_token, sync_granularity: sync_granularity, sync_direction: 2, webhook_gid: @gitea_webhook["id"]) |
|
|
|
end |
|
|
|
|
|
|
|
def create_sync_repository_branch |
|
|
|
@@ -82,7 +82,7 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService |
|
|
|
type: 'reposync', |
|
|
|
events: ["push"] |
|
|
|
} |
|
|
|
Api::V1::Projects::Webhooks::CreateService.call(project, webhook_params) |
|
|
|
@gitea_webhook = Api::V1::Projects::Webhooks::CreateService.call(project, webhook_params) |
|
|
|
end |
|
|
|
|
|
|
|
def repo_name(sync_direction) |
|
|
|
|