...@@ -2,29 +2,6 @@ ...@@ -2,29 +2,6 @@
documentation](doc/development/changelog.md) for instructions on adding your own documentation](doc/development/changelog.md) for instructions on adding your own
entry. entry.
   
## 12.8.3
### Fixed (8 changes)
- Fix Group Import API file upload when object storage is disabled. !25715
- Fix Web IDE fork modal showing no text. !25842
- Fixed regression when URL was encoded in a loop. !25849
- Fixed repository browsing for folders with non-ascii characters. !25877
- Fix search for Sentry error list. !26129
- Send credentials with GraphQL fetch requests. !26386
- Show CI status in project dashboards. !26403
- Rescue invalid URLs during badge retrieval in asset proxy. !26524
### Performance (2 changes)
- Disable Marginalia line backtrace in production. !26199
- Remove unnecessary Redis deletes for broadcast messages. !26541
### Other (1 change, 1 of them is from the community)
- Fix fixtures for Error Tracking Web UI. !26233 (Takuya Noguchi)
## 12.8.2 ## 12.8.2
   
### Security (17 changes) ### Security (17 changes)
... ...
......
...@@ -179,18 +179,19 @@ export default { ...@@ -179,18 +179,19 @@ export default {
<div v-if="errorMessage" class="diff-viewer"> <div v-if="errorMessage" class="diff-viewer">
<div class="nothing-here-block" v-html="errorMessage"></div> <div class="nothing-here-block" v-html="errorMessage"></div>
</div> </div>
<div v-else-if="isCollapsed" class="nothing-here-block diff-collapsed"> <template v-else>
<div v-show="isCollapsed" class="nothing-here-block diff-collapsed">
{{ __('This diff is collapsed.') }} {{ __('This diff is collapsed.') }}
<a class="click-to-expand js-click-to-expand" href="#" @click.prevent="handleToggle">{{ <a class="click-to-expand js-click-to-expand" href="#" @click.prevent="handleToggle">{{
__('Click to expand it.') __('Click to expand it.')
}}</a> }}</a>
</div> </div>
<diff-content <diff-content
v-else v-show="!isCollapsed && !isFileTooLarge"
:class="{ hidden: isCollapsed || isFileTooLarge }"
:diff-file="file" :diff-file="file"
:help-page-path="helpPagePath" :help-page-path="helpPagePath"
/> />
</template>
</div> </div>
</template> </template>
</div> </div>
... ...
......
...@@ -16,10 +16,18 @@ module AuthHelper ...@@ -16,10 +16,18 @@ module AuthHelper
Gitlab::Auth.omniauth_enabled? Gitlab::Auth.omniauth_enabled?
end end
def provider_has_icon?(name) def provider_has_custom_icon?(name)
icon_for_provider(name.to_s)
end
def provider_has_builtin_icon?(name)
PROVIDERS_WITH_ICONS.include?(name.to_s) PROVIDERS_WITH_ICONS.include?(name.to_s)
end end
def provider_has_icon?(name)
provider_has_builtin_icon?(name) || provider_has_custom_icon?(name)
end
def qa_class_for_provider(provider) def qa_class_for_provider(provider)
{ {
saml: 'qa-saml-login-button', saml: 'qa-saml-login-button',
...@@ -35,6 +43,10 @@ module AuthHelper ...@@ -35,6 +43,10 @@ module AuthHelper
Gitlab::Auth::OAuth::Provider.label_for(name) Gitlab::Auth::OAuth::Provider.label_for(name)
end end
def icon_for_provider(name)
Gitlab::Auth::OAuth::Provider.icon_for(name)
end
def form_based_provider_priority def form_based_provider_priority
['crowd', /^ldap/, 'kerberos'] ['crowd', /^ldap/, 'kerberos']
end end
...@@ -109,7 +121,9 @@ module AuthHelper ...@@ -109,7 +121,9 @@ module AuthHelper
def provider_image_tag(provider, size = 64) def provider_image_tag(provider, size = 64)
label = label_for_provider(provider) label = label_for_provider(provider)
if provider_has_icon?(provider) if provider_has_custom_icon?(provider)
image_tag(icon_for_provider(provider), alt: label, title: "Sign in with #{label}")
elsif provider_has_builtin_icon?(provider)
file_name = "#{provider.to_s.split('_').first}_#{size}.png" file_name = "#{provider.to_s.split('_').first}_#{size}.png"
image_tag("auth_buttons/#{file_name}", alt: label, title: "Sign in with #{label}") image_tag("auth_buttons/#{file_name}", alt: label, title: "Sign in with #{label}")
... ...
......
...@@ -88,7 +88,9 @@ class PrometheusService < MonitoringService ...@@ -88,7 +88,9 @@ class PrometheusService < MonitoringService
return false if template? return false if template?
return false unless project return false unless project
project.all_clusters.enabled.any? { |cluster| cluster.application_prometheus_available? } project.all_clusters.enabled.eager_load(:application_prometheus).any? do |cluster|
cluster.application_prometheus&.available?
end
end end
def allow_local_api_url? def allow_local_api_url?
... ...
......
...@@ -98,6 +98,7 @@ module Projects ...@@ -98,6 +98,7 @@ module Projects
setup_authorizations setup_authorizations
current_user.invalidate_personal_projects_count current_user.invalidate_personal_projects_count
create_prometheus_service
create_readme if @initialize_with_readme create_readme if @initialize_with_readme
end end
...@@ -169,6 +170,20 @@ module Projects ...@@ -169,6 +170,20 @@ module Projects
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
def create_prometheus_service
service = @project.find_or_initialize_service(::PrometheusService.to_param)
if service.prometheus_available?
service.save!
else
@project.prometheus_service = nil
end
rescue ActiveRecord::RecordInvalid => e
Gitlab::ErrorTracking.track_exception(e, extra: { project_id: project.id })
@project.prometheus_service = nil
end
def set_project_name_from_path def set_project_name_from_path
# Set project name from path # Set project name from path
if @project.name.present? && @project.path.present? if @project.name.present? && @project.path.present?
... ...
......
---
title: Fixed regression when URL was encoded in a loop
merge_request: 25849
author:
type: fixed
---
title: Fix Web IDE fork modal showing no text
merge_request: 25842
author:
type: fixed
---
title: Fix fixtures for Error Tracking Web UI
merge_request: 26233
author: Takuya Noguchi
type: other
---
title: Optional custom icon in the OmniAuth login labels
merge_request: 25744
author: Tobias Wawryniuk, Luca Leonardo Scorcia
type: added
---
title: Fix Group Import API file upload when object storage is disabled
merge_request: 25715
author:
type: fixed
---
title: Improved MR toggle file performance by hiding instead of removing
merge_request: 26181
author:
type: performance
---
title: Fix search for Sentry error list
merge_request: 26129
author:
type: fixed
---
title: Activate Prometheus integration service for newly created project if this project
has access to shared Prometheus application.
merge_request: 24676
author:
type: fixed
---
title: Fixed repository browsing for folders with non-ascii characters
merge_request: 25877
author:
type: fixed
---
title: Show CI status in project dashboards
merge_request: 26403
author:
type: fixed
---
title: Disable Marginalia line backtrace in production
merge_request: 26199
author:
type: performance
---
title: Remove unnecessary Redis deletes for broadcast messages
merge_request: 26541
author:
type: performance
---
title: Rescue invalid URLs during badge retrieval in asset proxy
merge_request: 26524
author:
type: fixed
---
title: Send credentials with GraphQL fetch requests
merge_request: 26386
author:
type: fixed
...@@ -34,6 +34,7 @@ The OpenID Connect will provide you with a client details and secret for you to ...@@ -34,6 +34,7 @@ The OpenID Connect will provide you with a client details and secret for you to
gitlab_rails['omniauth_providers'] = [ gitlab_rails['omniauth_providers'] = [
{ 'name' => 'openid_connect', { 'name' => 'openid_connect',
'label' => '<your_oidc_label>', 'label' => '<your_oidc_label>',
'icon' => '<custom_provider_icon>',
'args' => { 'args' => {
'name' => 'openid_connect', 'name' => 'openid_connect',
'scope' => ['openid','profile'], 'scope' => ['openid','profile'],
...@@ -58,6 +59,7 @@ The OpenID Connect will provide you with a client details and secret for you to ...@@ -58,6 +59,7 @@ The OpenID Connect will provide you with a client details and secret for you to
```yaml ```yaml
- { name: 'openid_connect', - { name: 'openid_connect',
label: '<your_oidc_label>', label: '<your_oidc_label>',
icon: '<custom_provider_icon>',
args: { args: {
name: 'openid_connect', name: 'openid_connect',
scope: ['openid','profile'], scope: ['openid','profile'],
...@@ -82,6 +84,8 @@ The OpenID Connect will provide you with a client details and secret for you to ...@@ -82,6 +84,8 @@ The OpenID Connect will provide you with a client details and secret for you to
1. For the configuration above, change the values for the provider to match your OpenID Connect client setup. Use the following as a guide: 1. For the configuration above, change the values for the provider to match your OpenID Connect client setup. Use the following as a guide:
- `<your_oidc_label>` is the label that will be displayed on the login page. - `<your_oidc_label>` is the label that will be displayed on the login page.
- `<custom_provider_icon>` (optional) is the icon that will be displayed on the login page. Icons for the major social login platforms are built-in into GitLab,
but can be overridden by specifying this parameter. Both local paths and absolute URLs are accepted.
- `<your_oidc_url>` (optional) is the URL that points to the OpenID Connect provider. For example, `https://example.com/auth/realms/your-realm`. - `<your_oidc_url>` (optional) is the URL that points to the OpenID Connect provider. For example, `https://example.com/auth/realms/your-realm`.
If this value is not provided, the URL is constructed from the `client_options` in the following format: `<client_options.scheme>://<client_options.host>:<client_options.port>`. If this value is not provided, the URL is constructed from the `client_options` in the following format: `<client_options.scheme>://<client_options.host>:<client_options.port>`.
- If `discovery` is set to `true`, the OpenID Connect provider will try to auto discover the client options using `<your_oidc_url>/.well-known/openid-configuration`. Defaults to `false`. - If `discovery` is set to `true`, the OpenID Connect provider will try to auto discover the client options using `<your_oidc_url>/.well-known/openid-configuration`. Defaults to `false`.
... ...
......