Commit 8f1f6b37 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent dbd50b6e
...@@ -94,10 +94,7 @@ schedule:review-build-cng: ...@@ -94,10 +94,7 @@ schedule:review-build-cng:
variables: variables:
HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}"
DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}" DOMAIN: "-${CI_ENVIRONMENT_SLUG}.${REVIEW_APPS_DOMAIN}"
# v2.4.4 + two improvements: GITLAB_HELM_CHART_REF: "v2.5.1"
# - Allow to pass an EE license when installing the chart: https://gitlab.com/gitlab-org/charts/gitlab/merge_requests/1008
# - Allow to customize the livenessProbe for `gitlab-shell`: https://gitlab.com/gitlab-org/charts/gitlab/merge_requests/1021
GITLAB_HELM_CHART_REF: "6c655ed77e60f1f7f533afb97bef8c9cb7dc61eb"
GITLAB_EDITION: "ce" GITLAB_EDITION: "ce"
environment: environment:
name: review/${CI_COMMIT_REF_NAME} name: review/${CI_COMMIT_REF_NAME}
...@@ -135,13 +132,11 @@ review-deploy: ...@@ -135,13 +132,11 @@ review-deploy:
- .review-deploy-base - .review-deploy-base
- .only-review - .only-review
- .only:changes-code-qa - .only:changes-code-qa
needs: ["review-build-cng"]
schedule:review-deploy: schedule:review-deploy:
extends: extends:
- .review-deploy-base - .review-deploy-base
- .only-review-schedules - .only-review-schedules
needs: ["schedule:review-build-cng"]
.base-review-stop: .base-review-stop:
extends: extends:
......
12.5.0-pre 12.6.0-pre
...@@ -16,7 +16,6 @@ import '~/boards/models/project'; ...@@ -16,7 +16,6 @@ import '~/boards/models/project';
import store from '~/boards/stores'; import store from '~/boards/stores';
import boardsStore from '~/boards/stores/boards_store'; import boardsStore from '~/boards/stores/boards_store';
import ModalStore from '~/boards/stores/modal_store'; import ModalStore from '~/boards/stores/modal_store';
import BoardService from 'ee_else_ce/boards/services/board_service';
import modalMixin from '~/boards/mixins/modal_mixins'; import modalMixin from '~/boards/mixins/modal_mixins';
import '~/boards/filters/due_date_filters'; import '~/boards/filters/due_date_filters';
import Board from 'ee_else_ce/boards/components/board'; import Board from 'ee_else_ce/boards/components/board';
...@@ -97,7 +96,6 @@ export default () => { ...@@ -97,7 +96,6 @@ export default () => {
bulkUpdatePath: this.bulkUpdatePath, bulkUpdatePath: this.bulkUpdatePath,
boardId: this.boardId, boardId: this.boardId,
}); });
gl.boardService = new BoardService();
boardsStore.rootPath = this.boardsEndpoint; boardsStore.rootPath = this.boardsEndpoint;
eventHub.$on('updateTokens', this.updateTokens); eventHub.$on('updateTokens', this.updateTokens);
...@@ -116,7 +114,7 @@ export default () => { ...@@ -116,7 +114,7 @@ export default () => {
this.filterManager.setup(); this.filterManager.setup();
boardsStore.disabled = this.disabled; boardsStore.disabled = this.disabled;
gl.boardService boardsStore
.all() .all()
.then(res => res.data) .then(res => res.data)
.then(lists => { .then(lists => {
...@@ -155,7 +153,8 @@ export default () => { ...@@ -155,7 +153,8 @@ export default () => {
newIssue.setFetchingState('subscriptions', true); newIssue.setFetchingState('subscriptions', true);
setWeigthFetchingState(newIssue, true); setWeigthFetchingState(newIssue, true);
setEpicFetchingState(newIssue, true); setEpicFetchingState(newIssue, true);
BoardService.getIssueInfo(sidebarInfoEndpoint) boardsStore
.getIssueInfo(sidebarInfoEndpoint)
.then(res => res.data) .then(res => res.data)
.then(data => { .then(data => {
const { const {
...@@ -211,7 +210,8 @@ export default () => { ...@@ -211,7 +210,8 @@ export default () => {
const { issue } = boardsStore.detail; const { issue } = boardsStore.detail;
if (issue.id === id && issue.toggleSubscriptionEndpoint) { if (issue.id === id && issue.toggleSubscriptionEndpoint) {
issue.setFetchingState('subscriptions', true); issue.setFetchingState('subscriptions', true);
BoardService.toggleIssueSubscription(issue.toggleSubscriptionEndpoint) boardsStore
.toggleIssueSubscription(issue.toggleSubscriptionEndpoint)
.then(() => { .then(() => {
issue.setFetchingState('subscriptions', false); issue.setFetchingState('subscriptions', false);
issue.updateData({ issue.updateData({
......
...@@ -126,7 +126,7 @@ export default { ...@@ -126,7 +126,7 @@ export default {
/> />
<gl-dropdown <gl-dropdown
v-gl-tooltip v-gl-tooltip
class="mx-2" class="ml-auto mx-3"
toggle-class="btn btn-transparent border-0" toggle-class="btn btn-transparent border-0"
:right="true" :right="true"
:no-caret="true" :no-caret="true"
......
...@@ -7,8 +7,8 @@ import getRef from './queries/getRef.query.graphql'; ...@@ -7,8 +7,8 @@ import getRef from './queries/getRef.query.graphql';
let fetchpromise; let fetchpromise;
let resolvers = []; let resolvers = [];
export function resolveCommit(commits, { resolve, entry }) { export function resolveCommit(commits, path, { resolve, entry }) {
const commit = commits.find(c => c.fileName === entry.name && c.type === entry.type); const commit = commits.find(c => c.filePath === `${path}/${entry.name}` && c.type === entry.type);
if (commit) { if (commit) {
resolve(commit); resolve(commit);
...@@ -35,13 +35,13 @@ export function fetchLogsTree(client, path, offset, resolver = null) { ...@@ -35,13 +35,13 @@ export function fetchLogsTree(client, path, offset, resolver = null) {
.then(({ data, headers }) => { .then(({ data, headers }) => {
const headerLogsOffset = headers['more-logs-offset']; const headerLogsOffset = headers['more-logs-offset'];
const { commits } = client.readQuery({ query: getCommits }); const { commits } = client.readQuery({ query: getCommits });
const newCommitData = [...commits, ...normalizeData(data)]; const newCommitData = [...commits, ...normalizeData(data, path)];
client.writeQuery({ client.writeQuery({
query: getCommits, query: getCommits,
data: { commits: newCommitData }, data: { commits: newCommitData },
}); });
resolvers.forEach(r => resolveCommit(newCommitData, r)); resolvers.forEach(r => resolveCommit(newCommitData, path, r));
fetchpromise = null; fetchpromise = null;
......
// eslint-disable-next-line import/prefer-default-export // eslint-disable-next-line import/prefer-default-export
export function normalizeData(data, extra = () => {}) { export function normalizeData(data, path, extra = () => {}) {
return data.map(d => ({ return data.map(d => ({
sha: d.commit.id, sha: d.commit.id,
message: d.commit.message, message: d.commit.message,
committedDate: d.commit.committed_date, committedDate: d.commit.committed_date,
commitPath: d.commit_path, commitPath: d.commit_path,
fileName: d.file_name, fileName: d.file_name,
filePath: `${path}/${d.file_name}`,
type: d.type, type: d.type,
__typename: 'LogTreeCommit', __typename: 'LogTreeCommit',
...extra(d), ...extra(d),
......
# frozen_string_literal: true # frozen_string_literal: true
module Types module Types
# rubocop: disable Graphql/AuthorizeTypes
class IssuableSortEnum < SortEnum class IssuableSortEnum < SortEnum
graphql_name 'IssuableSort' graphql_name 'IssuableSort'
description 'Values for sorting issuables' description 'Values for sorting issuables'
end end
# rubocop: enable Graphql/AuthorizeTypes
end end
# frozen_string_literal: true # frozen_string_literal: true
module Types module Types
# rubocop: disable Graphql/AuthorizeTypes
class IssueSortEnum < IssuableSortEnum class IssueSortEnum < IssuableSortEnum
graphql_name 'IssueSort' graphql_name 'IssueSort'
description 'Values for sorting issues' description 'Values for sorting issues'
...@@ -10,7 +9,6 @@ module Types ...@@ -10,7 +9,6 @@ module Types
value 'DUE_DATE_DESC', 'Due date by descending order', value: 'due_date_desc' value 'DUE_DATE_DESC', 'Due date by descending order', value: 'due_date_desc'
value 'RELATIVE_POSITION_ASC', 'Relative position by ascending order', value: 'relative_position_asc' value 'RELATIVE_POSITION_ASC', 'Relative position by ascending order', value: 'relative_position_asc'
end end
# rubocop: enable Graphql/AuthorizeTypes
end end
Types::IssueSortEnum.prepend_if_ee('::EE::Types::IssueSortEnum') Types::IssueSortEnum.prepend_if_ee('::EE::Types::IssueSortEnum')
# frozen_string_literal: true # frozen_string_literal: true
module Types module Types
# rubocop: disable Graphql/AuthorizeTypes
# This is a BaseEnum through IssuableEnum, so it does not need authorization
class IssueStateEnum < IssuableStateEnum class IssueStateEnum < IssuableStateEnum
graphql_name 'IssueState' graphql_name 'IssueState'
description 'State of a GitLab issue' description 'State of a GitLab issue'
end end
# rubocop: enable Graphql/AuthorizeTypes
end end
# frozen_string_literal: true # frozen_string_literal: true
module Types module Types
# rubocop: disable Graphql/AuthorizeTypes
# This is a BaseEnum through IssuableEnum, so it does not need authorization
class MergeRequestStateEnum < IssuableStateEnum class MergeRequestStateEnum < IssuableStateEnum
graphql_name 'MergeRequestState' graphql_name 'MergeRequestState'
description 'State of a GitLab merge request' description 'State of a GitLab merge request'
value 'merged' value 'merged'
end end
# rubocop: enable Graphql/AuthorizeTypes
end end
# frozen_string_literal: true # frozen_string_literal: true
module GitHelper module GitHelper
def strip_gpg_signature(text) def strip_signature(text)
text.gsub(/-----BEGIN PGP SIGNATURE-----(.*)-----END PGP SIGNATURE-----/m, "") text.gsub(/-----BEGIN PGP SIGNATURE-----(.*)-----END PGP SIGNATURE-----/m, "")
text.gsub(/-----BEGIN PGP MESSAGE-----(.*)-----END PGP MESSAGE-----/m, "")
text.gsub(/-----BEGIN SIGNED MESSAGE-----(.*)-----END SIGNED MESSAGE-----/m, "")
end end
def short_sha(text) def short_sha(text)
......
...@@ -7,7 +7,7 @@ if commit ...@@ -7,7 +7,7 @@ if commit
xml.id tag_url xml.id tag_url
xml.link href: tag_url xml.link href: tag_url
xml.title truncate(tag.name, length: 80) xml.title truncate(tag.name, length: 80)
xml.summary strip_gpg_signature(tag.message) xml.summary strip_signature(tag.message)
xml.content markdown_field(release, :description), type: 'html' xml.content markdown_field(release, :description), type: 'html'
xml.updated release.updated_at.xmlschema if release xml.updated release.updated_at.xmlschema if release
xml.media :thumbnail, width: '40', height: '40', url: image_url(avatar_icon_for_email(commit.author_email)) xml.media :thumbnail, width: '40', height: '40', url: image_url(avatar_icon_for_email(commit.author_email))
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
- if tag.message.present? - if tag.message.present?
&nbsp; &nbsp;
= strip_gpg_signature(tag.message) = strip_signature(tag.message)
- if commit - if commit
.block-truncated .block-truncated
......
- user = user_email = nil
- if @tag.tagger
- user_email = @tag.tagger.email
- user = User.find_by_any_email(user_email)
- add_to_breadcrumbs s_('TagsPage|Tags'), project_tags_path(@project) - add_to_breadcrumbs s_('TagsPage|Tags'), project_tags_path(@project)
- breadcrumb_title @tag.name - breadcrumb_title @tag.name
- page_title @tag.name, s_('TagsPage|Tags') - page_title @tag.name, s_('TagsPage|Tags')
...@@ -11,6 +15,24 @@ ...@@ -11,6 +15,24 @@
- if protected_tag?(@project, @tag) - if protected_tag?(@project, @tag)
%span.badge.badge-success %span.badge.badge-success
= s_('TagsPage|protected') = s_('TagsPage|protected')
- if user
= link_to user_path(user) do
%div
= user_avatar_without_link(user: user, size: 32, css_class: "mt-1 mb-1")
%div
%strong= user.name
%div= user.to_reference
- elsif user_email
= mail_to user_email do
%div
= user_avatar_without_link(user_email: user_email, size: 32, css_class: "mt-1 mb-1")
%div{ :class => "clearfix" }
%strong= user_email
- if @commit - if @commit
= render 'projects/branches/commit', commit: @commit, project: @project = render 'projects/branches/commit', commit: @commit, project: @project
- else - else
...@@ -33,7 +55,7 @@ ...@@ -33,7 +55,7 @@
- if @tag.message.present? - if @tag.message.present?
%pre.wrap %pre.wrap
= strip_gpg_signature(@tag.message) = strip_signature(@tag.message)
.append-bottom-default.prepend-top-default .append-bottom-default.prepend-top-default
- if @release.description.present? - if @release.description.present?
......
---
title: Add possibility to save max issue weight on lists
merge_request: 19220
author:
type: added
---
title: Removed all references of BoardService
merge_request: 20144
author: nuwe1
type: other
---
title: add tagger within tag view
merge_request: 19681
author: Roger Meier
type: added
---
title: Upgrade to Gitaly v1.74.0
merge_request: 20706
author:
type: changed
---
title: Fix dropdown location on the monitoring charts
merge_request: 20400
author:
type: fixed
# frozen_string_literal: true
class AddMaxIssueWeightToList < ActiveRecord::Migration[5.2]
include Gitlab::Database::MigrationHelpers
disable_ddl_transaction!
DOWNTIME = false
def up
add_column_with_default :lists, :max_issue_weight, :integer, default: 0
end
def down
remove_column :lists, :max_issue_weight
end
end
...@@ -2251,6 +2251,7 @@ ActiveRecord::Schema.define(version: 2019_11_19_023952) do ...@@ -2251,6 +2251,7 @@ ActiveRecord::Schema.define(version: 2019_11_19_023952) do
t.integer "user_id" t.integer "user_id"
t.integer "milestone_id" t.integer "milestone_id"
t.integer "max_issue_count", default: 0, null: false t.integer "max_issue_count", default: 0, null: false
t.integer "max_issue_weight", default: 0, null: false
t.index ["board_id", "label_id"], name: "index_lists_on_board_id_and_label_id", unique: true t.index ["board_id", "label_id"], name: "index_lists_on_board_id_and_label_id", unique: true
t.index ["label_id"], name: "index_lists_on_label_id" t.index ["label_id"], name: "index_lists_on_label_id"
t.index ["list_type"], name: "index_lists_on_list_type" t.index ["list_type"], name: "index_lists_on_list_type"
......
...@@ -49,7 +49,8 @@ Example response: ...@@ -49,7 +49,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 1, "position" : 1,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
}, },
{ {
"id" : 2, "id" : 2,
...@@ -59,7 +60,8 @@ Example response: ...@@ -59,7 +60,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 2, "position" : 2,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
}, },
{ {
"id" : 3, "id" : 3,
...@@ -69,7 +71,8 @@ Example response: ...@@ -69,7 +71,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 3, "position" : 3,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
} }
] ]
} }
...@@ -121,7 +124,8 @@ Example response: ...@@ -121,7 +124,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 1, "position" : 1,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
}, },
{ {
"id" : 2, "id" : 2,
...@@ -131,7 +135,8 @@ Example response: ...@@ -131,7 +135,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 2, "position" : 2,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
}, },
{ {
"id" : 3, "id" : 3,
...@@ -141,7 +146,8 @@ Example response: ...@@ -141,7 +146,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 3, "position" : 3,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
} }
] ]
} }
...@@ -192,7 +198,8 @@ Example response: ...@@ -192,7 +198,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 1, "position" : 1,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
}, },
{ {
"id" : 2, "id" : 2,
...@@ -202,7 +209,8 @@ Example response: ...@@ -202,7 +209,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 2, "position" : 2,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
}, },
{ {
"id" : 3, "id" : 3,
...@@ -212,7 +220,8 @@ Example response: ...@@ -212,7 +220,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 3, "position" : 3,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
} }
] ]
} }
...@@ -346,7 +355,8 @@ Example response: ...@@ -346,7 +355,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 1, "position" : 1,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
}, },
{ {
"id" : 2, "id" : 2,
...@@ -356,7 +366,8 @@ Example response: ...@@ -356,7 +366,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 2, "position" : 2,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
}, },
{ {
"id" : 3, "id" : 3,
...@@ -366,7 +377,8 @@ Example response: ...@@ -366,7 +377,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 3, "position" : 3,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
} }
] ]
``` ```
...@@ -400,7 +412,8 @@ Example response: ...@@ -400,7 +412,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 1, "position" : 1,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
} }
``` ```
...@@ -441,7 +454,8 @@ Example response: ...@@ -441,7 +454,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 1, "position" : 1,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
} }
``` ```
...@@ -475,7 +489,8 @@ Example response: ...@@ -475,7 +489,8 @@ Example response:
"description" : null "description" : null
}, },
"position" : 1, "position" : 1,
"max_issue_count": 0 "max_issue_count": 0,
"max_issue_weight": 0
} }
``` ```
......
...@@ -181,6 +181,10 @@ vulnerabilities must be either empty or containing: ...@@ -181,6 +181,10 @@ vulnerabilities must be either empty or containing:
Maintainers should **never** dismiss vulnerabilities to "empty" the list, Maintainers should **never** dismiss vulnerabilities to "empty" the list,
without duly verifying them. without duly verifying them.
Note that certain Merge Requests may target a stable branch. These are rare
events. These types of Merge Requests cannot be merged by the Maintainer.
Instead these should be sent to the [Release Manager](https://about.gitlab.com/community/release-managers/).
## Best practices ## Best practices
### Everyone ### Everyone
......
...@@ -191,8 +191,8 @@ subgraph "`review-prepare` stage" ...@@ -191,8 +191,8 @@ subgraph "`review-prepare` stage"
end end
subgraph "`review` stage" subgraph "`review` stage"
G --> |needs| E; G
G2 --> |needs| E; G2
end end
subgraph "`qa` stage" subgraph "`qa` stage"
......
...@@ -129,6 +129,10 @@ two node pools: ...@@ -129,6 +129,10 @@ two node pools:
### Helm/Tiller ### Helm/Tiller
The Helm/Tiller version used is defined in the
[`registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-charts-build-base` image](https://gitlab.com/gitlab-org/gitlab-build-images/blob/master/Dockerfile.gitlab-charts-build-base#L4)
used by the `review-deploy` and `review-stop` jobs.
The `tiller` deployment (the Helm server) is deployed to a dedicated node pool The `tiller` deployment (the Helm server) is deployed to a dedicated node pool
that has the `app=helm` label and a specific that has the `app=helm` label and a specific
[taint](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/) [taint](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)
......
...@@ -62,6 +62,10 @@ module Gitlab ...@@ -62,6 +62,10 @@ module Gitlab
encode! @message encode! @message
end end
def tagger
@raw_tag.tagger
end
private private
def message_from_gitaly_tag def message_from_gitaly_tag
......
...@@ -137,14 +137,7 @@ module Gitlab ...@@ -137,14 +137,7 @@ module Gitlab
def ordering_from_encoded_json(cursor) def ordering_from_encoded_json(cursor)
JSON.parse(decode(cursor)) JSON.parse(decode(cursor))
rescue JSON::ParserError rescue JSON::ParserError
# for the transition period where a client might request using an raise Gitlab::Graphql::Errors::ArgumentError, "Please provide a valid cursor"
# old style cursor. Once removed, make it an error:
# raise Gitlab::Graphql::Errors::ArgumentError, "Please provide a valid cursor"
# TODO can be removed in next release
# https://gitlab.com/gitlab-org/gitlab/issues/32933
field_name = order_list.first.attribute_name
{ field_name => decode(cursor) }
end end
end end
end end
......
...@@ -34,7 +34,10 @@ module RuboCop ...@@ -34,7 +34,10 @@ module RuboCop
end end
def whitelisted?(class_node) def whitelisted?(class_node)
return false unless class_node&.const_name class_const = class_node&.const_name
return false unless class_const
return true if class_const.end_with?('Enum')
WHITELISTED_TYPES.any? { |whitelisted| class_node.const_name.include?(whitelisted) } WHITELISTED_TYPES.any? { |whitelisted| class_node.const_name.include?(whitelisted) }
end end
......
...@@ -141,6 +141,7 @@ function install_tiller() { ...@@ -141,6 +141,7 @@ function install_tiller() {
--tiller-namespace "${namespace}" \ --tiller-namespace "${namespace}" \
--wait \ --wait \
--upgrade \ --upgrade \
--force-upgrade \
--node-selectors "app=helm" \ --node-selectors "app=helm" \
--replicas 3 \ --replicas 3 \
--override "spec.template.spec.tolerations[0].key"="dedicated" \ --override "spec.template.spec.tolerations[0].key"="dedicated" \
...@@ -214,6 +215,21 @@ function create_application_secret() { ...@@ -214,6 +215,21 @@ function create_application_secret() {
--dry-run -o json | kubectl apply -f - --dry-run -o json | kubectl apply -f -
} }
function label_application_secret() {
local namespace="${KUBE_NAMESPACE}"
local release="${CI_ENVIRONMENT_SLUG}"
echoinfo "Labeling the ${release}-gitlab-initial-root-password and ${release}-gitlab-license secrets in the ${namespace} namespace..." true
kubectl label secret --namespace "${namespace}" \
"${release}-gitlab-initial-root-password" \
release="${release}"
kubectl label secret --namespace "${namespace}" \
"${release}-gitlab-license" \
release="${release}"
}
function download_chart() { function download_chart() {
echoinfo "Downloading the GitLab chart..." true echoinfo "Downloading the GitLab chart..." true
...@@ -254,6 +270,7 @@ function deploy() { ...@@ -254,6 +270,7 @@ function deploy() {
gitlab_workhorse_image_repository="${IMAGE_REPOSITORY}/gitlab-workhorse-${edition}" gitlab_workhorse_image_repository="${IMAGE_REPOSITORY}/gitlab-workhorse-${edition}"
create_application_secret create_application_secret
label_application_secret
HELM_CMD=$(cat << EOF HELM_CMD=$(cat << EOF
helm upgrade \ helm upgrade \
......
...@@ -6,6 +6,7 @@ FactoryBot.define do ...@@ -6,6 +6,7 @@ FactoryBot.define do
label label
list_type { :label } list_type { :label }
max_issue_count { 0 } max_issue_count { 0 }
max_issue_weight { 0 }
sequence(:position) sequence(:position)
end end
......
...@@ -36,7 +36,8 @@ ...@@ -36,7 +36,8 @@
}, },
"title": { "type": "string" }, "title": { "type": "string" },
"position": { "type": ["integer", "null"] }, "position": { "type": ["integer", "null"] },
"max_issue_count": { "type": "integer" } "max_issue_count": { "type": "integer" },
"max_issue_weight": { "type": "integer" }
}, },
"additionalProperties": true "additionalProperties": true
} }
...@@ -77,7 +77,8 @@ ...@@ -77,7 +77,8 @@
} }
}, },
"position": { "type": ["integer", "null"] }, "position": { "type": ["integer", "null"] },
"max_issue_count": { "type": "integer" } "max_issue_count": { "type": "integer" },
"max_issue_weight": { "type": "integer" }
}, },
"additionalProperties": false "additionalProperties": false
} }
......
...@@ -21,11 +21,18 @@ describe('resolveCommit', () => { ...@@ -21,11 +21,18 @@ describe('resolveCommit', () => {
entry: { name: 'index.js', type: 'blob' }, entry: { name: 'index.js', type: 'blob' },
resolve: jest.fn(), resolve: jest.fn(),
}; };
const commits = [{ fileName: 'index.js', type: 'blob' }]; const commits = [
{ fileName: 'index.js', filePath: '/index.js', type: 'blob' },
resolveCommit(commits, resolver); { fileName: 'index.js', filePath: '/app/assets/index.js', type: 'blob' },
];
expect(resolver.resolve).toHaveBeenCalledWith({ fileName: 'index.js', type: 'blob' });
resolveCommit(commits, '', resolver);
expect(resolver.resolve).toHaveBeenCalledWith({
fileName: 'index.js',
filePath: '/index.js',
type: 'blob',
});
}); });
}); });
...@@ -84,6 +91,7 @@ describe('fetchLogsTree', () => { ...@@ -84,6 +91,7 @@ describe('fetchLogsTree', () => {
commitPath: 'https://test.com', commitPath: 'https://test.com',
committedDate: '2019-01-01', committedDate: '2019-01-01',
fileName: 'index.js', fileName: 'index.js',
filePath: '/index.js',
message: 'testing message', message: 'testing message',
sha: '123', sha: '123',
type: 'blob', type: 'blob',
...@@ -101,6 +109,7 @@ describe('fetchLogsTree', () => { ...@@ -101,6 +109,7 @@ describe('fetchLogsTree', () => {
commitPath: 'https://test.com', commitPath: 'https://test.com',
committedDate: '2019-01-01', committedDate: '2019-01-01',
fileName: 'index.js', fileName: 'index.js',
filePath: '/index.js',
message: 'testing message', message: 'testing message',
sha: '123', sha: '123',
type: 'blob', type: 'blob',
......
...@@ -15,13 +15,14 @@ const mockData = [ ...@@ -15,13 +15,14 @@ const mockData = [
describe('normalizeData', () => { describe('normalizeData', () => {
it('normalizes data into LogTreeCommit object', () => { it('normalizes data into LogTreeCommit object', () => {
expect(normalizeData(mockData)).toEqual([ expect(normalizeData(mockData, '')).toEqual([
{ {
sha: '123', sha: '123',
message: 'testing message', message: 'testing message',
committedDate: '2019-01-01', committedDate: '2019-01-01',
commitPath: 'https://test.com', commitPath: 'https://test.com',
fileName: 'index.js', fileName: 'index.js',
filePath: '/index.js',
type: 'blob', type: 'blob',
__typename: 'LogTreeCommit', __typename: 'LogTreeCommit',
}, },
......
...@@ -218,23 +218,11 @@ describe Gitlab::Graphql::Connections::Keyset::Connection do ...@@ -218,23 +218,11 @@ describe Gitlab::Graphql::Connections::Keyset::Connection do
end end
end end
# TODO Enable this as part of below issue context 'when an invalid cursor is provided' do
# https://gitlab.com/gitlab-org/gitlab/issues/32933 let(:arguments) { { before: Base64Bp.urlsafe_encode64('invalidcursor', padding: false) } }
# context 'when an invalid cursor is provided' do
# let(:arguments) { { before: 'invalidcursor' } }
#
# it 'raises an error' do
# expect { expect(subject.sliced_nodes) }.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
# end
# end
# TODO Remove this as part of below issue
# https://gitlab.com/gitlab-org/gitlab/issues/32933
context 'when an old style cursor is provided' do
let(:arguments) { { before: Base64Bp.urlsafe_encode64(projects[1].id.to_s, padding: false) } }
it 'only returns the project before the selected one' do it 'raises an error' do
expect(subject.sliced_nodes).to contain_exactly(projects.first) expect { subject.sliced_nodes }.to raise_error(Gitlab::Graphql::Errors::ArgumentError)
end end
end end
end end
......
...@@ -728,6 +728,7 @@ List: ...@@ -728,6 +728,7 @@ List:
- milestone_id - milestone_id
- user_id - user_id
- max_issue_count - max_issue_count
- max_issue_weight
ExternalPullRequest: ExternalPullRequest:
- id - id
- created_at - created_at
......
...@@ -79,5 +79,15 @@ describe RuboCop::Cop::Graphql::AuthorizeTypes do ...@@ -79,5 +79,15 @@ describe RuboCop::Cop::Graphql::AuthorizeTypes do
end end
TYPE TYPE
end end
it 'does not add an offense for Enums' do
expect_no_offenses(<<~TYPE)
module Types
class ATypeEnum < AnotherEnum
field :a_thing
end
end
TYPE
end
end end
end end
...@@ -3213,17 +3213,17 @@ cyclist@~0.2.2: ...@@ -3213,17 +3213,17 @@ cyclist@~0.2.2:
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
d3-array@1, d3-array@1.2.1, d3-array@^1.1.1, d3-array@^1.2.0, d3-array@^1.2.1: d3-array@1, d3-array@1.2.1, d3-array@^1.1.1, d3-array@^1.2.0:
version "1.2.1" version "1.2.1"
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.1.tgz#d1ca33de2f6ac31efadb8e050a021d7e2396d5dc"
integrity sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw== integrity sha512-CyINJQ0SOUHojDdFDH4JEM0552vCR1utGyLHegJHyYH0JyCpSeTPxi4OBqHMA2jJZq4NH782LtaJWBImqI/HBw==
d3-axis@1, d3-axis@1.0.8, d3-axis@^1.0.8: d3-axis@1, d3-axis@1.0.8:
version "1.0.8" version "1.0.8"
resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa" resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.8.tgz#31a705a0b535e65759de14173a31933137f18efa"
integrity sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo= integrity sha1-MacFoLU15ldZ3hQXOjGTMTfxjvo=
d3-brush@1, d3-brush@1.0.4, d3-brush@^1.0.4: d3-brush@1, d3-brush@1.0.4:
version "1.0.4" version "1.0.4"
resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz#00c2f238019f24f6c0a194a26d41a1530ffe7bc4" resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.0.4.tgz#00c2f238019f24f6c0a194a26d41a1530ffe7bc4"
integrity sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q= integrity sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=
...@@ -3281,7 +3281,7 @@ d3-dsv@1, d3-dsv@1.0.8: ...@@ -3281,7 +3281,7 @@ d3-dsv@1, d3-dsv@1.0.8:
iconv-lite "0.4" iconv-lite "0.4"
rw "1" rw "1"
d3-ease@1, d3-ease@1.0.3, d3-ease@^1.0.3: d3-ease@1, d3-ease@1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e" resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.3.tgz#68bfbc349338a380c44d8acc4fbc3304aa2d8c0e"
integrity sha1-aL+8NJM4o4DETYrMT7wzBKotjA4= integrity sha1-aL+8NJM4o4DETYrMT7wzBKotjA4=
...@@ -3400,21 +3400,21 @@ d3-selection@1, d3-selection@1.3.0, d3-selection@^1.1.0, d3-selection@^1.2.0: ...@@ -3400,21 +3400,21 @@ d3-selection@1, d3-selection@1.3.0, d3-selection@^1.1.0, d3-selection@^1.2.0:
resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.0.tgz#d53772382d3dc4f7507bfb28bcd2d6aed2a0ad6d" resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.3.0.tgz#d53772382d3dc4f7507bfb28bcd2d6aed2a0ad6d"
integrity sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA== integrity sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==
d3-shape@1, d3-shape@1.2.0, d3-shape@^1.2.0: d3-shape@1, d3-shape@1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz#45d01538f064bafd05ea3d6d2cb748fd8c41f777" resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.2.0.tgz#45d01538f064bafd05ea3d6d2cb748fd8c41f777"
integrity sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c= integrity sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=
dependencies: dependencies:
d3-path "1" d3-path "1"
d3-time-format@2, d3-time-format@2.1.1, d3-time-format@^2.1.1: d3-time-format@2, d3-time-format@2.1.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz#85b7cdfbc9ffca187f14d3c456ffda268081bb31" resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.1.1.tgz#85b7cdfbc9ffca187f14d3c456ffda268081bb31"
integrity sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw== integrity sha512-8kAkymq2WMfzW7e+s/IUNAtN/y3gZXGRrdGfo6R8NKPAA85UBTxZg5E61bR6nLwjPjj4d3zywSQe1CkYLPFyrw==
dependencies: dependencies:
d3-time "1" d3-time "1"
d3-time@1, d3-time@1.0.8, d3-time@^1.0.8: d3-time@1, d3-time@1.0.8:
version "1.0.8" version "1.0.8"
resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz#dbd2d6007bf416fe67a76d17947b784bffea1e84" resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.0.8.tgz#dbd2d6007bf416fe67a76d17947b784bffea1e84"
integrity sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ== integrity sha512-YRZkNhphZh3KcnBfitvF3c6E0JOFGikHZ4YqD+Lzv83ZHn1/u6yGenRU1m+KAk9J1GnZMnKcrtfvSktlA1DXNQ==
...@@ -3424,7 +3424,7 @@ d3-timer@1, d3-timer@1.0.7: ...@@ -3424,7 +3424,7 @@ d3-timer@1, d3-timer@1.0.7:
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531" resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.7.tgz#df9650ca587f6c96607ff4e60cc38229e8dd8531"
integrity sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA== integrity sha512-vMZXR88XujmG/L5oB96NNKH5lCWwiLM/S2HyyAQLcjWJCloK5shxta4CwOFYLZoY3AWX73v8Lgv4cCAdWtRmOA==
d3-transition@1, d3-transition@1.1.1, d3-transition@^1.1.1: d3-transition@1, d3-transition@1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.1.tgz#d8ef89c3b848735b060e54a39b32aaebaa421039" resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.1.1.tgz#d8ef89c3b848735b060e54a39b32aaebaa421039"
integrity sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ== integrity sha512-xeg8oggyQ+y5eb4J13iDgKIjUcEfIOZs2BqV/eEmXm2twx80wTzJ4tB4vaZ5BKfz7XsI/DFmQL5me6O27/5ykQ==
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment