From 2bee8e7db927d2bc2c5912b98dfe52d3c3c40fbd Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Mon, 11 Jul 2016 13:50:45 +0100 Subject: [PATCH 01/29] Hide build spinner on canceled builds Closes #19651 --- app/assets/javascripts/ci/build.coffee | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/ci/build.coffee b/app/assets/javascripts/ci/build.coffee index 74691b2c1b5..26b8686dee8 100644 --- a/app/assets/javascripts/ci/build.coffee +++ b/app/assets/javascripts/ci/build.coffee @@ -46,13 +46,15 @@ class @CiBuild , 4000 getInitialBuildTrace: -> + removeRefreshStatuses = ['success', 'failed', 'canceled'] + $.ajax url: @build_url dataType: 'json' success: (build_data) -> $('.js-build-output').html build_data.trace_html - if build_data.status is 'success' or build_data.status is 'failed' + if removeRefreshStatuses.indexOf(build_data.status) >= 0 $('.js-build-refresh').remove() getBuildTrace: -> From ddc5b9f7236f8932c32ec9ec1d91338aab22a9e0 Mon Sep 17 00:00:00 2001 From: Bryce Date: Wed, 31 Aug 2016 18:08:52 +0200 Subject: [PATCH 02/29] Revert "Add last commit time to repo view" This reverts commit 8581e152ef8fa27b6670760d39b7f06dab5f796b. This creates really difficult conflicts with another MR that was worked on simulataneously. That MR mostly encompassed the aims of this commit. See https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5308/commits --- app/assets/stylesheets/pages/tree.scss | 10 ---------- app/views/projects/tree/_tree_content.html.haml | 11 +++++------ 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/app/assets/stylesheets/pages/tree.scss b/app/assets/stylesheets/pages/tree.scss index 538f211c65b..9da40fe2b09 100644 --- a/app/assets/stylesheets/pages/tree.scss +++ b/app/assets/stylesheets/pages/tree.scss @@ -11,16 +11,6 @@ } } - .last-commit { - max-width: 506px; - - .last-commit-content { - @include str-truncated; - width: calc(100% - 140px); - margin-left: 3px; - } - } - .tree-table { margin-bottom: 0; diff --git a/app/views/projects/tree/_tree_content.html.haml b/app/views/projects/tree/_tree_content.html.haml index ca5d2d7722a..558e6146ae9 100644 --- a/app/views/projects/tree/_tree_content.html.haml +++ b/app/views/projects/tree/_tree_content.html.haml @@ -5,17 +5,16 @@ %tr %th Name %th Last Update - %th.hidden-xs.last-commit - Last Commit - .last-commit-content.hidden-sm + %th.hidden-xs + .pull-left Last Commit + .last-commit.hidden-sm.pull-left +   %i.fa.fa-angle-right   %small.light = link_to @commit.short_id, namespace_project_commit_path(@project.namespace, @project, @commit), class: "monospace" – - = time_ago_with_tooltip(@commit.committed_date) - – - = @commit.full_title + = truncate(@commit.title, length: 50) = link_to 'History', namespace_project_commits_path(@project.namespace, @project, @id), class: 'pull-right' - if @path.present? From db5244ab9054610ae13b44a0d508a339971bdcca Mon Sep 17 00:00:00 2001 From: Bryce Date: Wed, 31 Aug 2016 18:14:09 +0200 Subject: [PATCH 03/29] Fix repo page ui issues, show full last commit message in repo view. Integrates changes from ClemMakesApps' commit: 8581e152, although it was reverted to avoid frustrating conflicts. See MR: !5530 (diffs) --- CHANGELOG | 1 + .../stylesheets/framework/variables.scss | 1 + app/assets/stylesheets/pages/tree.scss | 21 ++++++++++++++++--- app/views/projects/refs/logs_tree.js.haml | 4 ++-- app/views/projects/tree/_blob_item.html.haml | 6 +++--- .../projects/tree/_tree_content.html.haml | 9 ++++---- app/views/projects/tree/_tree_item.html.haml | 6 +++--- 7 files changed, 33 insertions(+), 15 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 6b09dfa8d74..f094a707bfa 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -52,6 +52,7 @@ v 8.12.0 (unreleased) - Adds response mime type to transaction metric action when it's not HTML - Fix hover leading space bug in pipeline graph !5980 - User can edit closed MR with deleted fork (Katarzyna Kobierska Ula Budziszewska) !5496 + - Fix repository page ui issues v 8.11.4 (unreleased) - Fix broken gitlab:backup:restore because of bad permissions on repo storage !6098 (Dirk Hörner) diff --git a/app/assets/stylesheets/framework/variables.scss b/app/assets/stylesheets/framework/variables.scss index 5da390118c6..abfae2e00fb 100644 --- a/app/assets/stylesheets/framework/variables.scss +++ b/app/assets/stylesheets/framework/variables.scss @@ -35,6 +35,7 @@ $gl-icon-color: $gl-placeholder-color; $gl-grayish-blue: #7f8fa4; $gl-gray: $gl-text-color; $gl-gray-dark: #313236; +$gl-gray-light: $gl-placeholder-color; $gl-header-color: $gl-title-color; /* diff --git a/app/assets/stylesheets/pages/tree.scss b/app/assets/stylesheets/pages/tree.scss index 9da40fe2b09..e330300f9a1 100644 --- a/app/assets/stylesheets/pages/tree.scss +++ b/app/assets/stylesheets/pages/tree.scss @@ -22,6 +22,15 @@ line-height: 21px; } + .last-commit { + @include str-truncated(60%); + } + + .commit-history-link-spacer { + margin: 0 10px; + color: $table-border-color; + } + &:hover { td { background-color: $row-hover; @@ -77,11 +86,17 @@ } } - .tree_commit { - color: $gl-gray; + .tree-time-ago { + min-width: 135px; + color: $gl-gray-light; + } + + .tree-commit { + max-width: 320px; + color: $gl-gray-light; .tree-commit-link { - color: $gl-gray; + color: $gl-gray-light; &:hover { text-decoration: underline; diff --git a/app/views/projects/refs/logs_tree.js.haml b/app/views/projects/refs/logs_tree.js.haml index 8ee2aef0e61..1141168f037 100644 --- a/app/views/projects/refs/logs_tree.js.haml +++ b/app/views/projects/refs/logs_tree.js.haml @@ -5,8 +5,8 @@ :plain var row = $("table.table_#{@hex_path} tr.file_#{hexdigest(file_name)}"); - row.find("td.tree_time_ago").html('#{escape_javascript time_ago_with_tooltip(commit.committed_date)}'); - row.find("td.tree_commit").html('#{escape_javascript render("projects/tree/tree_commit_column", commit: commit)}'); + row.find("td.tree-time-ago").html('#{escape_javascript time_ago_with_tooltip(commit.committed_date)}'); + row.find("td.tree-commit").html('#{escape_javascript render("projects/tree/tree_commit_column", commit: commit)}'); - if @more_log_url :plain diff --git a/app/views/projects/tree/_blob_item.html.haml b/app/views/projects/tree/_blob_item.html.haml index a3a4dba3fa4..ee417b58cbf 100644 --- a/app/views/projects/tree/_blob_item.html.haml +++ b/app/views/projects/tree/_blob_item.html.haml @@ -4,6 +4,6 @@ - file_name = blob_item.name = link_to namespace_project_blob_path(@project.namespace, @project, tree_join(@id || @commit.id, blob_item.name)), title: file_name do %span.str-truncated= file_name - %td.tree_time_ago.cgray - = render 'projects/tree/spinner' - %td.hidden-xs.tree_commit + %td.hidden-xs.tree-commit + %td.tree-time-ago.cgray.text-right + = render 'projects/tree/spinner' \ No newline at end of file diff --git a/app/views/projects/tree/_tree_content.html.haml b/app/views/projects/tree/_tree_content.html.haml index 558e6146ae9..0f7d629ab98 100644 --- a/app/views/projects/tree/_tree_content.html.haml +++ b/app/views/projects/tree/_tree_content.html.haml @@ -4,7 +4,6 @@ %thead %tr %th Name - %th Last Update %th.hidden-xs .pull-left Last Commit .last-commit.hidden-sm.pull-left @@ -14,9 +13,11 @@ %small.light = link_to @commit.short_id, namespace_project_commit_path(@project.namespace, @project, @commit), class: "monospace" – - = truncate(@commit.title, length: 50) - = link_to 'History', namespace_project_commits_path(@project.namespace, @project, @id), class: 'pull-right' - + = time_ago_with_tooltip(@commit.committed_date) + = @commit.full_title + %small.commit-history-link-spacer | + = link_to 'History', namespace_project_commits_path(@project.namespace, @project, @id), class: 'commit-history-link' + %th.text-right Last Update - if @path.present? %tr.tree-item %td.tree-item-file-name diff --git a/app/views/projects/tree/_tree_item.html.haml b/app/views/projects/tree/_tree_item.html.haml index 9577696fc0d..1ccef6d52ab 100644 --- a/app/views/projects/tree/_tree_item.html.haml +++ b/app/views/projects/tree/_tree_item.html.haml @@ -4,6 +4,6 @@ - path = flatten_tree(tree_item) = link_to namespace_project_tree_path(@project.namespace, @project, tree_join(@id || @commit.id, path)), title: path do %span.str-truncated= path - %td.tree_time_ago.cgray - = render 'projects/tree/spinner' - %td.hidden-xs.tree_commit + %td.hidden-xs.tree-commit + %td.tree-time-ago.text-right + = render 'projects/tree/spinner' \ No newline at end of file From e119f994d779878e49d8e1d785725e80b2c48b27 Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Fri, 2 Sep 2016 12:29:05 +0100 Subject: [PATCH 04/29] Fix pagination on user snippets page --- CHANGELOG | 1 + app/assets/javascripts/snippets_list.js | 7 ++++++ app/views/snippets/_snippets.html.haml | 16 +++++++++----- spec/features/users/snippets_spec.rb | 29 +++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 app/assets/javascripts/snippets_list.js create mode 100644 spec/features/users/snippets_spec.rb diff --git a/CHANGELOG b/CHANGELOG index 934dabe743a..657a4bf723c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ v 8.12.0 (unreleased) - Add font color contrast to external label in admin area (ClemMakesApps) - Change logo animation to CSS (ClemMakesApps) - Instructions for enabling Git packfile bitmaps !6104 + - Fix pagination on user snippets page - Change merge_error column from string to text type - Reduce contributions calendar data payload (ClemMakesApps) - Add `web_url` field to issue, merge request, and snippet API objects (Ben Boeckel) diff --git a/app/assets/javascripts/snippets_list.js b/app/assets/javascripts/snippets_list.js new file mode 100644 index 00000000000..dce3d71aeee --- /dev/null +++ b/app/assets/javascripts/snippets_list.js @@ -0,0 +1,7 @@ +(function() { + this.gl.SnippetsList = function() { + $('.snippets-list-holder .pagination').on('ajax:success', function(e, data) { + $('.snippets-list-holder').replaceWith(data.html); + }); + }; +}).call(this); diff --git a/app/views/snippets/_snippets.html.haml b/app/views/snippets/_snippets.html.haml index 80a3e731e1d..7be4a471579 100644 --- a/app/views/snippets/_snippets.html.haml +++ b/app/views/snippets/_snippets.html.haml @@ -1,7 +1,11 @@ -%ul.content-list - = render partial: 'shared/snippets/snippet', collection: @snippets - - if @snippets.empty? - %li - .nothing-here-block Nothing here. +.snippets-list-holder + %ul.content-list + = render partial: 'shared/snippets/snippet', collection: @snippets + - if @snippets.empty? + %li + .nothing-here-block Nothing here. -= paginate @snippets, theme: 'gitlab' + = paginate @snippets, theme: 'gitlab', remote: true + +:javascript + gl.SnippetsList(); diff --git a/spec/features/users/snippets_spec.rb b/spec/features/users/snippets_spec.rb new file mode 100644 index 00000000000..356a8d668b0 --- /dev/null +++ b/spec/features/users/snippets_spec.rb @@ -0,0 +1,29 @@ +require 'spec_helper' + +describe 'Snippets tab on a user profile', feature: true, js: true do + include WaitForAjax + + let(:user) { create(:user) } + + context 'when the user has snippets' do + before do + create_list(:snippet, 25, :public, author: user) + + visit user_path(user) + page.within('.user-profile-nav') { click_link 'Snippets' } + wait_for_ajax + end + + it 'is limited to 20 items per page' do + expect(page.all('.snippets-list-holder .snippet-row').count).to eq(20) + end + + context 'clicking on the link to the second page' do + before { click_link('2') } + + it 'shows the remaining snippets' do + expect(page.all('.snippets-list-holder .snippet-row').count).to eq(5) + end + end + end +end From cc7a5029188bb036988f725973c57ce89fe5d602 Mon Sep 17 00:00:00 2001 From: Dimitrie Hoekstra Date: Mon, 5 Sep 2016 16:25:49 +0200 Subject: [PATCH 05/29] increased checkbox and filter button padding --- app/assets/stylesheets/framework/nav.scss | 2 +- app/assets/stylesheets/pages/issues.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/framework/nav.scss b/app/assets/stylesheets/framework/nav.scss index 9efbaf54e90..553768b2e68 100644 --- a/app/assets/stylesheets/framework/nav.scss +++ b/app/assets/stylesheets/framework/nav.scss @@ -138,7 +138,7 @@ } li a { - padding: 16px 10px 11px; + padding: 16px 15px 11px; } /* Small devices (phones, tablets, 768px and lower) */ diff --git a/app/assets/stylesheets/pages/issues.scss b/app/assets/stylesheets/pages/issues.scss index 910700b0206..d14224ed00f 100644 --- a/app/assets/stylesheets/pages/issues.scss +++ b/app/assets/stylesheets/pages/issues.scss @@ -9,7 +9,7 @@ .issue-check { float: left; - padding-right: 8px; + padding-right: 16px; margin-bottom: 10px; min-width: 15px; From 3f06d7abe46d74ca3610f94740e2770bc26cbf9e Mon Sep 17 00:00:00 2001 From: Dimitrie Hoekstra Date: Mon, 5 Sep 2016 16:36:32 +0200 Subject: [PATCH 06/29] added to Changelog --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index ae6812612d2..a38b4cc471c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.12.0 (unreleased) + - Cleanup misalignments in Issue list view !6206 - Prepend blank line to `Closes` message on merge request linked to issue (lukehowell) - Filter tags by name !6121 - Make push events have equal vertical spacing. From 7f0400398d7a09fd6eb35e8058c93ab693c0c527 Mon Sep 17 00:00:00 2001 From: Sean McGivern Date: Mon, 5 Sep 2016 17:38:20 +0100 Subject: [PATCH 07/29] Convert SnippetsList to ES6 --- app/assets/javascripts/snippets_list.js | 7 ------- app/assets/javascripts/snippets_list.js.es6 | 11 +++++++++++ 2 files changed, 11 insertions(+), 7 deletions(-) delete mode 100644 app/assets/javascripts/snippets_list.js create mode 100644 app/assets/javascripts/snippets_list.js.es6 diff --git a/app/assets/javascripts/snippets_list.js b/app/assets/javascripts/snippets_list.js deleted file mode 100644 index dce3d71aeee..00000000000 --- a/app/assets/javascripts/snippets_list.js +++ /dev/null @@ -1,7 +0,0 @@ -(function() { - this.gl.SnippetsList = function() { - $('.snippets-list-holder .pagination').on('ajax:success', function(e, data) { - $('.snippets-list-holder').replaceWith(data.html); - }); - }; -}).call(this); diff --git a/app/assets/javascripts/snippets_list.js.es6 b/app/assets/javascripts/snippets_list.js.es6 new file mode 100644 index 00000000000..6f0996c0d2a --- /dev/null +++ b/app/assets/javascripts/snippets_list.js.es6 @@ -0,0 +1,11 @@ +(global => { + global.gl = global.gl || {}; + + gl.SnippetsList = function() { + var $holder = $('.snippets-list-holder'); + + $holder.find('.pagination').on('ajax:success', (e, data) => { + $holder.replaceWith(data.html); + }); + } +})(window); From 2246218cc00e1f8db92cae7234131ca00943f567 Mon Sep 17 00:00:00 2001 From: "Z.J. van de Weg" Date: Fri, 2 Sep 2016 15:24:19 +0200 Subject: [PATCH 08/29] Remove gitorious from import_sources on ApplicationSetting model --- CHANGELOG | 1 + ...torious_field_from_application_settings.rb | 31 +++++++++++++++++++ db/schema.rb | 2 +- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb diff --git a/CHANGELOG b/CHANGELOG index 3f52fab74d7..f54a17e1ea2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -90,6 +90,7 @@ v 8.11.5 (unreleased) - Fix member expiration date picker after update - Fix suggested colors options for new labels in the admin area. !6138 - Fix GitLab import button + - Remove gitorious from import_sources v 8.11.4 - Fix resolving conflicts on forks. !6082 diff --git a/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb b/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb new file mode 100644 index 00000000000..5395d38ea8f --- /dev/null +++ b/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb @@ -0,0 +1,31 @@ +class DropGitoriousFieldFromApplicationSettings < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + # After the deploy the caches will be cold anyway + DOWNTIME = false + + def up + require 'yaml' + + yaml = connection.execute('SELECT import_sources FROM application_settings;').values[0][0] + yaml = YAML.safe_load(yaml) + yaml.delete 'gitorious' + + # No need for a WHERE clause as there is only one + connection.execute("UPDATE application_settings SET import_sources = #{update_yaml(yaml)}") + end + + def down + # noop, gitorious still yields a 404 anyway + end + + private + + def connection + ActiveRecord::Base.connection + end + + def update_yaml(yaml) + connection.quote(YAML.dump(yaml)) + end +end diff --git a/db/schema.rb b/db/schema.rb index c9023a02c77..5c283141084 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: 20160901141443) do +ActiveRecord::Schema.define(version: 20160902122721) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From e683eecdd99748f4b08359e2e979f94bf8ab5792 Mon Sep 17 00:00:00 2001 From: "Z.J. van de Weg" Date: Fri, 2 Sep 2016 22:36:20 +0200 Subject: [PATCH 09/29] Support MySQL too, when removing gitorious from import_sources --- ...122721_drop_gitorious_field_from_application_settings.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb b/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb index 5395d38ea8f..3342744ba93 100644 --- a/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb +++ b/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb @@ -7,7 +7,11 @@ class DropGitoriousFieldFromApplicationSettings < ActiveRecord::Migration def up require 'yaml' - yaml = connection.execute('SELECT import_sources FROM application_settings;').values[0][0] + yaml = if Gitlab::Database.postgresql? + connection.execute('SELECT import_sources FROM application_settings;').values[0][0] + else + connection.execute('SELECT import_sources FROM application_settings;').first[0] + end yaml = YAML.safe_load(yaml) yaml.delete 'gitorious' From 5204911f610c4062ce7d831e8182b0e959eda17c Mon Sep 17 00:00:00 2001 From: "Z.J. van de Weg" Date: Mon, 5 Sep 2016 19:29:49 +0200 Subject: [PATCH 10/29] Don't fail on an empty database --- ...p_gitorious_field_from_application_settings.rb | 15 ++++++++++----- db/schema.rb | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb b/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb index 3342744ba93..b7b6e9b3484 100644 --- a/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb +++ b/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb @@ -7,11 +7,16 @@ class DropGitoriousFieldFromApplicationSettings < ActiveRecord::Migration def up require 'yaml' - yaml = if Gitlab::Database.postgresql? - connection.execute('SELECT import_sources FROM application_settings;').values[0][0] - else - connection.execute('SELECT import_sources FROM application_settings;').first[0] - end + import_sources = connection.execute('SELECT import_sources FROM application_settings;') + + yaml = if Gitlab::Database.postgresql? + import_sources.values[0][0] + else + return unless import_sources.first + + import_sources.first[0] + end + yaml = YAML.safe_load(yaml) yaml.delete 'gitorious' diff --git a/db/schema.rb b/db/schema.rb index 5c283141084..c9023a02c77 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: 20160902122721) do +ActiveRecord::Schema.define(version: 20160901141443) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From 1847227f4db1862825356f49f4147b82e8ff0f3d Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Sep 2016 08:25:21 +0200 Subject: [PATCH 11/29] Remove doctoc --- doc/ci/yaml/README.md | 44 ------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 58d5306f12a..86b94cf8f54 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -6,50 +6,6 @@ GitLab Runner to manage your project's builds. If you want a quick introduction to GitLab CI, follow our [quick start guide](../quick_start/README.md). ---- - - - -**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - -- [.gitlab-ci.yml](#gitlab-ci-yml) - - [image and services](#image-and-services) - - [before_script](#before_script) - - [after_script](#after_script) - - [stages](#stages) - - [types](#types) - - [variables](#variables) - - [cache](#cache) - - [cache:key](#cache-key) -- [Jobs](#jobs) - - [script](#script) - - [stage](#stage) - - [only and except](#only-and-except) - - [job variables](#job-variables) - - [tags](#tags) - - [allow_failure](#allow_failure) - - [when](#when) - - [Manual actions](#manual-actions) - - [environment](#environment) - - [artifacts](#artifacts) - - [artifacts:name](#artifacts-name) - - [artifacts:when](#artifacts-when) - - [artifacts:expire_in](#artifacts-expire_in) - - [dependencies](#dependencies) - - [before_script and after_script](#before_script-and-after_script) -- [Git Strategy](#git-strategy) -- [Shallow cloning](#shallow-cloning) -- [Hidden keys](#hidden-keys) -- [Special YAML features](#special-yaml-features) - - [Anchors](#anchors) -- [Validate the .gitlab-ci.yml](#validate-the-gitlab-ci-yml) -- [Skipping builds](#skipping-builds) -- [Examples](#examples) - - - ---- - ## .gitlab-ci.yml From version 7.12, GitLab CI uses a [YAML](https://en.wikipedia.org/wiki/YAML) From b24555b8f41228a22d43d6876bb307bd83b9209e Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Sep 2016 08:26:48 +0200 Subject: [PATCH 12/29] Use stage instead of type --- app/views/projects/triggers/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/projects/triggers/index.html.haml b/app/views/projects/triggers/index.html.haml index 7f3de47d7df..867754bdf5e 100644 --- a/app/views/projects/triggers/index.html.haml +++ b/app/views/projects/triggers/index.html.haml @@ -48,7 +48,7 @@ %pre :plain trigger: - type: deploy + stage: deploy script: - "curl -X POST -F token=TOKEN -F ref=REF_NAME #{builds_trigger_url(@project.id)}" %h5.prepend-top-default From 03bed0fbd31b2edc9702ba690bae8c5fc53eb5e5 Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Tue, 6 Sep 2016 10:12:55 +0300 Subject: [PATCH 13/29] Clean up search result classes --- lib/gitlab/project_search_results.rb | 5 ----- lib/gitlab/search_results.rb | 9 --------- lib/gitlab/snippet_search_results.rb | 4 ---- spec/lib/gitlab/search_results_spec.rb | 18 ------------------ spec/lib/gitlab/snippet_search_results_spec.rb | 6 ------ 5 files changed, 42 deletions(-) diff --git a/lib/gitlab/project_search_results.rb b/lib/gitlab/project_search_results.rb index 183bd10d6a3..5b9cfaeb2f8 100644 --- a/lib/gitlab/project_search_results.rb +++ b/lib/gitlab/project_search_results.rb @@ -28,11 +28,6 @@ module Gitlab end end - def total_count - @total_count ||= issues_count + merge_requests_count + blobs_count + - notes_count + wiki_blobs_count + commits_count - end - def blobs_count @blobs_count ||= blobs.count end diff --git a/lib/gitlab/search_results.rb b/lib/gitlab/search_results.rb index f8ab2b1f09e..2690938fe82 100644 --- a/lib/gitlab/search_results.rb +++ b/lib/gitlab/search_results.rb @@ -27,11 +27,6 @@ module Gitlab end end - def total_count - @total_count ||= projects_count + issues_count + merge_requests_count + - milestones_count - end - def projects_count @projects_count ||= projects.count end @@ -48,10 +43,6 @@ module Gitlab @milestones_count ||= milestones.count end - def empty? - total_count.zero? - end - private def projects diff --git a/lib/gitlab/snippet_search_results.rb b/lib/gitlab/snippet_search_results.rb index e0e74ff8359..9e01f02029c 100644 --- a/lib/gitlab/snippet_search_results.rb +++ b/lib/gitlab/snippet_search_results.rb @@ -20,10 +20,6 @@ module Gitlab end end - def total_count - @total_count ||= snippet_titles_count + snippet_blobs_count - end - def snippet_titles_count @snippet_titles_count ||= snippet_titles.count end diff --git a/spec/lib/gitlab/search_results_spec.rb b/spec/lib/gitlab/search_results_spec.rb index 8a656ab0ee9..dfbefad6367 100644 --- a/spec/lib/gitlab/search_results_spec.rb +++ b/spec/lib/gitlab/search_results_spec.rb @@ -12,12 +12,6 @@ describe Gitlab::SearchResults do let!(:milestone) { create(:milestone, project: project, title: 'foo') } let(:results) { described_class.new(user, Project.all, 'foo') } - describe '#total_count' do - it 'returns the total amount of search hits' do - expect(results.total_count).to eq(4) - end - end - describe '#projects_count' do it 'returns the total amount of projects' do expect(results.projects_count).to eq(1) @@ -42,18 +36,6 @@ describe Gitlab::SearchResults do end end - describe '#empty?' do - it 'returns true when there are no search results' do - allow(results).to receive(:total_count).and_return(0) - - expect(results.empty?).to eq(true) - end - - it 'returns false when there are search results' do - expect(results.empty?).to eq(false) - end - end - describe 'confidential issues' do let(:project_1) { create(:empty_project) } let(:project_2) { create(:empty_project) } diff --git a/spec/lib/gitlab/snippet_search_results_spec.rb b/spec/lib/gitlab/snippet_search_results_spec.rb index e86b9ef6a63..b661a894c0c 100644 --- a/spec/lib/gitlab/snippet_search_results_spec.rb +++ b/spec/lib/gitlab/snippet_search_results_spec.rb @@ -5,12 +5,6 @@ describe Gitlab::SnippetSearchResults do let(:results) { described_class.new(Snippet.all, 'foo') } - describe '#total_count' do - it 'returns the total amount of search hits' do - expect(results.total_count).to eq(2) - end - end - describe '#snippet_titles_count' do it 'returns the amount of matched snippet titles' do expect(results.snippet_titles_count).to eq(1) From 20cbdf8065b4564855521cb5deda924a2458b962 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Sep 2016 10:36:04 +0200 Subject: [PATCH 14/29] Clean up and refactor the triggers views --- app/views/projects/triggers/index.html.haml | 130 ++++++++++++-------- 1 file changed, 77 insertions(+), 53 deletions(-) diff --git a/app/views/projects/triggers/index.html.haml b/app/views/projects/triggers/index.html.haml index 867754bdf5e..f6e0b0a7c8a 100644 --- a/app/views/projects/triggers/index.html.haml +++ b/app/views/projects/triggers/index.html.haml @@ -4,65 +4,89 @@ .col-lg-3 %h4.prepend-top-0 = page_title - %p - Triggers can force a specific branch or tag to rebuild with an API call. + %p.prepend-top-20 + Triggers can force a specific branch or tag to get rebuilt with an API call. + %p.append-bottom-0 + = succeed '.' do + Learn more in the + = link_to 'triggers documentation', help_page_path('ci/triggers/README'), target: '_blank' .col-lg-9 - %h5.prepend-top-0 - Your triggers - - if @triggers.any? - .table-responsive - %table.table - %thead - %th Token - %th Last used - %th - = render partial: 'trigger', collection: @triggers, as: :trigger - - else - %p.settings-message.text-center.append-bottom-default - No triggers have been created yet. Add one using the button below. + .panel.panel-default + .panel-heading + %h4.panel-title + Manage your project's triggers + .panel-body + - if @triggers.any? + .table-responsive + %table.table + %thead + %th + %strong Token + %th + %strong Last used + %th + = render partial: 'trigger', collection: @triggers, as: :trigger + - else + %p.settings-message.text-center.append-bottom-default + No triggers have been created yet. Add one using the button below. - = form_for @trigger, url: url_for(controller: 'projects/triggers', action: 'create') do |f| - = f.submit "Add Trigger", class: 'btn btn-success' + = form_for @trigger, url: url_for(controller: 'projects/triggers', action: 'create') do |f| + = f.submit "Add trigger", class: 'btn btn-success' - %h5.prepend-top-default - Use CURL + .panel-footer - %p.light - Copy the token above, set your branch or tag name, and that reference will be rebuilt. + %p + In the following examples, you can see the exact API call you need to + make in order to rebuild a specific + %code ref + (branch or tag) with a trigger token. + %p + All you need to do is replace the + %code TOKEN + and + %code REF_NAME + with the trigger token and the branch or tag name respectively. - %pre - :plain - curl -X POST \ - -F token=TOKEN \ - -F ref=REF_NAME \ - #{builds_trigger_url(@project.id)} - %h5.prepend-top-default - Use .gitlab-ci.yml + %h5.prepend-top-default + Use cURL - %p.light - In the - %code .gitlab-ci.yml - of the dependent project, include the following snippet. - The project will rebuild at the end of the build. + %p.light + Copy one of the tokens above, set your branch or tag name, and that + reference will be rebuilt. - %pre - :plain - trigger: - stage: deploy - script: - - "curl -X POST -F token=TOKEN -F ref=REF_NAME #{builds_trigger_url(@project.id)}" - %h5.prepend-top-default - Pass build variables + %pre + :plain + curl -X POST \ + -F token=TOKEN \ + -F ref=REF_NAME \ + #{builds_trigger_url(@project.id)} + %h5.prepend-top-default + Use .gitlab-ci.yml - %p.light - Add - %code variables[VARIABLE]=VALUE - to an API request. Variable values can be used to distinguish between triggered builds and normal builds. + %p.light + In the + %code .gitlab-ci.yml + of another project, include the following snippet. + The project will be rebuilt at the end of the build. - %pre.append-bottom-0 - :plain - curl -X POST \ - -F token=TOKEN \ - -F "ref=REF_NAME" \ - -F "variables[RUN_NIGHTLY_BUILD]=true" \ - #{builds_trigger_url(@project.id)} + %pre + :plain + trigger_build: + stage: deploy + script: + - "curl -X POST -F token=TOKEN -F ref=REF_NAME #{builds_trigger_url(@project.id)}" + %h5.prepend-top-default + Pass build variables + + %p.light + Add + %code variables[VARIABLE]=VALUE + to an API request. Variable values can be used to distinguish between triggered builds and normal builds. + + %pre.append-bottom-0 + :plain + curl -X POST \ + -F token=TOKEN \ + -F "ref=REF_NAME" \ + -F "variables[RUN_NIGHTLY_BUILD]=true" \ + #{builds_trigger_url(@project.id)} From 24ac1d9b2a72682988fe619a1298332fe996280f Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Sep 2016 10:37:10 +0200 Subject: [PATCH 15/29] Replace the triggers docs with new images --- doc/ci/triggers/img/builds_page.png | Bin 33324 -> 76181 bytes doc/ci/triggers/img/trigger_single_build.png | Bin 2387 -> 21152 bytes doc/ci/triggers/img/trigger_variables.png | Bin 4433 -> 9315 bytes doc/ci/triggers/img/triggers_page.png | Bin 12943 -> 12002 bytes doc/ci/yaml/README.md | 4 +++- 5 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/ci/triggers/img/builds_page.png b/doc/ci/triggers/img/builds_page.png index 2dee8ee61073b453c422fb62d78041089ed7333f..c2cf4b1852c51e760f8908b537cd8a2ba8527899 100644 GIT binary patch literal 76181 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

E$q`X|#+Xw1(KlTDh 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 $K;V=cbNb9=I)DiKm7 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 ZaqP$5=;XYE`++MEvQkQtr4q&g{~v!KmEZsX diff --git a/doc/ci/triggers/img/trigger_single_build.png b/doc/ci/triggers/img/trigger_single_build.png index baf3fc183d8ba11d78389e0aa107d0d5d1374f17..fa86f0fee3d3bdec4c4e9138621b9ab6db9d3fec 100644 GIT binary patch literal 21152 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 jccq(kKAX-ukCeaZ^n_29%c6nB-5nO^ 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 diff --git a/doc/ci/triggers/img/triggers_page.png b/doc/ci/triggers/img/triggers_page.png index 69cec5cdebfd14654fef9d3d43f126731632b37c..438f285ae2de42ca4d81de204d94cf5b52e038d3 100644 GIT binary patch literal 12002 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 KTYbmj+5Z4wWF#H{ literal 12943 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

^8VnK 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 diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 86b94cf8f54..41d9112a618 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -139,7 +139,7 @@ Alias for [stages](#stages). Introduced in GitLab Runner v0.5.0. GitLab CI allows you to add variables to `.gitlab-ci.yml` that are set in the -build environment. The variables are stored in the git repository and are meant +build environment. The variables are stored in the Git repository and are meant to store non-sensitive project configuration, for example: ```yaml @@ -154,6 +154,8 @@ thus allowing to fine tune them. Variables can be also defined on [job level](#job-variables). +[Learn more about variables.](../variables/README.md) + ### cache >**Note:** From c5e5614fe7bef000a4d8da1f7590d666b05b4e62 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Sep 2016 10:47:48 +0200 Subject: [PATCH 16/29] Add a reference to triggers docs in ci/yaml/README.md --- doc/ci/yaml/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 41d9112a618..ff4c8ddc54b 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -1044,6 +1044,13 @@ test:mysql: You can see that the hidden keys are conveniently used as templates. +## Triggers + +Triggers can be used to force a rebuild of a specific branch, tag or commit, +with an API call. + +[Read more in the triggers documentation.](../triggers/README.md) + ## Validate the .gitlab-ci.yml Each instance of GitLab CI has an embedded debug tool called Lint. From 4c3bfd08dbd1fe3f7b86257ef95804bcd356268f Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Sep 2016 10:58:11 +0200 Subject: [PATCH 17/29] Add Changelog entry --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index f54a17e1ea2..a9783622f35 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -84,6 +84,7 @@ v 8.12.0 (unreleased) - User can edit closed MR with deleted fork (Katarzyna Kobierska Ula Budziszewska) !5496 - Fixed invisible scroll controls on build page on iPhone - Fix error on raw build trace download for old builds stored in database !4822 + - Refactor the triggers page and documentation !6217 v 8.11.5 (unreleased) - Optimize branch lookups and force a repository reload for Repository#find_branch From a7a212c13f04f094edb7d67355a26199ac4f6274 Mon Sep 17 00:00:00 2001 From: Achilleas Pipinellis Date: Tue, 6 Sep 2016 11:52:01 +0200 Subject: [PATCH 18/29] Fix failing rspec test for triggers --- spec/features/triggers_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/triggers_spec.rb b/spec/features/triggers_spec.rb index 3cbc8253ad6..72354834c5a 100644 --- a/spec/features/triggers_spec.rb +++ b/spec/features/triggers_spec.rb @@ -12,7 +12,7 @@ describe 'Triggers' do context 'create a trigger' do before do - click_on 'Add Trigger' + click_on 'Add trigger' expect(@project.triggers.count).to eq(1) end From 083c0e28f70dcf41b15fee20f7d3305f21f737ae Mon Sep 17 00:00:00 2001 From: "Z.J. van de Weg" Date: Tue, 6 Sep 2016 12:13:35 +0200 Subject: [PATCH 19/29] Support empty PG database too First check if there is a result on the migration, else there is nothing to do --- ...902122721_drop_gitorious_field_from_application_settings.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb b/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb index b7b6e9b3484..a80a57254dd 100644 --- a/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb +++ b/db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb @@ -8,12 +8,11 @@ class DropGitoriousFieldFromApplicationSettings < ActiveRecord::Migration require 'yaml' import_sources = connection.execute('SELECT import_sources FROM application_settings;') + return unless import_sources.first # support empty databases yaml = if Gitlab::Database.postgresql? import_sources.values[0][0] else - return unless import_sources.first - import_sources.first[0] end From f6f06eae967cd512c0c573449ce4bd3e177a0f90 Mon Sep 17 00:00:00 2001 From: "Z.J. van de Weg" Date: Thu, 23 Jun 2016 12:35:04 +0200 Subject: [PATCH 20/29] Have CI test migration paths This commit adds a job to the pipeline to test if migration on seed data works. Even though the seed data is not perfect, it does give more guarentees that this will succeed in the real world too. seed_fu is used instead of dev:setup to save some time, as they both generate the data in the same way, this should be fine. --- .gitlab-ci.yml | 16 +++++++++++++++- CHANGELOG | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index be5614520a5..d0805125a42 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -248,6 +248,21 @@ bundler:audit: script: - "bundle exec bundle-audit check --update --ignore OSVDB-115941" +migration paths: + stage: test + <<: *use-db + only: + - master@gitlab-org/gitlab-ce + script: + - git checkout HEAD . + - git fetch --tags + - git checkout v8.5.9 + - 'echo test: unix:/var/opt/gitlab/redis/redis.socket > config/resque.yml' + - bundle install --without postgres production --jobs $(nproc) "${FLAGS[@]}" --retry=3 + - rake db:drop db:create db:schema:load db:seed_fu + - git checkout $CI_BUILD_REF + - rake db:migrate + coverage: stage: post-test services: [] @@ -263,7 +278,6 @@ coverage: - coverage/index.html - coverage/assets/ - # Notify slack in the end notify:slack: diff --git a/CHANGELOG b/CHANGELOG index f54a17e1ea2..642937d5940 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -24,6 +24,7 @@ v 8.12.0 (unreleased) - Add white background for no readme container (ClemMakesApps) - API: Expose issue confidentiality flag. (Robert Schilling) - Fix markdown anchor icon interaction (ClemMakesApps) + - Test migration paths from 8.5 until current release !4874 - Optimistic locking for Issues and Merge Requests (title and description overriding prevention) - Add `wiki_page_events` to project hook APIs (Ben Boeckel) - Remove Gitorious import From 924141fbfacaed336f05c06b7c02c3349b2cd2c7 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Tue, 6 Sep 2016 07:41:32 -0400 Subject: [PATCH 21/29] Reduce intermittent spec failures by making VueJS resource interceptor decrement outstanding resource counts when HTTP response is received Before the count would be reduced 500 ms after a DOM update tick, which could cause race conditions since the `DatabaseCleaner` could run in the middle of a Rails controller handling the response. Partial fix to #21197 and other intermittent spec failures. --- .../javascripts/boards/vue_resource_interceptor.js.es6 | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/boards/vue_resource_interceptor.js.es6 b/app/assets/javascripts/boards/vue_resource_interceptor.js.es6 index f9f9f7999d4..b5ff3a81ed5 100644 --- a/app/assets/javascripts/boards/vue_resource_interceptor.js.es6 +++ b/app/assets/javascripts/boards/vue_resource_interceptor.js.es6 @@ -1,10 +1,7 @@ -Vue.http.interceptors.push((request, next) => { +Vue.http.interceptors.push((request, next) => { Vue.activeResources = Vue.activeResources ? Vue.activeResources + 1 : 1; - Vue.nextTick(() => { - setTimeout(() => { - Vue.activeResources--; - }, 500); + next(function (response) { + Vue.activeResources--; }); - next(); }); From 657bb8650ee405e2ba3a554dddf6767621ea5c54 Mon Sep 17 00:00:00 2001 From: ubudzisz Date: Thu, 7 Jul 2016 11:02:57 +0200 Subject: [PATCH 22/29] render only commit title update CHANGELOG --- CHANGELOG | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 07b6e1298e4..bed16907410 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -535,6 +535,10 @@ v 8.9.7 (unreleased) v 8.9.6 - Fix importing of events under notes for GitLab projects + - Added setting to set new users by default as external !4545 (Dravere) + - Add min value for project limit field on user's form !3622 (jastkand) + - Add reminder to not paste private SSH keys !4399 (Ingo Blechschmidt) + - Render only commit message title in builds v 8.9.5 - Add more debug info to import/export and memory killer. !5108 From 0893911d62520822bbf1578783e76351b7cfaa37 Mon Sep 17 00:00:00 2001 From: ubudzisz Date: Thu, 4 Aug 2016 08:59:35 +0200 Subject: [PATCH 23/29] add js file show variables on-click show variables on-click show variables on-click remove = and add new js classes into sidebar.scss show variables by clicking button show variables by clicking button show variables by clicking button show variables by clicking button use id for a class add nicescroll add nicescroll --- CHANGELOG | 7 +++---- app/assets/javascripts/build_variables.js | 7 +++++++ app/assets/stylesheets/framework/sidebar.scss | 13 +++++++++++++ app/views/projects/builds/_sidebar.html.haml | 6 +++--- spec/views/projects/builds/show.html.haml_spec.rb | 14 ++++++++++---- 5 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 app/assets/javascripts/build_variables.js diff --git a/CHANGELOG b/CHANGELOG index bed16907410..16f5258a275 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -130,6 +130,9 @@ v 8.11.2 - Show "Create Merge Request" widget for push events to fork projects on the source project. !5978 - Use gitlab-workhorse 0.7.11 !5983 - Does not halt the GitHub import process when an error occurs. !5763 + - Show value variables onclick (Katarzyna Kobierska Ula Budziszewska) + +v 8.11.1 (unreleased) - Fix file links on project page when default view is Files !5933 - Fixed enter key in search input not working !5888 @@ -535,10 +538,6 @@ v 8.9.7 (unreleased) v 8.9.6 - Fix importing of events under notes for GitLab projects - - Added setting to set new users by default as external !4545 (Dravere) - - Add min value for project limit field on user's form !3622 (jastkand) - - Add reminder to not paste private SSH keys !4399 (Ingo Blechschmidt) - - Render only commit message title in builds v 8.9.5 - Add more debug info to import/export and memory killer. !5108 diff --git a/app/assets/javascripts/build_variables.js b/app/assets/javascripts/build_variables.js new file mode 100644 index 00000000000..3b77c1d4f37 --- /dev/null +++ b/app/assets/javascripts/build_variables.js @@ -0,0 +1,7 @@ +$(function(){ + $('.reveal-variables').off('click').on('click',function(){ + $('.js-build-variable').toggle(); + $('.js-build-value').toggle().niceScroll(); + $('.reveal-variables').show(); + }); +}); diff --git a/app/assets/stylesheets/framework/sidebar.scss b/app/assets/stylesheets/framework/sidebar.scss index 015fe3debf9..6eae609555b 100644 --- a/app/assets/stylesheets/framework/sidebar.scss +++ b/app/assets/stylesheets/framework/sidebar.scss @@ -226,3 +226,16 @@ header.header-pinned-nav { .right-sidebar { border-left: 1px solid $border-color; } + +.js-build-variable { + color: #c7254e; + font-size: 100%; + border-radius: 5px; +} + +.js-build-value { + padding: 2px 4px; + font-size: 100%; + color: #000; + background-color: #fff; +} diff --git a/app/views/projects/builds/_sidebar.html.haml b/app/views/projects/builds/_sidebar.html.haml index 5ce36a475a9..585cc310be3 100644 --- a/app/views/projects/builds/_sidebar.html.haml +++ b/app/views/projects/builds/_sidebar.html.haml @@ -90,12 +90,12 @@ - if @build.trigger_request.variables %p - %span.build-light-text Variables: + .btn.group.btn-group-justified.reveal-variables Reveal Variables - @build.trigger_request.variables.each do |key, value| - %code - #{key}=#{value} + .hide.js-build-variable #{key} + .hide.js-build-value #{value} .block .title diff --git a/spec/views/projects/builds/show.html.haml_spec.rb b/spec/views/projects/builds/show.html.haml_spec.rb index 464051063d8..1dc2048e1bc 100644 --- a/spec/views/projects/builds/show.html.haml_spec.rb +++ b/spec/views/projects/builds/show.html.haml_spec.rb @@ -59,14 +59,20 @@ describe 'projects/builds/show' do end it 'shows trigger variables in separate lines' do - expect(rendered).to have_css('code', text: variable_regexp('TRIGGER_KEY_1', 'TRIGGER_VALUE_1')) - expect(rendered).to have_css('code', text: variable_regexp('TRIGGER_KEY_2', 'TRIGGER_VALUE_2')) + expect(rendered).to have_css('.js-build-variable', visible: false, text: variable_regexp_key('TRIGGER_KEY_1')) + expect(rendered).to have_css('.js-build-variable', visible: false, text: variable_regexp_key('TRIGGER_KEY_2')) + expect(rendered).to have_css('.js-build-value', visible: false, text: variable_regexp_value('TRIGGER_VALUE_1')) + expect(rendered).to have_css('.js-build-value', visible: false, text: variable_regexp_value('TRIGGER_VALUE_2')) end end private - def variable_regexp(key, value) - /\A#{Regexp.escape("#{key}=#{value}")}\Z/ + def variable_regexp_key(key) + /\A#{Regexp.escape("#{key}")}\Z/ + end + + def variable_regexp_value(value) + /\A#{Regexp.escape("#{value}")}\Z/ end end From 691644dc5be544af0b0793353ab7f151136f1198 Mon Sep 17 00:00:00 2001 From: ubudzisz Date: Tue, 30 Aug 2016 17:37:49 +0200 Subject: [PATCH 24/29] add feature test add feature test add feature test add feature test remove test to builds_spec remove feature test to builds_spec remove feature test to builds_spec add changes to methods and remove FactoryGirl add changes to methods and remove FactoryGirl adding changes to test and js file changes grammar update changelog rename file name update files after review update files after review update files after review --- CHANGELOG | 4 +--- app/assets/javascripts/build_variables.js | 7 ------- app/assets/javascripts/build_variables.js.es6 | 6 ++++++ app/assets/stylesheets/framework/sidebar.scss | 8 +++----- app/views/projects/builds/_sidebar.html.haml | 5 +++-- spec/features/projects/builds_spec.rb | 20 +++++++++++++++++++ .../projects/builds/show.html.haml_spec.rb | 18 ++++------------- 7 files changed, 37 insertions(+), 31 deletions(-) delete mode 100644 app/assets/javascripts/build_variables.js create mode 100644 app/assets/javascripts/build_variables.js.es6 diff --git a/CHANGELOG b/CHANGELOG index 16f5258a275..982b4dd5e5a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -88,6 +88,7 @@ v 8.12.0 (unreleased) - Fixed invisible scroll controls on build page on iPhone - Fix error on raw build trace download for old builds stored in database !4822 - Refactor the triggers page and documentation !6217 + - Show values of CI trigger variables only when clicked (Katarzyna Kobierska Ula Budziszewska) v 8.11.5 (unreleased) - Optimize branch lookups and force a repository reload for Repository#find_branch @@ -130,9 +131,6 @@ v 8.11.2 - Show "Create Merge Request" widget for push events to fork projects on the source project. !5978 - Use gitlab-workhorse 0.7.11 !5983 - Does not halt the GitHub import process when an error occurs. !5763 - - Show value variables onclick (Katarzyna Kobierska Ula Budziszewska) - -v 8.11.1 (unreleased) - Fix file links on project page when default view is Files !5933 - Fixed enter key in search input not working !5888 diff --git a/app/assets/javascripts/build_variables.js b/app/assets/javascripts/build_variables.js deleted file mode 100644 index 3b77c1d4f37..00000000000 --- a/app/assets/javascripts/build_variables.js +++ /dev/null @@ -1,7 +0,0 @@ -$(function(){ - $('.reveal-variables').off('click').on('click',function(){ - $('.js-build-variable').toggle(); - $('.js-build-value').toggle().niceScroll(); - $('.reveal-variables').show(); - }); -}); diff --git a/app/assets/javascripts/build_variables.js.es6 b/app/assets/javascripts/build_variables.js.es6 new file mode 100644 index 00000000000..8d3e29794a1 --- /dev/null +++ b/app/assets/javascripts/build_variables.js.es6 @@ -0,0 +1,6 @@ +$(function(){ + $('.reveal-variables').off('click').on('click',function(){ + $('.js-build').toggle().niceScroll(); + $(this).hide(); + }); +}); diff --git a/app/assets/stylesheets/framework/sidebar.scss b/app/assets/stylesheets/framework/sidebar.scss index 6eae609555b..c5367c5a097 100644 --- a/app/assets/stylesheets/framework/sidebar.scss +++ b/app/assets/stylesheets/framework/sidebar.scss @@ -228,14 +228,12 @@ header.header-pinned-nav { } .js-build-variable { - color: #c7254e; - font-size: 100%; - border-radius: 5px; + color: $code-color; } .js-build-value { padding: 2px 4px; font-size: 100%; - color: #000; - background-color: #fff; + color: $black; + background-color: $white-light; } diff --git a/app/views/projects/builds/_sidebar.html.haml b/app/views/projects/builds/_sidebar.html.haml index 585cc310be3..ba5354a1690 100644 --- a/app/views/projects/builds/_sidebar.html.haml +++ b/app/views/projects/builds/_sidebar.html.haml @@ -94,8 +94,9 @@ - @build.trigger_request.variables.each do |key, value| - .hide.js-build-variable #{key} - .hide.js-build-value #{value} + .hide.js-build + .js-build-variable= key + .js-build-value= value .block .title diff --git a/spec/features/projects/builds_spec.rb b/spec/features/projects/builds_spec.rb index d5d571e49bc..ea9e33ce722 100644 --- a/spec/features/projects/builds_spec.rb +++ b/spec/features/projects/builds_spec.rb @@ -164,6 +164,26 @@ describe "Builds" do expect(page).to have_link 'Raw' end end + + describe 'Variables' do + before do + @trigger_request = create :ci_trigger_request_with_variables + @build = create :ci_build, pipeline: @commit, trigger_request: @trigger_request + visit namespace_project_build_path(@project.namespace, @project, @build) + end + + it 'shows variable key and value after click', js: true do + expect(page).to have_css('.reveal-variables') + expect(page).not_to have_css('.js-build-variable') + expect(page).not_to have_css('.js-build-value') + + find('.reveal-variables').click + + expect(page).not_to have_css('.reveal-variables') + expect(page).to have_selector('.js-build-variable', text: 'TRIGGER_KEY_1') + expect(page).to have_selector('.js-build-value', text: 'TRIGGER_VALUE_1') + end + end end describe "POST /:project/builds/:id/cancel" do diff --git a/spec/views/projects/builds/show.html.haml_spec.rb b/spec/views/projects/builds/show.html.haml_spec.rb index 1dc2048e1bc..446ba3bfa14 100644 --- a/spec/views/projects/builds/show.html.haml_spec.rb +++ b/spec/views/projects/builds/show.html.haml_spec.rb @@ -59,20 +59,10 @@ describe 'projects/builds/show' do end it 'shows trigger variables in separate lines' do - expect(rendered).to have_css('.js-build-variable', visible: false, text: variable_regexp_key('TRIGGER_KEY_1')) - expect(rendered).to have_css('.js-build-variable', visible: false, text: variable_regexp_key('TRIGGER_KEY_2')) - expect(rendered).to have_css('.js-build-value', visible: false, text: variable_regexp_value('TRIGGER_VALUE_1')) - expect(rendered).to have_css('.js-build-value', visible: false, text: variable_regexp_value('TRIGGER_VALUE_2')) + expect(rendered).to have_css('.js-build-variable', visible: false, text: 'TRIGGER_KEY_1') + expect(rendered).to have_css('.js-build-variable', visible: false, text: 'TRIGGER_KEY_2') + expect(rendered).to have_css('.js-build-value', visible: false, text: 'TRIGGER_VALUE_1') + expect(rendered).to have_css('.js-build-value', visible: false, text: 'TRIGGER_VALUE_2') end end - - private - - def variable_regexp_key(key) - /\A#{Regexp.escape("#{key}")}\Z/ - end - - def variable_regexp_value(value) - /\A#{Regexp.escape("#{value}")}\Z/ - end end From 790d7cce968260b28e451483606c44ec340f6d80 Mon Sep 17 00:00:00 2001 From: ubudzisz Date: Tue, 6 Sep 2016 11:49:40 +0200 Subject: [PATCH 25/29] improve code after review --- app/views/projects/builds/_sidebar.html.haml | 2 +- spec/features/projects/builds_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/projects/builds/_sidebar.html.haml b/app/views/projects/builds/_sidebar.html.haml index ba5354a1690..56306b05934 100644 --- a/app/views/projects/builds/_sidebar.html.haml +++ b/app/views/projects/builds/_sidebar.html.haml @@ -90,7 +90,7 @@ - if @build.trigger_request.variables %p - .btn.group.btn-group-justified.reveal-variables Reveal Variables + %button.btn.group.btn-group-justified.reveal-variables Reveal Variables - @build.trigger_request.variables.each do |key, value| diff --git a/spec/features/projects/builds_spec.rb b/spec/features/projects/builds_spec.rb index ea9e33ce722..d1685f95503 100644 --- a/spec/features/projects/builds_spec.rb +++ b/spec/features/projects/builds_spec.rb @@ -177,7 +177,7 @@ describe "Builds" do expect(page).not_to have_css('.js-build-variable') expect(page).not_to have_css('.js-build-value') - find('.reveal-variables').click + click_button 'Reveal Variables' expect(page).not_to have_css('.reveal-variables') expect(page).to have_selector('.js-build-variable', text: 'TRIGGER_KEY_1') From 651f4c8e9bae6d8e94dac02e51ef5c258c62aed0 Mon Sep 17 00:00:00 2001 From: ubudzisz Date: Tue, 6 Sep 2016 13:03:48 +0200 Subject: [PATCH 26/29] remove css selectors --- app/assets/stylesheets/framework/sidebar.scss | 11 ----------- app/assets/stylesheets/pages/builds.scss | 10 ++++++++++ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/assets/stylesheets/framework/sidebar.scss b/app/assets/stylesheets/framework/sidebar.scss index c5367c5a097..015fe3debf9 100644 --- a/app/assets/stylesheets/framework/sidebar.scss +++ b/app/assets/stylesheets/framework/sidebar.scss @@ -226,14 +226,3 @@ header.header-pinned-nav { .right-sidebar { border-left: 1px solid $border-color; } - -.js-build-variable { - color: $code-color; -} - -.js-build-value { - padding: 2px 4px; - font-size: 100%; - color: $black; - background-color: $white-light; -} diff --git a/app/assets/stylesheets/pages/builds.scss b/app/assets/stylesheets/pages/builds.scss index 23255f34710..614405aa5c1 100644 --- a/app/assets/stylesheets/pages/builds.scss +++ b/app/assets/stylesheets/pages/builds.scss @@ -115,6 +115,16 @@ width: 100%; } + .js-build-variable { + color: $code-color; + } + + .js-build-value { + padding: 2px 4px; + color: $black; + background-color: $white-light; + } + .build-sidebar-header { padding: 0 $gl-padding $gl-padding; From 86892793ca20356a0aaf9b2405eae1b9402ebf84 Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Tue, 6 Sep 2016 15:16:38 +0200 Subject: [PATCH 27/29] Updated gitlab_git to 10.6.3 This allows us to take advantage of https://gitlab.com/gitlab-org/gitlab_git/merge_requests/121. --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 620338e5997..81b7002027a 100644 --- a/Gemfile +++ b/Gemfile @@ -53,7 +53,7 @@ gem 'browser', '~> 2.2' # Extracting information from a git repository # Provide access to Gitlab::Git library -gem 'gitlab_git', '~> 10.5' +gem 'gitlab_git', '~> 10.6.3' # LDAP Auth # GitLab fork with several improvements to original library. For full list of changes diff --git a/Gemfile.lock b/Gemfile.lock index 28ede86b3ba..ab573b4d31e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -279,7 +279,7 @@ GEM diff-lcs (~> 1.1) mime-types (>= 1.16, < 3) posix-spawn (~> 0.3) - gitlab_git (10.5.0) + gitlab_git (10.6.3) activesupport (~> 4.0) charlock_holmes (~> 0.7.3) github-linguist (~> 4.7.0) @@ -858,7 +858,7 @@ DEPENDENCIES github-linguist (~> 4.7.0) github-markup (~> 1.4) gitlab-flowdock-git-hook (~> 1.0.1) - gitlab_git (~> 10.5) + gitlab_git (~> 10.6.3) gitlab_meta (= 7.0) gitlab_omniauth-ldap (~> 1.2.1) gollum-lib (~> 4.2) From b5d4511cf587ad9a3dc8e885536498d6c6c4e2dd Mon Sep 17 00:00:00 2001 From: Judson Neer Date: Mon, 5 Sep 2016 14:46:07 -0700 Subject: [PATCH 28/29] Change "check out, review, and merge locally" URL to use default clone protocol. Using the default protocol here (vs HTTP only) is more convenient when it comes to pasting these commands into a terminal. --- CHANGELOG | 1 + app/views/projects/merge_requests/show/_how_to_merge.html.haml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 982b4dd5e5a..41522857f82 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -89,6 +89,7 @@ v 8.12.0 (unreleased) - Fix error on raw build trace download for old builds stored in database !4822 - Refactor the triggers page and documentation !6217 - Show values of CI trigger variables only when clicked (Katarzyna Kobierska Ula Budziszewska) + - Use default clone protocol on "check out, review, and merge locally" help page URL v 8.11.5 (unreleased) - Optimize branch lookups and force a repository reload for Repository#find_branch diff --git a/app/views/projects/merge_requests/show/_how_to_merge.html.haml b/app/views/projects/merge_requests/show/_how_to_merge.html.haml index 571e4dd1b1a..f1d5441f9dd 100644 --- a/app/views/projects/merge_requests/show/_how_to_merge.html.haml +++ b/app/views/projects/merge_requests/show/_how_to_merge.html.haml @@ -12,7 +12,7 @@ %pre.dark#merge-info-1 - if @merge_request.for_fork? :preserve - git fetch #{h @merge_request.source_project.http_url_to_repo} #{h @merge_request.source_branch} + git fetch #{h default_url_to_repo(@merge_request.source_project)} #{h @merge_request.source_branch} git checkout -b #{h @merge_request.source_project_path}-#{h @merge_request.source_branch} FETCH_HEAD - else :preserve From 328fba3d119ecb41c0bd2454399eaef4fc9db670 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Wed, 24 Aug 2016 23:05:54 +0100 Subject: [PATCH 29/29] Changed `.commit-row-title` `line-height` to `1.35` from `1` Removed `margin-bottom` Corrected commit-actions margin Reverted action margin for a more logical approach --- app/assets/stylesheets/pages/commits.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/pages/commits.scss b/app/assets/stylesheets/pages/commits.scss index 6a58b445afa..6c2ca198f1c 100644 --- a/app/assets/stylesheets/pages/commits.scss +++ b/app/assets/stylesheets/pages/commits.scss @@ -18,8 +18,7 @@ } .commit-row-title { - line-height: 1; - margin-bottom: 7px; + line-height: 1.35; .notes_count { float: right; @@ -43,6 +42,7 @@ border: 1px solid $border-gray-dark; border-radius: $border-radius-default; margin-left: 5px; + line-height: 1; &:hover { background-color: darken($gray-light, 10%); @@ -134,7 +134,7 @@ .commit-row-info { color: $gl-gray; - line-height: 1; + line-height: 1.35; a { color: $gl-gray;