ca6a1f33f9
Detect if pipeline runs for a GitHub pull request When using a mirror for CI/CD only we register a pull_request webhook. When a pull_request webhook is received, if the source branch SHA matches the actual head of the branch in the repository we create immediately a new pipeline for the external pull request. Otherwise we store the pull request info for when the push webhook is received. When using "only/except: external_pull_requests" we can detect if the pipeline has a open pull request on GitHub and create or not the job based on that.
25 lines
933 B
Ruby
25 lines
933 B
Ruby
# frozen_string_literal: true
|
|
|
|
class CreateExternalPullRequests < ActiveRecord::Migration[5.2]
|
|
include Gitlab::Database::MigrationHelpers
|
|
|
|
DOWNTIME = false
|
|
INDEX = 'index_external_pull_requests_on_project_and_branches'
|
|
|
|
def change
|
|
create_table :external_pull_requests do |t|
|
|
t.timestamps_with_timezone null: false
|
|
t.references :project, null: false, foreign_key: { on_delete: :cascade }, index: false
|
|
t.integer :pull_request_iid, null: false
|
|
t.integer :status, null: false, limit: 2
|
|
t.string :source_branch, null: false, limit: 255
|
|
t.string :target_branch, null: false, limit: 255
|
|
t.string :source_repository, null: false, limit: 255
|
|
t.string :target_repository, null: false, limit: 255
|
|
t.binary :source_sha, null: false
|
|
t.binary :target_sha, null: false
|
|
|
|
t.index [:project_id, :source_branch, :target_branch], unique: true, name: INDEX
|
|
end
|
|
end
|
|
end
|