新增:同步仓库绑定webhook
This commit is contained in:
parent
1c1cceabbe
commit
db40a21b04
|
@ -43,6 +43,7 @@ class Api::V1::Projects::SyncRepositoriesController < Api::V1::BaseController
|
|||
@sync_repositories = SyncRepository.where(id: params[:sync_repository_ids].split(","))
|
||||
@sync_repositories.each do |repo|
|
||||
Reposync::DeleteRepoService.call(repo.repo_name)
|
||||
Api::V1::Projects::Webhooks::DeleteService.call(@project, repo.webhook_gid)
|
||||
repo.destroy
|
||||
end
|
||||
render_ok
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# external_token :string(255)
|
||||
# webhook_gid :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class AddWebhookGidToSyncRepository < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :sync_repositories, :webhook_gid, :integer
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue