summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-08-12 17:08:36 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2016-08-12 17:08:36 +0200
commit47f007d63b26fb1df8f8bf813e645141c0f30fe2 (patch)
tree2302167086312e7ccf1d818134bc40e4b6da161b
parenta391652fe60930e2139ecfacb175da6aa0f3b1e9 (diff)
parent283b2c0b15bbd39136f601f595157033850dd5a8 (diff)
downloadgitlab-ce-47f007d63b26fb1df8f8bf813e645141c0f30fe2.tar.gz
Merge remote-tracking branch 'origin/master' into pipeline-hooks-without-slack
-rw-r--r--app/models/ci/build.rb4
-rw-r--r--app/models/ci/pipeline.rb22
-rw-r--r--app/models/commit_status.rb2
-rw-r--r--app/models/spam_report.rb5
-rw-r--r--app/services/ci/process_pipeline_service.rb2
-rw-r--r--doc/development/performance.md9
-rw-r--r--spec/models/build_spec.rb6
-rw-r--r--spec/models/ci/pipeline_spec.rb23
8 files changed, 39 insertions, 34 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index ca2fd4f7409..4c84f4c21c5 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -59,7 +59,7 @@ module Ci
when: build.when,
user: user,
environment: build.environment,
- status_event: 'queue'
+ status_event: 'enqueue'
)
MergeRequests::AddTodoWhenBuildFailsService.new(build.project, nil).close(new_build)
new_build
@@ -102,7 +102,7 @@ module Ci
def play(current_user = nil)
# Try to queue a current build
- if self.queue
+ if self.enqueue
self.update(user: current_user)
self
else
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 98185ecd447..08b104ccfc8 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -22,9 +22,9 @@ module Ci
delegate :stages, to: :statuses
state_machine :status, initial: :created do
- event :queue do
+ event :enqueue do
transition created: :pending
- transition any - [:created, :pending] => :running
+ transition [:success, :failed, :canceled, :skipped] => :running
end
event :run do
@@ -230,18 +230,12 @@ module Ci
def build_updated
case latest_builds_status
- when 'pending'
- queue
- when 'running'
- run
- when 'success'
- succeed
- when 'failed'
- drop
- when 'canceled'
- cancel
- when 'skipped'
- skip
+ when 'pending' then enqueue
+ when 'running' then run
+ when 'success' then succeed
+ when 'failed' then drop
+ when 'canceled' then cancel
+ when 'skipped' then skip
end
end
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb
index c21c8ce18db..703ca90edb6 100644
--- a/app/models/commit_status.rb
+++ b/app/models/commit_status.rb
@@ -26,7 +26,7 @@ class CommitStatus < ActiveRecord::Base
scope :ignored, -> { where(allow_failure: true, status: [:failed, :canceled]) }
state_machine :status do
- event :queue do
+ event :enqueue do
transition [:created, :skipped] => :pending
end
diff --git a/app/models/spam_report.rb b/app/models/spam_report.rb
deleted file mode 100644
index cdc7321b08e..00000000000
--- a/app/models/spam_report.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class SpamReport < ActiveRecord::Base
- belongs_to :user
-
- validates :user, presence: true
-end
diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb
index 86c4823d18a..6f7610d42ba 100644
--- a/app/services/ci/process_pipeline_service.rb
+++ b/app/services/ci/process_pipeline_service.rb
@@ -37,7 +37,7 @@ module Ci
return false unless Statuseable::COMPLETED_STATUSES.include?(current_status)
if valid_statuses_for_when(build.when).include?(current_status)
- build.queue
+ build.enqueue
true
else
build.skip
diff --git a/doc/development/performance.md b/doc/development/performance.md
index fb37b3a889c..7ff603e2c4a 100644
--- a/doc/development/performance.md
+++ b/doc/development/performance.md
@@ -15,8 +15,8 @@ The process of solving performance problems is roughly as follows:
3. Add your findings based on the measurement period (screenshots of graphs,
timings, etc) to the issue mentioned in step 1.
4. Solve the problem.
-5. Create a merge request, assign the "performance" label and ping the right
- people (e.g. [@yorickpeterse][yorickpeterse] and [@joshfng][joshfng]).
+5. Create a merge request, assign the "Performance" label and assign it to
+ [@yorickpeterse][yorickpeterse] for reviewing.
6. Once a change has been deployed make sure to _again_ measure for at least 24
hours to see if your changes have any impact on the production environment.
7. Repeat until you're done.
@@ -36,8 +36,8 @@ graphs/dashboards.
GitLab provides two built-in tools to aid the process of improving performance:
-* [Sherlock](doc/development/profiling.md#sherlock)
-* [GitLab Performance Monitoring](doc/monitoring/performance/monitoring.md)
+* [Sherlock](profiling.md#sherlock)
+* [GitLab Performance Monitoring](../monitoring/performance/monitoring.md)
GitLab employees can use GitLab.com's performance monitoring systems located at
<http://performance.gitlab.net>, this requires you to log in using your
@@ -254,5 +254,4 @@ referencing an object directly may even slow code down.
[#15607]: https://gitlab.com/gitlab-org/gitlab-ce/issues/15607
[yorickpeterse]: https://gitlab.com/u/yorickpeterse
-[joshfng]: https://gitlab.com/u/joshfng
[anti-pattern]: https://en.wikipedia.org/wiki/Anti-pattern
diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb
index 3d66ccf3f28..79f872b2624 100644
--- a/spec/models/build_spec.rb
+++ b/spec/models/build_spec.rb
@@ -887,8 +887,10 @@ describe Ci::Build, models: true do
is_expected.to eq(build)
end
- context 'for success build' do
- before { build.queue }
+ context 'for successful build' do
+ before do
+ build.update(status: 'success')
+ end
it 'creates a new build' do
is_expected.to be_pending
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index a3f9934971a..19f1aacaabc 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -145,7 +145,7 @@ describe Ci::Pipeline, models: true do
expect(pipeline.reload.started_at).not_to be_nil
end
- it 'do not update on transitioning to success' do
+ it 'does not update on transitioning to success' do
build.success
expect(pipeline.reload.started_at).to be_nil
@@ -159,7 +159,7 @@ describe Ci::Pipeline, models: true do
expect(pipeline.reload.finished_at).not_to be_nil
end
- it 'do not update on transitioning to running' do
+ it 'does not update on transitioning to running' do
build.run
expect(pipeline.reload.finished_at).to be_nil
@@ -259,14 +259,16 @@ describe Ci::Pipeline, models: true do
subject { pipeline.reload.status }
context 'on queuing' do
- before { build.queue }
+ before do
+ build.enqueue
+ end
it { is_expected.to eq('pending') }
end
context 'on run' do
before do
- build.queue
+ build.enqueue
build.run
end
@@ -296,6 +298,19 @@ describe Ci::Pipeline, models: true do
it { is_expected.to eq('canceled') }
end
+
+ context 'on failure and build retry' do
+ before do
+ build.drop
+ Ci::Build.retry(build)
+ end
+
+ # We are changing a state: created > failed > running
+ # Instead of: created > failed > pending
+ # Since the pipeline already run, so it should not be pending anymore
+
+ it { is_expected.to eq('running') }
+ end
end
describe '#execute_hooks' do