Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
4ae411ff
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4ae411ff
编写于
3月 17, 2017
作者:
F
Felipe Artur
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Preloads head pipeline for each merge request
上级
11ff9fc6
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
36 addition
and
8 deletion
+36
-8
app/controllers/concerns/issuable_collections.rb
app/controllers/concerns/issuable_collections.rb
+1
-1
app/models/merge_request.rb
app/models/merge_request.rb
+2
-6
app/services/ci/create_pipeline_service.rb
app/services/ci/create_pipeline_service.rb
+7
-1
changelogs/unreleased/issue_27168_2.yml
changelogs/unreleased/issue_27168_2.yml
+4
-0
db/migrate/20170427205316_add_head_pipeline_id_to_merge_requests.rb
.../20170427205316_add_head_pipeline_id_to_merge_requests.rb
+7
-0
db/schema.rb
db/schema.rb
+2
-0
spec/lib/gitlab/import_export/safe_model_attributes.yml
spec/lib/gitlab/import_export/safe_model_attributes.yml
+1
-0
spec/services/ci/create_pipeline_service_spec.rb
spec/services/ci/create_pipeline_service_spec.rb
+12
-0
未找到文件。
app/controllers/concerns/issuable_collections.rb
浏览文件 @
4ae411ff
...
...
@@ -47,7 +47,7 @@ module IssuableCollections
end
def
merge_requests_collection
merge_requests_finder
.
execute
.
preload
(
:source_project
,
:target_project
,
:author
,
:assignee
,
:labels
,
:milestone
,
:merge_request_diff
,
target_project: :namespace
)
merge_requests_finder
.
execute
.
preload
(
:source_project
,
:target_project
,
:author
,
:assignee
,
:labels
,
:milestone
,
:merge_request_diff
,
:head_pipeline
,
target_project: :namespace
)
end
def
issues_finder
...
...
app/models/merge_request.rb
浏览文件 @
4ae411ff
...
...
@@ -13,6 +13,8 @@ class MergeRequest < ActiveRecord::Base
has_one
:merge_request_diff
,
->
{
order
(
'merge_request_diffs.id DESC'
)
}
belongs_to
:head_pipeline
,
foreign_key:
"head_pipeline_id"
,
class_name:
"Ci::Pipeline"
has_many
:events
,
as: :target
,
dependent: :destroy
has_many
:merge_requests_closing_issues
,
class_name:
'MergeRequestsClosingIssues'
,
dependent: :delete_all
...
...
@@ -829,12 +831,6 @@ class MergeRequest < ActiveRecord::Base
diverged_commits_count
>
0
end
def
head_pipeline
return
unless
diff_head_sha
&&
source_project
@head_pipeline
||=
source_project
.
pipeline_for
(
source_branch
,
diff_head_sha
)
end
def
all_pipelines
return
Ci
::
Pipeline
.
none
unless
source_project
...
...
app/services/ci/create_pipeline_service.rb
浏览文件 @
4ae411ff
...
...
@@ -47,7 +47,7 @@ module Ci
end
Ci
::
Pipeline
.
transaction
do
pipeline
.
save
update_merge_requests_head_pipeline
if
pipeline
.
save
Ci
::
CreatePipelineBuildsService
.
new
(
project
,
current_user
)
...
...
@@ -118,6 +118,12 @@ module Ci
origin_sha
&&
origin_sha
!=
Gitlab
::
Git
::
BLANK_SHA
end
def
update_merge_requests_head_pipeline
merge_requests
=
MergeRequest
.
where
(
source_branch:
@pipeline
.
ref
,
source_project:
@pipeline
.
project
)
merge_requests
.
update_all
(
head_pipeline_id:
@pipeline
.
id
)
if
merge_requests
.
any?
end
def
error
(
message
,
save:
false
)
pipeline
.
errors
.
add
(
:base
,
message
)
pipeline
.
drop
if
save
...
...
changelogs/unreleased/issue_27168_2.yml
0 → 100644
浏览文件 @
4ae411ff
---
title
:
Preloads head pipeline for each merge request
merge_request
:
author
:
db/migrate/20170427205316_add_head_pipeline_id_to_merge_requests.rb
0 → 100644
浏览文件 @
4ae411ff
class
AddHeadPipelineIdToMergeRequests
<
ActiveRecord
::
Migration
DOWNTIME
=
false
def
change
add_column
:merge_requests
,
:head_pipeline_id
,
:integer
end
end
db/schema.rb
浏览文件 @
4ae411ff
...
...
@@ -123,6 +123,7 @@ ActiveRecord::Schema.define(version: 20170506185517) do
t
.
integer
"cached_markdown_version"
t
.
boolean
"clientside_sentry_enabled"
,
default:
false
,
null:
false
t
.
string
"clientside_sentry_dsn"
t
.
string
"default_artifacts_expire_in"
,
default:
"0"
,
null:
false
end
create_table
"audit_events"
,
force: :cascade
do
|
t
|
...
...
@@ -690,6 +691,7 @@ ActiveRecord::Schema.define(version: 20170506185517) do
t
.
integer
"cached_markdown_version"
t
.
datetime
"last_edited_at"
t
.
integer
"last_edited_by_id"
t
.
integer
"head_pipeline_id"
end
add_index
"merge_requests"
,
[
"assignee_id"
],
name:
"index_merge_requests_on_assignee_id"
,
using: :btree
...
...
spec/lib/gitlab/import_export/safe_model_attributes.yml
浏览文件 @
4ae411ff
...
...
@@ -158,6 +158,7 @@ MergeRequest:
-
time_estimate
-
last_edited_at
-
last_edited_by_id
-
head_pipeline_id
MergeRequestDiff
:
-
id
-
state
...
...
spec/services/ci/create_pipeline_service_spec.rb
浏览文件 @
4ae411ff
...
...
@@ -34,6 +34,18 @@ describe Ci::CreatePipelineService, services: true do
it
{
expect
(
pipeline
).
to
have_attributes
(
status:
'pending'
)
}
it
{
expect
(
pipeline
.
builds
.
first
).
to
be_kind_of
(
Ci
::
Build
)
}
it
'updates head pipeline of each merge request'
do
merge_request_1
=
create
(
:merge_request
,
source_branch:
'master'
,
target_branch:
"branch_1"
,
source_project:
project
)
merge_request_2
=
create
(
:merge_request
,
source_branch:
'master'
,
target_branch:
"branch_2"
,
source_project:
project
)
merge_request_3
=
create
(
:merge_request
,
source_branch:
'other_branch'
,
target_branch:
"branch_2"
,
source_project:
project
)
head_pipeline
=
pipeline
expect
(
merge_request_1
.
reload
.
head_pipeline
).
to
eq
(
head_pipeline
)
expect
(
merge_request_2
.
reload
.
head_pipeline
).
to
eq
(
head_pipeline
)
expect
(
merge_request_3
.
reload
.
head_pipeline
).
to
be_nil
end
context
'auto-cancel enabled'
do
before
do
project
.
update
(
auto_cancel_pending_pipelines:
'enabled'
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录