summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-09-16 15:58:28 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-09-16 15:58:28 +0000
commitf4920b769f95c3fb024cc78db8a3fad6c6f8e46b (patch)
tree002921418529fc8a28365d410f67b38821dbf728
parent421d055371dcf5d4b62be39878c6d7085b50f3fe (diff)
parent2b20603f5a7e419defc4bd58d9fce63924c843d8 (diff)
downloadgitlab-ce-f4920b769f95c3fb024cc78db8a3fad6c6f8e46b.tar.gz
Merge branch 'fix-gitlab-ci-in-ce' into 'master'
Fix first bunch of regressions in GitLab CI /cc @vsizov @dzaporozhets See merge request !1312
-rw-r--r--app/models/ci/project.rb2
-rw-r--r--app/views/ci/projects/edit.html.haml2
-rw-r--r--db/migrate/20150916145038_add_index_for_committed_at_and_id.rb5
-rw-r--r--db/schema.rb3
-rw-r--r--lib/ci/api/helpers.rb2
-rw-r--r--lib/ci/migrate/tags.rb2
-rw-r--r--public/ci/build-skipped.svg1
-rw-r--r--spec/models/ci/project_spec.rb18
8 files changed, 31 insertions, 4 deletions
diff --git a/app/models/ci/project.rb b/app/models/ci/project.rb
index 2cf1783616f..ae901d4ccd0 100644
--- a/app/models/ci/project.rb
+++ b/app/models/ci/project.rb
@@ -33,7 +33,7 @@ module Ci
belongs_to :gl_project, class_name: '::Project', foreign_key: :gitlab_id
- has_many :commits, ->() { order(:committed_at) }, dependent: :destroy, class_name: 'Ci::Commit'
+ has_many :commits, ->() { order('CASE WHEN ci_commits.committed_at IS NULL THEN 0 ELSE 1 END', :committed_at, :id) }, dependent: :destroy, class_name: 'Ci::Commit'
has_many :builds, through: :commits, dependent: :destroy, class_name: 'Ci::Build'
has_many :runner_projects, dependent: :destroy, class_name: 'Ci::RunnerProject'
has_many :runners, through: :runner_projects, class_name: 'Ci::Runner'
diff --git a/app/views/ci/projects/edit.html.haml b/app/views/ci/projects/edit.html.haml
index 298007a6565..79e8fd3a295 100644
--- a/app/views/ci/projects/edit.html.haml
+++ b/app/views/ci/projects/edit.html.haml
@@ -1,6 +1,6 @@
- if @project.generated_yaml_config
%p.alert.alert-danger
- CI Jobs are deprecated now, you can #{link_to "download", dumped_yaml_project_path(@project)}
+ CI Jobs are deprecated now, you can #{link_to "download", dumped_yaml_ci_project(@project)}
or
%a.preview-yml{:href => "#yaml-content", "data-toggle" => "modal"} preview
yaml file which is based on your old jobs.
diff --git a/db/migrate/20150916145038_add_index_for_committed_at_and_id.rb b/db/migrate/20150916145038_add_index_for_committed_at_and_id.rb
new file mode 100644
index 00000000000..78d9e5f61a1
--- /dev/null
+++ b/db/migrate/20150916145038_add_index_for_committed_at_and_id.rb
@@ -0,0 +1,5 @@
+class AddIndexForCommittedAtAndId < ActiveRecord::Migration
+ def change
+ add_index :ci_commits, [:project_id, :committed_at, :id]
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 5fd764bf698..48314b8db6a 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20150914215247) do
+ActiveRecord::Schema.define(version: 20150916145038) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -118,6 +118,7 @@ ActiveRecord::Schema.define(version: 20150914215247) do
t.datetime "committed_at"
end
+ add_index "ci_commits", ["project_id", "committed_at", "id"], name: "index_ci_commits_on_project_id_and_committed_at_and_id", using: :btree
add_index "ci_commits", ["project_id", "committed_at"], name: "index_ci_commits_on_project_id_and_committed_at", using: :btree
add_index "ci_commits", ["project_id", "sha"], name: "index_ci_commits_on_project_id_and_sha", using: :btree
add_index "ci_commits", ["project_id"], name: "index_ci_commits_on_project_id", using: :btree
diff --git a/lib/ci/api/helpers.rb b/lib/ci/api/helpers.rb
index 9197f917d73..e602cda81d6 100644
--- a/lib/ci/api/helpers.rb
+++ b/lib/ci/api/helpers.rb
@@ -1,6 +1,8 @@
module Ci
module API
module Helpers
+ UPDATE_RUNNER_EVERY = 60
+
def authenticate_runners!
forbidden! unless params[:token] == GitlabCi::REGISTRATION_TOKEN
end
diff --git a/lib/ci/migrate/tags.rb b/lib/ci/migrate/tags.rb
index f4114c698d2..125a535e9a9 100644
--- a/lib/ci/migrate/tags.rb
+++ b/lib/ci/migrate/tags.rb
@@ -40,7 +40,7 @@ module Ci
tags = ActiveRecord::Base.connection.select_all(
'select ci_tags.name from ci_tags ' +
'join ci_taggings on ci_tags.id = ci_taggings.tag_id ' +
- "where taggable_type = #{ActiveRecord::Base::sanitize(type)} and taggable_id = #{ActiveRecord::Base::sanitize(id)} and context = \"tags\""
+ "where taggable_type = #{ActiveRecord::Base::sanitize(type)} and taggable_id = #{ActiveRecord::Base::sanitize(id)} and context = 'tags'"
)
tags.map { |tag| tag['name'] }
end
diff --git a/public/ci/build-skipped.svg b/public/ci/build-skipped.svg
new file mode 100644
index 00000000000..f15507188e0
--- /dev/null
+++ b/public/ci/build-skipped.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="97" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="a"><rect width="97" height="20" rx="3" fill="#fff"/></mask><g mask="url(#a)"><path fill="#555" d="M0 0h37v20H0z"/><path fill="#9f9f9f" d="M37 0h60v20H37z"/><path fill="url(#b)" d="M0 0h97v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="18.5" y="15" fill="#010101" fill-opacity=".3">build</text><text x="18.5" y="14">build</text><text x="66" y="15" fill="#010101" fill-opacity=".3">skipped</text><text x="66" y="14">skipped</text></g></svg> \ No newline at end of file
diff --git a/spec/models/ci/project_spec.rb b/spec/models/ci/project_spec.rb
index 1025868da6e..261ea69f5b4 100644
--- a/spec/models/ci/project_spec.rb
+++ b/spec/models/ci/project_spec.rb
@@ -61,6 +61,24 @@ describe Ci::Project do
end
end
+ describe 'ordered commits' do
+ let(:project) { FactoryGirl.create :ci_project }
+
+ it 'returns ordered list of commits' do
+ commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, project: project
+ commit2 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, project: project
+ expect(project.commits).to eq([commit2, commit1])
+ end
+
+ it 'returns commits ordered by committed_at and id, with nulls last' do
+ commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, project: project
+ commit2 = FactoryGirl.create :ci_commit, committed_at: nil, project: project
+ commit3 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, project: project
+ commit4 = FactoryGirl.create :ci_commit, committed_at: nil, project: project
+ expect(project.commits).to eq([commit2, commit4, commit3, commit1])
+ end
+ end
+
context :valid_project do
let(:project) { FactoryGirl.create :ci_project }