Merge branch 'master' into 'refactor-commit-show'
# Conflicts: # config/webpack.config.js
This commit is contained in:
commit
27ca41ac3c
|
|
@ -397,9 +397,9 @@ For issues related to the open source stewardship of GitLab,
|
|||
there is the ~"stewardship" label.
|
||||
|
||||
This label is to be used for issues in which the stewardship of GitLab
|
||||
is a topic of discussion. For instance if GitLab Inc. is planning to remove
|
||||
features from GitLab CE to make exclusive in GitLab EE, related issues
|
||||
would be labelled with ~"stewardship".
|
||||
is a topic of discussion. For instance if GitLab Inc. is planning to add
|
||||
features from GitLab EE to GitLab CE, related issues would be labelled with
|
||||
~"stewardship".
|
||||
|
||||
A recent example of this was the issue for
|
||||
[bringing the time tracking API to GitLab CE][time-tracking-issue].
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ const CommitPipelinesTable = Vue.extend(commitPipelinesTable);
|
|||
window.gl = window.gl || {};
|
||||
window.gl.CommitPipelinesTable = CommitPipelinesTable;
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
export default () => {
|
||||
const pipelineTableViewEl = document.querySelector('#commit-pipeline-table-view');
|
||||
|
||||
if (pipelineTableViewEl) {
|
||||
|
|
@ -43,4 +43,4 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
pipelineTableViewEl.appendChild(table.$el);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import Translate from '../../vue_shared/translate';
|
|||
|
||||
Vue.use(Translate);
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => new Vue({
|
||||
export default () => new Vue({
|
||||
el: '#environments-folder-list-view',
|
||||
components: {
|
||||
environmentsFolderApp,
|
||||
|
|
@ -32,4 +32,4 @@ document.addEventListener('DOMContentLoaded', () => new Vue({
|
|||
},
|
||||
});
|
||||
},
|
||||
}));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
import MiniPipelineGraph from '~/mini_pipeline_graph_dropdown';
|
||||
import initPipelines from '~/commit/pipelines/pipelines_bundle';
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
new MiniPipelineGraph({
|
||||
container: '.js-commit-pipeline-graph',
|
||||
}).bindEvents();
|
||||
$('.commit-info.branches').load(document.querySelector('.js-commit-box').dataset.commitPath);
|
||||
initPipelines();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
import initEnvironmentsFolderBundle from '~/environments/folder/environments_folder_bundle';
|
||||
|
||||
document.addEventListener('DOMContentLoaded', initEnvironmentsFolderBundle);
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
import Compare from '~/compare';
|
||||
import MergeRequest from '~/merge_request';
|
||||
import initPipelines from '~/commit/pipelines/pipelines_bundle';
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const mrNewCompareNode = document.querySelector('.js-merge-request-new-compare');
|
||||
|
|
@ -14,5 +15,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
new MergeRequest({ // eslint-disable-line no-new
|
||||
action: mrNewSubmitNode.dataset.mrSubmitAction,
|
||||
});
|
||||
initPipelines();
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import ShortcutsIssuable from '~/shortcuts_issuable';
|
|||
import Diff from '~/diff';
|
||||
import { handleLocationHash } from '~/lib/utils/common_utils';
|
||||
import howToMerge from '~/how_to_merge';
|
||||
import initPipelines from '~/commit/pipelines/pipelines_bundle';
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
new Diff(); // eslint-disable-line no-new
|
||||
|
|
@ -15,6 +16,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
initIssuableSidebar();
|
||||
initNotes();
|
||||
initDiffNotes();
|
||||
initPipelines();
|
||||
|
||||
const mrShowNode = document.querySelector('.merge-request');
|
||||
|
||||
|
|
|
|||
|
|
@ -196,17 +196,9 @@
|
|||
@media (min-width: $screen-sm-min) {
|
||||
font-size: 0;
|
||||
|
||||
div {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.fa-spinner {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.ci-status-link {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ module Ci
|
|||
|
||||
belongs_to :group
|
||||
|
||||
validates :key, uniqueness: { scope: :group_id }
|
||||
validates :key, uniqueness: {
|
||||
scope: :group_id,
|
||||
message: "(%{value}) has already been taken"
|
||||
}
|
||||
|
||||
scope :unprotected, -> { where(protected: false) }
|
||||
end
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ module Ci
|
|||
|
||||
belongs_to :project
|
||||
|
||||
validates :key, uniqueness: { scope: [:project_id, :environment_scope] }
|
||||
validates :key, uniqueness: {
|
||||
scope: [:project_id, :environment_scope],
|
||||
message: "(%{value}) has already been taken"
|
||||
}
|
||||
|
||||
scope :unprotected, -> { where(protected: false) }
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
# - Use `validates :xxx, uniqueness: { scope: :xxx_id }` in a child model
|
||||
class VariableDuplicatesValidator < ActiveModel::EachValidator
|
||||
def validate_each(record, attribute, value)
|
||||
return if record.errors.include?(:"#{attribute}.key")
|
||||
|
||||
if options[:scope]
|
||||
scoped = value.group_by do |variable|
|
||||
Array(options[:scope]).map { |attr| variable.send(attr) } # rubocop:disable GitlabSecurity/PublicSend
|
||||
|
|
|
|||
|
|
@ -9,4 +9,3 @@
|
|||
|
||||
- content_for :page_specific_javascripts do
|
||||
= webpack_bundle_tag('common_vue')
|
||||
= webpack_bundle_tag('commit_pipelines')
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
.avatar-cell.hidden-xs
|
||||
= author_avatar(commit, size: 36)
|
||||
|
||||
.commit-detail
|
||||
.commit-detail.flex-list
|
||||
.commit-content
|
||||
= link_to_markdown_field(commit, :title, link, class: "commit-row-message item-title")
|
||||
%span.commit-row-message.visible-xs-inline
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
- content_for :page_specific_javascripts do
|
||||
= webpack_bundle_tag('common_vue')
|
||||
= webpack_bundle_tag("environments_folder")
|
||||
|
||||
#environments-folder-list-view{ data: { endpoint: folder_project_environments_path(@project, @folder, format: :json),
|
||||
"folder-name" => @folder,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Allow Prometheus application to be installed from Cluster applications
|
||||
merge_request: 17372
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Remove duplicated error message on duplicate variable validation
|
||||
merge_request: 17135
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Fixes gpg popover layout
|
||||
merge_request: 17323
|
||||
author:
|
||||
type: fixed
|
||||
|
|
@ -48,9 +48,7 @@ var config = {
|
|||
common: './commons/index.js',
|
||||
common_vue: './vue_shared/vue_resource_interceptor.js',
|
||||
cycle_analytics: './cycle_analytics/cycle_analytics_bundle.js',
|
||||
commit_pipelines: './commit/pipelines/pipelines_bundle.js',
|
||||
environments: './environments/environments_bundle.js',
|
||||
environments_folder: './environments/folder/environments_folder_bundle.js',
|
||||
filtered_search: './filtered_search/filtered_search_bundle.js',
|
||||
help: './help/help.js',
|
||||
merge_conflicts: './merge_conflicts/merge_conflicts_bundle.js',
|
||||
|
|
@ -237,11 +235,9 @@ var config = {
|
|||
name: 'common_vue',
|
||||
chunks: [
|
||||
'boards',
|
||||
'commit_pipelines',
|
||||
'cycle_analytics',
|
||||
'deploy_keys',
|
||||
'environments',
|
||||
'environments_folder',
|
||||
'filtered_search',
|
||||
'groups',
|
||||
'merge_conflicts',
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ describe Ci::GroupVariable do
|
|||
|
||||
it { is_expected.to include_module(HasVariable) }
|
||||
it { is_expected.to include_module(Presentable) }
|
||||
it { is_expected.to validate_uniqueness_of(:key).scoped_to(:group_id) }
|
||||
it { is_expected.to validate_uniqueness_of(:key).scoped_to(:group_id).with_message(/\(\w+\) has already been taken/) }
|
||||
|
||||
describe '.unprotected' do
|
||||
subject { described_class.unprotected }
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ describe Ci::Variable do
|
|||
describe 'validations' do
|
||||
it { is_expected.to include_module(HasVariable) }
|
||||
it { is_expected.to include_module(Presentable) }
|
||||
it { is_expected.to validate_uniqueness_of(:key).scoped_to(:project_id, :environment_scope) }
|
||||
it { is_expected.to validate_uniqueness_of(:key).scoped_to(:project_id, :environment_scope).with_message(/\(\w+\) has already been taken/) }
|
||||
end
|
||||
|
||||
describe '.unprotected' do
|
||||
|
|
|
|||
|
|
@ -261,6 +261,8 @@ shared_examples 'variable list' do
|
|||
click_button('Save variables')
|
||||
wait_for_requests
|
||||
|
||||
expect(all('.js-ci-variable-list-section .js-ci-variable-error-box ul li').count).to eq(1)
|
||||
|
||||
# We check the first row because it re-sorts to alphabetical order on refresh
|
||||
page.within('.js-ci-variable-list-section') do
|
||||
expect(find('.js-ci-variable-error-box')).to have_content(/Validation failed Variables have duplicate values \(.+\)/)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ nodeExporter:
|
|||
pushgateway:
|
||||
enabled: false
|
||||
|
||||
rbac:
|
||||
create: false
|
||||
|
||||
server:
|
||||
image:
|
||||
tag: v2.1.0
|
||||
|
|
|
|||
Loading…
Reference in New Issue