Commit c67e1c42 authored by 🤖 GitLab Bot 🤖's avatar 🤖 GitLab Bot 🤖

Merge branch 'ce-to-ee-2018-10-15' into 'master'

CE upstream - 2018-10-15 08:27 UTC

See merge request gitlab-org/gitlab-ee!7923
parents 75e6ab53 f436ec3a
<script> <script>
import $ from 'jquery'; import $ from 'jquery';
import { glEmojiTag } from '~/emoji';
import detailedMetric from './detailed_metric.vue'; import detailedMetric from './detailed_metric.vue';
import requestSelector from './request_selector.vue'; import requestSelector from './request_selector.vue';
...@@ -64,6 +65,16 @@ export default { ...@@ -64,6 +65,16 @@ export default {
lineProfileModal() { lineProfileModal() {
return $('#modal-peek-line-profile'); return $('#modal-peek-line-profile');
}, },
hasHost() {
return this.currentRequest && this.currentRequest.details && this.currentRequest.details.host;
},
birdEmoji() {
if (this.hasHost && this.currentRequest.details.host.canary) {
return glEmojiTag('baby_chick');
}
return '';
},
}, },
mounted() { mounted() {
this.currentRequest = this.requestId; this.currentRequest = this.requestId;
...@@ -93,9 +104,11 @@ export default { ...@@ -93,9 +104,11 @@ export default {
class="view" class="view"
> >
<span <span
v-if="currentRequest.details" v-if="hasHost"
class="current-host" class="current-host"
:class="{ 'canary' : currentRequest.details.host.canary }"
> >
<span v-html="birdEmoji"></span>
{{ currentRequest.details.host.hostname }} {{ currentRequest.details.host.hostname }}
</span> </span>
</div> </div>
......
...@@ -162,18 +162,20 @@ ...@@ -162,18 +162,20 @@
<span class="label-branch"> <span class="label-branch">
<a :href="mr.targetBranchPath">{{ mr.targetBranch }}</a> <a :href="mr.targetBranchPath">{{ mr.targetBranch }}</a>
</span> </span>
with <template v-if="mr.mergeCommitSha">
<a with
:href="mr.mergeCommitPath" <a
class="commit-sha js-mr-merged-commit-sha" :href="mr.mergeCommitPath"
v-text="mr.shortMergeCommitSha" class="commit-sha js-mr-merged-commit-sha"
> v-text="mr.shortMergeCommitSha"
</a> >
<clipboard-button </a>
:title="__('Copy commit SHA to clipboard')" <clipboard-button
:text="mr.mergeCommitSha" :title="__('Copy commit SHA to clipboard')"
css-class="btn-default btn-transparent btn-clipboard js-mr-merged-copy-sha" :text="mr.mergeCommitSha"
/> css-class="btn-default btn-transparent btn-clipboard js-mr-merged-copy-sha"
/>
</template>
</p> </p>
<p v-if="mr.sourceBranchRemoved"> <p v-if="mr.sourceBranchRemoved">
{{ s__("mrWidget|The source branch has been removed") }} {{ s__("mrWidget|The source branch has been removed") }}
......
...@@ -625,6 +625,7 @@ $perf-bar-development: #4c1210; ...@@ -625,6 +625,7 @@ $perf-bar-development: #4c1210;
$perf-bar-bucket-bg: #111; $perf-bar-bucket-bg: #111;
$perf-bar-bucket-box-shadow-from: rgba($white-light, 0.2); $perf-bar-bucket-box-shadow-from: rgba($white-light, 0.2);
$perf-bar-bucket-box-shadow-to: rgba($black, 0.25); $perf-bar-bucket-box-shadow-to: rgba($black, 0.25);
$perf-bar-canary-text: $orange-400;
/* /*
Issuable warning Issuable warning
......
...@@ -68,6 +68,10 @@ ...@@ -68,6 +68,10 @@
} }
} }
.current-host.canary {
color: $perf-bar-canary-text;
}
strong { strong {
color: $white-light; color: $white-light;
} }
......
---
title: Fix 'merged with' UI being displayed when merge request has no merge commit
merge_request: 22022
author:
type: fixed
---
title: Show canary status in the performance bar
merge_request: 22222
author:
type: changed
---
title: Enable some frozen string in lib/gitlab
merge_request:
author: gfyoung
type: performance
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
## ##
......
# frozen_string_literal: true
# These calls help to authenticate to OAuth provider by providing username and password # These calls help to authenticate to OAuth provider by providing username and password
# #
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
class IpRateLimiter class IpRateLimiter
......
# frozen_string_literal: true
# LDAP authorization model # LDAP authorization model
# #
# * Check if we are allowed access (not blocked) # * Check if we are allowed access (not blocked)
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
module LDAP module LDAP
......
# frozen_string_literal: true
# Class to parse and transform the info provided by omniauth # Class to parse and transform the info provided by omniauth
# #
module Gitlab module Gitlab
......
# frozen_string_literal: true
# These calls help to authenticate to LDAP by providing username and password # These calls help to authenticate to LDAP by providing username and password
# #
# Since multiple LDAP servers are supported, it will loop through all of them # Since multiple LDAP servers are supported, it will loop through all of them
......
# frozen_string_literal: true
# Load a specific server configuration # Load a specific server configuration
module Gitlab module Gitlab
module Auth module Auth
......
# -*- ruby encoding: utf-8 -*- # -*- ruby encoding: utf-8 -*-
# frozen_string_literal: true
# Based on the `ruby-net-ldap` gem's `Net::LDAP::DN` # Based on the `ruby-net-ldap` gem's `Net::LDAP::DN`
# #
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
module LDAP module LDAP
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
module LDAP module LDAP
......
# frozen_string_literal: true
# LDAP extension for User model # LDAP extension for User model
# #
# * Find or create user from omniauth.auth data # * Find or create user from omniauth.auth data
......
# frozen_string_literal: true
# Class to parse and transform the info provided by omniauth # Class to parse and transform the info provided by omniauth
# #
module Gitlab module Gitlab
......
# frozen_string_literal: true
# These calls help to authenticate to OAuth provider by providing username and password # These calls help to authenticate to OAuth provider by providing username and password
# #
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
module OAuth module OAuth
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
module OAuth module OAuth
......
# frozen_string_literal: true
# :nocov: # :nocov:
module Gitlab module Gitlab
module Auth module Auth
......
# frozen_string_literal: true
# OAuth extension for User model # OAuth extension for User model
# #
# * Find GitLab user based on omniauth uid and provider # * Find GitLab user based on omniauth uid and provider
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
class OmniauthIdentityLinkerBase class OmniauthIdentityLinkerBase
......
# frozen_string_literal: true
# Use for authentication only, in particular for Rack::Attack. # Use for authentication only, in particular for Rack::Attack.
# Does not perform authorization of scopes, etc. # Does not perform authorization of scopes, etc.
module Gitlab module Gitlab
......
module Gitlab # rubocop:disable Naming/FileName # rubocop:disable Naming/FileName
# frozen_string_literal: true
module Gitlab
module Auth module Auth
Result = Struct.new(:actor, :project, :type, :authentication_abilities) do Result = Struct.new(:actor, :project, :type, :authentication_abilities) do
prepend ::EE::Gitlab::Auth::Result prepend ::EE::Gitlab::Auth::Result
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
module Saml module Saml
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
module Saml module Saml
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
module Saml module Saml
......
# frozen_string_literal: true
# SAML extension for User model # SAML extension for User model
# #
# * Find GitLab user based on SAML uid and provider # * Find GitLab user based on SAML uid and provider
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
class TooManyIps < StandardError class TooManyIps < StandardError
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
class UniqueIpsLimiter class UniqueIpsLimiter
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
class UserAccessDeniedReason class UserAccessDeniedReason
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Auth module Auth
AuthenticationError = Class.new(StandardError) AuthenticationError = Class.new(StandardError)
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
class Base class Base
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
module Coverage module Coverage
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
module Coverage module Coverage
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
module Coverage module Coverage
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
## ##
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
module Pipeline module Pipeline
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
module Pipeline module Pipeline
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
module Pipeline module Pipeline
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Badge module Badge
## ##
......
# frozen_string_literal: true
module Gitlab module Gitlab
module BareRepositoryImport module BareRepositoryImport
class Importer class Importer
NoAdminError = Class.new(StandardError) NoAdminError = Class.new(StandardError)
def self.execute(import_path) def self.execute(import_path)
import_path << '/' unless import_path.ends_with?('/') unless import_path.ends_with?('/')
import_path = "#{import_path}/"
end
repos_to_import = Dir.glob(import_path + '**/*.git') repos_to_import = Dir.glob(import_path + '**/*.git')
unless user = User.admins.order_id_asc.first unless user = User.admins.order_id_asc.first
......
# frozen_string_literal: true
module Gitlab module Gitlab
module BareRepositoryImport module BareRepositoryImport
class Repository class Repository
...@@ -6,9 +8,12 @@ module Gitlab ...@@ -6,9 +8,12 @@ module Gitlab
attr_reader :group_path, :project_name, :repo_path attr_reader :group_path, :project_name, :repo_path
def initialize(root_path, repo_path) def initialize(root_path, repo_path)
unless root_path.ends_with?('/')
root_path = "#{root_path}/"
end
@root_path = root_path @root_path = root_path
@repo_path = repo_path @repo_path = repo_path
@root_path << '/' unless root_path.ends_with?('/')
full_path = full_path =
if hashed? && !wiki? if hashed? && !wiki?
......
# frozen_string_literal: true
module Gitlab module Gitlab
module BitbucketImport module BitbucketImport
class Importer class Importer
......
# frozen_string_literal: true
module Gitlab module Gitlab
module BitbucketImport module BitbucketImport
class ProjectCreator class ProjectCreator
......
# frozen_string_literal: true
module Gitlab module Gitlab
module BitbucketServerImport module BitbucketServerImport
class ProjectCreator class ProjectCreator
......
# frozen_string_literal: true
# This class is not backed by a table in the main database. # This class is not backed by a table in the main database.
# It loads the latest Pipeline for the HEAD of a repository, and caches that # It loads the latest Pipeline for the HEAD of a repository, and caches that
# in Redis. # in Redis.
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Cache module Cache
# See https://docs.gitlab.com/ee/development/utilities.html#requestcache # See https://docs.gitlab.com/ee/development/utilities.html#requestcache
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Checks module Checks
class ChangeAccess class ChangeAccess
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Checks module Checks
class CommitCheck class CommitCheck
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Checks module Checks
class ForcePush class ForcePush
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Checks module Checks
class LfsIntegrity class LfsIntegrity
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Checks module Checks
class MatchingMergeRequest class MatchingMergeRequest
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Checks module Checks
class PostPushMessage class PostPushMessage
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Checks module Checks
class ProjectCreated < PostPushMessage class ProjectCreated < PostPushMessage
......
# frozen_string_literal: true
module Gitlab module Gitlab
module Checks module Checks
class ProjectMoved < PostPushMessage class ProjectMoved < PostPushMessage
......
...@@ -2,33 +2,33 @@ ...@@ -2,33 +2,33 @@
image: openjdk:8-jdk image: openjdk:8-jdk
variables: variables:
ANDROID_COMPILE_SDK: "25" ANDROID_COMPILE_SDK: "28"
ANDROID_BUILD_TOOLS: "24.0.0" ANDROID_BUILD_TOOLS: "28.0.3"
ANDROID_SDK_TOOLS: "24.4.1" ANDROID_SDK_TOOLS: "26.1.1"
before_script: before_script:
- apt-get --quiet update --yes - apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.tgz https://dl.google.com/android/android-sdk_r${ANDROID_SDK_TOOLS}-linux.tgz - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
- tar --extract --gzip --file=android-sdk.tgz - unzip android-sdk.zip -d android-sdk-linux
- echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_COMPILE_SDK} - echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" > /dev/null
- echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter platform-tools - echo y | android-sdk-linux/tools/bin/sdkmanager platform-tools > /dev/null
- echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter build-tools-${ANDROID_BUILD_TOOLS} - echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" > /dev/null
- echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository - echo y | android-sdk-linux/tools/bin/sdkmanager "extras;google;google_play_services" > /dev/null
- echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services - echo y | android-sdk-linux/tools/bin/sdkmanager "extras;google;m2repository" > /dev/null
- echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository - export ANDROID_HOME=$PWD/android-sdk-linux
- export ANDROID_HOME=$PWD/android-sdk-linux - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/ - yes | android-sdk-linux/tools/bin/sdkmanager --licenses &
- chmod +x ./gradlew - chmod +x ./gradlew
stages: stages:
- build - build
- test - test
build: build:
stage: build stage: build
script: script:
- ./gradlew assembleDebug - ./gradlew assembleDebug
artifacts: artifacts:
paths: paths:
- app/build/outputs/ - app/build/outputs/
...@@ -36,7 +36,7 @@ build: ...@@ -36,7 +36,7 @@ build:
unitTests: unitTests:
stage: test stage: test
script: script:
- ./gradlew test - ./gradlew test
functionalTests: functionalTests:
stage: test stage: test
......
...@@ -4,7 +4,10 @@ module Peek ...@@ -4,7 +4,10 @@ module Peek
module Views module Views
class Host < View class Host < View
def results def results
{ hostname: Gitlab::Environment.hostname } {
hostname: Gitlab::Environment.hostname,
canary: Gitlab::Utils.to_boolean(ENV['CANARY'])
}
end end
end end
end end
......
...@@ -157,6 +157,16 @@ describe('MRWidgetMerged', () => { ...@@ -157,6 +157,16 @@ describe('MRWidgetMerged', () => {
expect(selectors.copyMergeShaButton.getAttribute('data-clipboard-text')).toBe(vm.mr.mergeCommitSha); expect(selectors.copyMergeShaButton.getAttribute('data-clipboard-text')).toBe(vm.mr.mergeCommitSha);
}); });
it('hides button to copy commit SHA if SHA does not exist', (done) => {
vm.mr.mergeCommitSha = null;
Vue.nextTick(() => {
expect(selectors.copyMergeShaButton).not.toExist();
expect(vm.$el.querySelector('.mr-info-list').innerText).not.toContain('with');
done();
});
});
it('shows merge commit SHA link', () => { it('shows merge commit SHA link', () => {
expect(selectors.mergeCommitShaLink).toExist(); expect(selectors.mergeCommitShaLink).toExist();
expect(selectors.mergeCommitShaLink.text).toContain(vm.mr.shortMergeCommitSha); expect(selectors.mergeCommitShaLink.text).toContain(vm.mr.shortMergeCommitSha);
......
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