新增:同步仓库绑定webhook

This commit is contained in:
2024-04-29 15:19:07 +08:00
parent 1c1cceabbe
commit db40a21b04
4 changed files with 12 additions and 5 deletions

View File

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