Commit 6653aab9 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent b1bcdba8
......@@ -495,7 +495,6 @@ linters:
- 'ee/app/views/projects/services/prometheus/_metrics.html.haml'
- 'ee/app/views/projects/settings/slacks/edit.html.haml'
- 'ee/app/views/shared/_additional_email_text.html.haml'
- 'ee/app/views/shared/_geo_info_modal.html.haml'
- 'ee/app/views/shared/_mirror_update_button.html.haml'
- 'ee/app/views/shared/_shared_runners_minutes_limit.html.haml'
- 'ee/app/views/shared/audit_events/_event_table.html.haml'
......
Please view this file on the master branch, on stable branches it's out of date.
## 12.4.0
### Security (2 changes)
- Prevent IDOR when adding groups to protected environments.
- Hide approvers if a rule has any hidden groups.
### Removed (1 change)
- Remove db_load_balancing_index gauge metric. !17561
### Fixed (26 changes, 1 of them is from the community)
- Admin settings errors now shown in the correct panel. !14374
- Add missing error handling for epic quick actions. !15648
- Fix project exports clobbering concurrent export paths. !16280
- Fixes scroll handle icon in time series. !16354
- Remove hardcoded Medium confidence for Container Scanning vulnerabilities. !16395
- Fixed renaming changed files. !16539
- Fix project-defined metrics dashboards not rendering. !16589
- Remove duplication of Licenses in Dependency List page. !16946
- Backfill SPDX identifiers in software_licenses table. !17004
- Monitor charts: Validate form for creating an alert before submitting. !17109
- Hide Push rules link when you dont have a license installed. !17530
- Operations Dashboard: fix minimum query message. !17574
- Fix page layout for sidebar on designs view. !17579
- Display error for invalid insights config. !17589
- Display appropriate approval status icon next to license. !17613
- Fix deduplication of WASC vulnerabilities in the Security dashboard. !17778
- Fix burndown negative count edge case. !18053
- Change design management empty state button style. !18060 (George Tsiolis)
- Decouple dependency list parser from v1.0 license scanning report. !18103
- Respect Group SSO Enforcement on projects where the user is an owner. !18154
- Scoped labels do not remove old label in board sidebar. !18313
- Restrict number of users input to positive numbers. !18381
- Fix undefined method log_geo_deleted_event for MergeRequestDiff. !18405
- Add default empty values to prevent parser errors from approving the Vulnerability-Check rule. !18423
- Fix time tracking info when the sidebar is collapsed.
- Fix Discussion tab counter on Issues.
### Changed (18 changes, 1 of them is from the community)
- Style burndown charts with gitlab-ui. !15463
- Add epic_iid parameter to issues API. !15640
- Use a single badge to show number of active alerts on metrics dashboards. !15789
- Allow files with .svg extensions to be uploaded as designs for Design Management. !16160
- Implement dismissal behaviour when dismissed vulnerabilities are hidden. !16207
- Remove environment_metrics_show_multiple_dashboards feature flag. !16640
- Make name an optional parameter of releases. !16647
- Expose epics closed_at on API. !17156
- Add static_context API param when editing GitHub project service. !17397
- Support variable expansion in branch property of bridge jobs. !17430
- Add environment dropdown to pod logs screen. !17532
- Parse v2 license scanning reports. !17646
- Remove broken HTML5 routing behaviour from Pipeline Security Dashboard. !17767
- Change Prometheus Alert details list from bulleted to description list. !18116 (Vitali Tatarintev)
- Check for software license violations using SPDX identifiers. !18300
- Move 'Advanced search' message to search page title. !18349
- Add alert message for feature 'require approval from code owners' being moved. !18715
- Enable Productivity Analytics feature by default. !18754
### Performance (1 change)
- Reduce excessive GC on pull mirrors. !17931
### Added (35 changes)
- Allow Design Management files and data to be included in the project exporter/importer. !14702
- Create system notes for design events. !14791
- Paginate SCIM responses using count and startIndex. !14892
- Front-End UI for design deletion. !15034
- Add max issue count to lists. !15116
- Sign in / sign up step for trial. !15289
- Add notification for updated privacy policy. !15435
- Show Billing Plan as Cards in profile and groups. !15437
- Add Audit Event API. !15698
- Add configurable Code Owner approvals for protected branches. !15862
- Add Alerts Service to Projects. !16117
- Add Conan check_credentials API endpoint. !16215
- Initial endpoint for exposing Cycle Analytics stages for the new frontend. !16240
- Add ability to multi select issue board cards. !16317
- Add License-Check approval UI. !16371
- Add links to associated releases on Tags page. !16479
- Frontend implementation for improved trial sign-up experience for GitLab.com (SaaS) users. !16732
- Return Todos for Designs via the REST API. !16885
- Set active insights dashboard tab from hash fragment. !16904
- Extend group IP restriction to Git activity. !16980
- Inactivate pipeline retries for Merge Trains. !17065
- Expose time when the build was generated. !17113
- Add new table for recording commit counts per file. !17277
- Add vendored template for Browser Performance Testing. !17319
- Link Gitlab managed Prometheus alerts and issues. !17477
- Disable insights tab navigation whilst current page loads. !17678
- Drop all merge requests from merge trains when the project-level setting is disabled. !17774
- Implement DAST for default branches. !17789
- Add rack attack settings for prometheus and generic alert endpoint. !17859
- Add Licenses list backend usage ping. !17925
- Associate self-managed Prometheus Alerts and Issues. !18046
- Operator can see all projects using an instance level cluster. !18173
- Expose subscribed attribute for Epics in GraphQL. !18607
- Expose epic participants on GraphQL. !18691
- Adds a generic alert integration which can accept alerts from any source via a generic webhook receiver.
### Other (4 changes)
- Productivity analytics: Add scatterplot. !15569
- Updated sidebar navigation icons to be horizontally centered when bar is condensed. !16820
- Pin major version of SAST analyzers. !17110
- Docs for protected branch code owner approval API. !17132
## 12.3.4
### Fixed (2 changes)
......
......@@ -2,6 +2,325 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
## 12.4.0
### Security (14 changes)
- HTML-escape search term in empty message. !18319
- Fix private feature Elasticsearch leak.
- Prevent bypassing email verification using Salesforce.
- Fix new project path being disclosed through unsubscribe link of issue/merge requests.
- Do not show resource label events referencing not accessible labels.
- Check permissions before showing head pipeline blocking merge requests.
- Cancel all running CI jobs triggered by the user who is just blocked.
- Do not disclose project milestones on group milestones page when project milestones access is disabled in project settings.
- Display only participants that user has permission to see on milestone page.
- Fix Gitaly SearchBlobs flag RPC injection.
- Add a policy check for system notes that may not be visible due to cross references to private items.
- Limit search for IID to a type to avoid leaking records with the same IID that the user does not have access to.
- Prevent GitLab accounts takeover if SAML is configured.
- Only render fixed number of mermaid blocks.
### Fixed (103 changes, 12 of them are from the community)
- When user toggles task list item, keep details open until user closes the details manually. !16153
- Fix formatting welcome screen external users. !16667
- Fix signup link in admin area not being disabled. !16726 (Illya Klymov)
- Fix routing bugs in security dashboards. !16738
- Fix Jira integration favicon image with relative URL. !16802
- Add timeout mechanism for CI config validation. !16807
- Fix for count in todo badge when user has over 1,000 todos. Will now correctly display todo count after user marks some todos as done. !16844 (Jesse Hall @jessehall3)
- Naming a project "shared" will no longer automatically open the "Shared Projects" tab. !16847 (Jesse Hall @jessehall3)
- Adds the ability to delete single tags from the docker registry. Fix the issue that caused all related tags and image to be deleted at the same time. !16886
- Changed confidential quick action to only be available on non confidential issues. !16902 (Marc Schwede)
- Stop sidebar icons from jumping when expanded & collapsed. !16971
- Set name and updated_at properly in GitHub ReleaseImporter. !17020
- Remove thin white line at top of diff view code blocks. !17026
- Show correct CI indicator when build succeeded with warnings. !17034
- Create a persistent ref per pipeline for keeping pipelines run from force-push and merged results. !17043
- Move SMAU usage counters to the UsageData count field. !17074
- Allow maintainers to toggle write permission for public deploy keys. !17210
- Fix GraphQL for read-only instances. !17225
- Fix visibility level error when updating group from API. !17227 (Mathieu Parent)
- Fix stylelint errors in epics.scss. !17243
- Fix new discussion replies sometimes showing up twice. !17255
- Adjust unnapliable suggestions in expanded lines. !17286
- Show all groups user belongs to in Notification settings. !17303
- Alphabetically sorts selected sidebar labels. !17309
- Show issue weight when weight is 0. !17329 (briankabiro)
- Generate LFS token authorization for user LFS requests. !17332
- Backfill releases table updated_at column and add not null constraints to created_at and updated_at. !17400
- Log Sidekiq exceptions properly in JSON format. !17412
- Redo fix for related issues border radius. !17480
- Show the original branch name and link of merge request in pipeline emails. !17513
- Fixes issues with the security reports migration. !17519
- Users can view the blame or history of a file with newlines in its filename. !17543 (Jesse Hall @jessehall3)
- Display reCAPTCHA modal when making issue public. !17553
- Fix css selector for details in issue description. !17557
- Prevents a group path change when a project inside the group has container registry images. !17583
- Show 20 labels in dropdown instead of 5. !17596
- Nullify platform Kubernetes namespace if blank. !17657
- Fix Issue: WebIDE asks for confirmation to leave the page when committing and creating a new MR. !17671
- Catch unhandled exceptions in health checks. !17694
- Suppress error messages shown when navigating to a new page. !17706
- Specify sort order explicitly for Group and Project audit events. !17739
- Merge Request: Close JIRA issues when issues are disabled. !17743
- Disable gitlab-workhorse static error page on health endpoints. !17770
- Fix notes race condition when linking to specific note. !17777
- Fix relative positioning when moving items down and there is no space. !17781
- Fix project imports for pipelines for merge requests. !17799
- Increase the limit of includes in CI file to 100. !17807
- Geo: Fix race condition for container synchronization. !17823
- Geo: Invalidate cache after refreshing foreign tables. !17885
- Abort Merge When Pipeline Succeeds when Fast Forward merge is impossible. !17886
- Fix viewing merge reqeust from a fork that's being deleted. !17894
- Fix empty security dashboard for public projects. !17915
- Fix inline rendering of videos for uploads with uppercase file extensions. !17924
- Hide redundant labels in issue boards. !17937
- Time window filter in monitor dashboard gets reset. !17972
- Use cache_method_asymmetrically with Repository#has_visible_content?. !17975
- Allow users to compare Git revisions on a read-only instance. !18038
- Enable Google API retries for uploads. !18040
- Fix bug with new wiki not being indexed. !18051
- Stops the expand button in reports from expanding. !18064
- Make sure project insights stick on its own. !18082
- Embed metrics time window scroll no longer affects other embeds. !18109
- Fix broken notes avatar rendering in Chrome 77. !18110
- Ignore incoming emails with X-Autoreply header. !18118
- Enable grid, frame and stripes styling on AsciiDoc tables. !18165 (Guillaume Grossetie)
- Add backend support for selecting custom templates by ID. !18178
- Fix notifications for private group mentions in Notes, Issues, and Merge Requests. !18183
- Do not strip forwarded message body when creating an issue from Service Desk email. !18196
- Fix protected branch detection used by notification service. !18221
- Fix error where helper was incorrectly returning `true`. !18231
- Adjust placeholder to solve misleading regex. !18235
- Fix Flaky spec/finders/members_finder_spec.rb:85. !18257 (Jacopo Beschi @jacopo-beschi)
- Fix 500 error on clicking to LetsEncrypt Terms of Service. !18263
- Fix error tracking table layout on small screens. !18325
- GitHub import: Handle nil published_at dates. !18355
- Do not allow deactivated users to use slash commands. !18365
- Fix creating epics with dates from api. !18393
- JIRA Service: Improve username/email validation. !18397
- Stopped CRD apply retrying from allowing silent failures. !18421
- Fix erroneous "No activities found" message. !18434
- Support ES searches for project snippets. !18459
- Fix styling of set status emoji picker. !18509
- Fix showing diff when it has legacy diff notes. !18510
- JIRA Integration API URL works having a trailing slash. !18526
- Fixes embedded metrics chart tooltip spacing. !18543
- Bump GITLAB_ELASTICSEARCH_INDEXER_VERSION=v1.4.0. !18558
- Fix pod logs failure when pod contains more than 1 container. !18574
- Prevent the slash command parser from removing leading whitespace from content that is unrelated to slash commands. !18589 (Jared Deckard)
- Fix inability to set snippet visibility via API. !18612
- Fix Web IDE tree not updating modified status. !18647
- Fix button link foreground color. !18669
- Resolve missing design system notes icons. !18693
- Remove duplicate primary button in dashboard snippets. !32048 (George Tsiolis)
- Allow to view productivity analytics page without a license. !33876
- Fix container registry delete tag modal title and button. !34032
- Fixes variables overflowing in sm screens.
- Update top nav bar to fit all content in at all screen sizes.
- Fix permissions for group milestones.
- Removes Collapsible Sections from Job Log.
- Fixes job overflow in stages dropdown.
- Fix moved help URL for monitoring performance.
- Fix issue with wiki TOC links being treated as external links. (Oren Kanner)
- Show error message when setting an invalid group ID for the performance bar.
### Deprecated (1 change)
- Removing cleanup:repo, cleanup:dirs. !18087
### Changed (51 changes, 3 of them are from the community)
- Links on Releases page to commits and tags. !16128
- Add status to deployments and state to environments in API responses. !16242
- Use search scope label in empty results message. !16324
- Add step 2 of the experimental signup flow. !16583
- Add property to enable metrics dashboards to be rearranged. !16605
- Allow intra-project MR dependencies. !16799
- Use scope param instead of hide_dismissed. !16834
- Add empty state in file search. !16851
- Warn before applying issue templates. !16865
- MR Test Summary now shows errors as failures. !17039
- Add support for the association of multiple milestones to the Releases page. !17091
- Display if an issue was moved in issue list. !17102
- Improve UI for admin/projects and group/settings/projects pages. !17247
- Update registry tag delete popup message. !17257
- Show the "Set up CI/CD" prompt in empty repositories when applicable. !17274 (Ben McCormick)
- Knative version bump 0.6 -> 0.7. !17367 (Chris Baumbauer)
- Fix usability problems with the file template picker. !17522
- Make commit status created for any pipelines. !17524 (Aufar Gilbran)
- Add warnings to performance bar when page shows signs of poor performance. !17612
- Banners should only be dismissable by clicking x button. !17642
- Changes response body of liveness check to be more accurate. !17655
- Enable Request Access functionality by default for new projects and groups. !17662
- Add more attributes to issues GraphQL endpoint. !17802
- Improve admin/system_info page ui. !17829
- Adds management project for a cluster. !17866
- Upgrade gitlab-workhorse to 8.12.0. !17892
- Geo: Fix instruction from rake geo:gitlab:check. !17895
- Upgrade to Gitaly v1.66.0. !17900
- Do not start mirroring via API when paused. !17930
- Use MR links in PipelinePresenter#ref_text for branch pipelines. !17947
- Avoid knative and prometheus uninstall race condition. !18020
- Deprecate usage of state column for issues and merge requests. !18099
- Add missing page title to projects/container-registry. !18114
- Port over EE pipeline functionality to CE. !18136
- Aggregate push events when there are too many. !18239
- Cleanup background migrations for any approval rules. !18256
- Container registry tag(s) delete button pluralization. !18260
- Create clusters with VPC-Native enabled. !18284
- Update cluster link text. !18322
- Upgrade to Gitaly v1.67.0. !18326
- Improve UI of documentation under /help. !18331
- Cross-link unreplicated Geo types to issues. !18443
- Make designs read-only if the issue has been moved, or if its discussion has been locked. !18551
- Do not show new issue button on archived projects. !18590
- Increase group avatar size to 40px. !18654
- Sort vulnerabilities by severity then confidence for dashboard and pipeline views. !18675
- Add timeouts for each RPC call. !31766
- Add more specific message to clarify the role of empty images in container registry. !32919
- Embed Jaeger in Gitlab UI.
- Use text instead of icon for recent searches dropdown.
- Export liveness and readiness probes.
### Performance (25 changes, 1 of them is from the community)
- Limit diverging commit counts requests. !16737
- Use GetBlobs RPC for uri type. !16824
- Reduce Gitaly calls when viewing a commit. !17095
- Limit snippets search count. !17585
- Narrow snippet search scope in GitLab.com. !17625
- Handle wiki and graphql attachments in gitlab-workhorse. !17690
- Reduce lock contention of deployment creation by allocating IID outside of the pipeline transaction. !17696
- Update PumaWorkerKiller defaults. !17758
- Add trigram index on snippet content. !17806
- Fix Gitaly N+1 queries in related merge requests API. !17850
- Don't execute webhooks/services when above limit. !17874
- Only schedule updating push-mirrors once per push. !17902
- Show only personal snippets on explore page. !18092
- Priority bump authorized_projects sidekiq queue. !18125
- Avoid dumping files on disk when direct_upload is enabled. !18135
- Check if mapping is empty before caching in File Collections. !18290 (briankabiro)
- Avoid unnecessary locks on internal_ids. !18328
- Fix N+1 queries in Jira Development Panel API endpoint. !18329
- Optimize SQL requests for BlameController and CommitsController. !18342
- Remove N+1 for fetching commits signatures. !18389
- Reduce idle in transaction time when updating a merge request. !18493
- Use cascading deletes for deleting logs upon deleting a webhook. !18642
- Replace index on ci_triggers. !18652
- Hide license breakdown in /admin if user count is high. !18825
- Cache branch and tag names as Redis sets. !30476
### Added (78 changes, 12 of them are from the community)
- Adds sorting of packages at the project level. !15448
- Add projects.only option to Insights. !15930
- Add kubernetes section to group runner settings. !16338
- Enable Cloud Run on GKE cluster creation. !16566
- Add file matching rule to flexible CI rules. !16574
- Enable preview of private artifacts. !16675 (Tuomo Ala-Vannesluoma)
- Upgrade Gitaly to v1.64. !16788
- Render xml artifact files in GitLab. !16790
- Add GitHub & Gitea importers project filtering. !16823
- Add project filtering to Bitbucket Cloud import. !16828
- Provides internationalization support to chart legends. !16832
- Expose name property in imports API. !16848
- Add allowFilter and allowAnySHA1InWant for partial clones. !16850
- [ObjectStorage] Allow migrating back to local storage. !16868
- Require admins to enter admin-mode by re-authenticating before performing administrative operations. !16981 (Roger Rüttimann & Diego Louzán)
- Deactivate a user (with self-service reactivation). !17037
- Add database tables to store AWS roles and cluster providers. !17057
- Collect docker registry related metrics. !17063
- Allow releases to be targeted by URL anchor links on the Releases page. !17150
- Add project_pages_metadata DB table. !17197
- Add index on ci_builds for successful Pages deploys. !17204
- Creation of Evidence collection of new releases. !17217
- API: Add missing group parameters. !17220 (Mathieu Parent)
- Allow to exclude ancestor groups on group labels API. !17221 (Mathieu Parent)
- Added 'copy link' in epic comment dropdown. !17224
- Add columns for per project/group max pages/artifacts sizes. !17231
- Create table for grafana api token for metrics embeds. !17234
- Add proper label REST API for update, delete and promote. !17239 (Mathieu Parent)
- Allow cross-project pipeline triggering with CI_JOB_TOKEN in core. !17251
- Add user_id and created_at columns to design_management_versions table. !17316
- Add pull_mirror_branch_prefix column on projects table. !17368
- Expose web_url for epics on API. !17380
- Improve time window filtering on metrics dashboard. !17554
- Group level Container Registry browser. !17615
- Add API for manually creating and updating deployments. !17620
- Introduce diffs_batch JSON endpoint for paginated diffs. !17651
- Web IDE button should fork and open forked project when selected from read-only project. !17672
- Allow users to be searched with a @ prefix. !17742
- Add individual inherited member lookup API. !17744
- Preserve custom .gitlab-ci.yml config path when forking. !17817 (Mathieu Parent)
- Introduce CI_PROJECT_TITLE as predefined environment variable. !17849 (Nejc Habjan)
- Feature enabling embedded audio elements in markdown. !17860 (Jesse Hall @jessehall3)
- Add 'New release' to the project custom notifications. !17877
- Added timestamps (created_at and updated_at) to API pipelines response. !17911
- Added timestamp (updated_at) to API deployments response. !17913
- Add pipeline preparing status icons. !17923
- Creates Vue and Vuex app to render exposed artifacts. !17934
- Add web_exporter to expose Prometheus metrics. !17943
- Schedule background migration to populate pages metadata. !17993
- Add "Edit Release" page. !18033
- Unpin ingress image version, upgrade chart to 1.22.1. !18047
- Adds sorting of packages at the group level. !18062
- Introduce a lightweight diffs_metadata endpoint. !18104
- Limit the number of comments on an issue, MR, or commit. !18111
- Introduce new Ansi2json parser to convert job logs to JSON. !18133
- Use new Ansi2json job log converter via feature flag. !18134
- Snowplow custom events for Monitor: Health Product Categories. !18157
- Support Create/Read/Destroy operations in Feature Flag API. !18198
- Add two new predefined stages to pipelines. !18205
- Add endpoint to proxy requests to grafana's proxy endpoint. !18210
- Add ability to query todos using GraphQL. !18218
- Include in the callout message a list of jobs that caused missing dependencies failure. !18219
- Adds login input with copy box and supporting copy to empty container registry view. !18244 (nate geslin)
- Add max_artifacts_size fields under project and group settings. !18286
- Provide Merge requests and Issue links through the Release API. !18311
- Adds separate parsers for mentions of users, groups, projects in markdown content. !18318
- Add matching branch info to branch column. !18352
- Users can preview audio files in a repository. !18354 (Jesse Hall @jessehall3)
- Add edit button to release blocks on Releases page. !18411
- Add "Custom HTTP Git clone URL root" setting. !18422
- Add support for epic update through GraphQL API. !18440
- Expose subscribed attribute for epic on API. !18475
- Geo: Enable replicating uploads, LFS objects, and artifacts in Object Storage. !18482
- Show related merge requests in pipeline view. !18697
- Allow users to configure protected paths from Admin panel. !31246
- persist the refs when open the link of refs in a new tab of browser. !31998 (minghuan lei)
- Add first_parent option to list commits api. !32410 (jhenkens)
- Allow users to add and remove zoom rooms on an issue using quick action commands.
### Other (23 changes, 5 of them are from the community)
- Sync issuables state_id with null values. !16480
- Experimental separate sign up flow. !16482
- Upgrade Rouge to v3.11.0. !17011
- Better job naming for Docker.gitlab-ci.yml. !17218 (luca.orlandi@gmail.com)
- Update GitLab Runner Helm Chart to 0.9.0. !17326
- Change welcome message and make translatable. !17391
- Remove map-get($grid-breakpoints, xs) for max-width. !17420 (Takuya Noguchi)
- Document Git LFS and max file size interaction. !17609
- Refactor email notification code. !17741 (briankabiro)
- Ignore id column of ci_build_trace_sections table. !17805
- Extend graphql query endpoint for merge requests to return more attributes to support sidebar implementation. !17813
- Project list: Align star icons. !17833
- Moves the license compliance reports to the Backend. !17905
- Fixes wrong link on Protected paths admin settings. !17945
- Update Pages to v1.11.0. !18010
- Refactor checksum code in uploads. !18065 (briankabiro)
- Make instance configuration user friendly. !18363 (Takuya Noguchi)
- Update Workhorse to v8.14.0. !18391
- Attribute each Sidekiq worker to a feature category. !18462
- Update GitLab Shell to v10.2.0. !18735
- Use correct icons for issue actions.
- Increase color contrast of select option path.
- Remove Postgresql specific setup tasks and move to schema.rb.
## 12.3.4
### Fixed (2 changes)
......
......@@ -37,6 +37,7 @@ export default class Clusters {
installJupyterPath,
installKnativePath,
updateKnativePath,
installElasticStackPath,
installPrometheusPath,
managePrometheusPath,
clusterEnvironmentsPath,
......@@ -86,6 +87,7 @@ export default class Clusters {
installJupyterEndpoint: installJupyterPath,
installKnativeEndpoint: installKnativePath,
updateKnativeEndpoint: updateKnativePath,
installElasticStackEndpoint: installElasticStackPath,
clusterEnvironmentsEndpoint: clusterEnvironmentsPath,
});
......
......@@ -12,6 +12,7 @@ import certManagerLogo from 'images/cluster_app_logos/cert_manager.png';
import knativeLogo from 'images/cluster_app_logos/knative.png';
import meltanoLogo from 'images/cluster_app_logos/meltano.png';
import prometheusLogo from 'images/cluster_app_logos/prometheus.png';
import elasticStackLogo from 'images/cluster_app_logos/elastic_stack.png';
import { s__, sprintf } from '../../locale';
import applicationRow from './application_row.vue';
import clipboardButton from '../../vue_shared/components/clipboard_button.vue';
......@@ -91,6 +92,7 @@ export default {
knativeLogo,
meltanoLogo,
prometheusLogo,
elasticStackLogo,
}),
computed: {
isProjectCluster() {
......@@ -114,6 +116,9 @@ export default {
certManagerInstalled() {
return this.applications.cert_manager.status === APPLICATION_STATUS.INSTALLED;
},
enableClusterApplicationElasticStack() {
return gon.features && gon.features.enableClusterApplicationElasticStack;
},
ingressDescription() {
return sprintf(
_.escape(
......@@ -168,6 +173,12 @@ export default {
jupyterHostname() {
return this.applications.jupyter.hostname;
},
elasticStackInstalled() {
return this.applications.elastic_stack.status === APPLICATION_STATUS.INSTALLED;
},
elasticStackKibanaHostname() {
return this.applications.elastic_stack.kibana_hostname;
},
knative() {
return this.applications.knative;
},
......@@ -542,6 +553,75 @@ export default {
/>
</div>
</application-row>
<application-row
v-if="enableClusterApplicationElasticStack"
id="elastic_stack"
:logo-url="elasticStackLogo"
:title="applications.elastic_stack.title"
:status="applications.elastic_stack.status"
:status-reason="applications.elastic_stack.statusReason"
:request-status="applications.elastic_stack.requestStatus"
:request-reason="applications.elastic_stack.requestReason"
:version="applications.elastic_stack.version"
:chart-repo="applications.elastic_stack.chartRepo"
:update-available="applications.elastic_stack.updateAvailable"
:installed="applications.elastic_stack.installed"
:install-failed="applications.elastic_stack.installFailed"
:update-successful="applications.elastic_stack.updateSuccessful"
:update-failed="applications.elastic_stack.updateFailed"
:uninstallable="applications.elastic_stack.uninstallable"
:uninstall-successful="applications.elastic_stack.uninstallSuccessful"
:uninstall-failed="applications.elastic_stack.uninstallFailed"
:disabled="!helmInstalled"
:install-application-request-params="{
kibana_hostname: applications.elastic_stack.kibana_hostname,
}"
title-link="https://github.com/helm/charts/tree/master/stable/elastic-stack"
>
<div slot="description">
<p>
{{
s__(
`ClusterIntegration|The elastic stack collects logs from all pods in your cluster`,
)
}}
</p>
<template v-if="ingressExternalEndpoint">
<div class="form-group">
<label for="elastic-stack-kibana-hostname">{{
s__('ClusterIntegration|Kibana Hostname')
}}</label>
<div class="input-group">
<input
v-model="applications.elastic_stack.kibana_hostname"
:readonly="elasticStackInstalled"
type="text"
class="form-control js-hostname"
/>
<span class="input-group-btn">
<clipboard-button
:text="elasticStackKibanaHostname"
:title="s__('ClusterIntegration|Copy Kibana Hostname')"
class="js-clipboard-btn"
/>
</span>
</div>
<p v-if="ingressInstalled" class="form-text text-muted">
{{
s__(`ClusterIntegration|Replace this with your own hostname if you want.
If you do so, point hostname to Ingress IP Address from above.`)
}}
<a :href="ingressDnsHelpPath" target="_blank" rel="noopener noreferrer">
{{ __('More information') }}
</a>
</p>
</div>
</template>
</div>
</application-row>
</div>
</section>
</template>
......@@ -2,7 +2,16 @@
import { GlModal } from '@gitlab/ui';
import { sprintf, s__ } from '~/locale';
import trackUninstallButtonClickMixin from 'ee_else_ce/clusters/mixins/track_uninstall_button_click';
import { HELM, INGRESS, CERT_MANAGER, PROMETHEUS, RUNNER, KNATIVE, JUPYTER } from '../constants';
import {
HELM,
INGRESS,
CERT_MANAGER,
PROMETHEUS,
RUNNER,
KNATIVE,
JUPYTER,
ELASTIC_STACK,
} from '../constants';
const CUSTOM_APP_WARNING_TEXT = {
[HELM]: sprintf(
......@@ -28,6 +37,7 @@ const CUSTOM_APP_WARNING_TEXT = {
[JUPYTER]: s__(
'ClusterIntegration|All data not committed to GitLab will be deleted and cannot be restored.',
),
[ELASTIC_STACK]: s__('ClusterIntegration|All data will be deleted and cannot be restored.'),
};
export default {
......
......@@ -51,7 +51,17 @@ export const KNATIVE = 'knative';
export const RUNNER = 'runner';
export const CERT_MANAGER = 'cert_manager';
export const PROMETHEUS = 'prometheus';
export const ELASTIC_STACK = 'elastic_stack';
export const APPLICATIONS = [HELM, INGRESS, JUPYTER, KNATIVE, RUNNER, CERT_MANAGER, PROMETHEUS];
export const APPLICATIONS = [
HELM,
INGRESS,
JUPYTER,
KNATIVE,
RUNNER,
CERT_MANAGER,
PROMETHEUS,
ELASTIC_STACK,
];
export const INGRESS_DOMAIN_SUFFIX = '.nip.io';
......@@ -11,6 +11,7 @@ export default class ClusterService {
prometheus: this.options.installPrometheusEndpoint,
jupyter: this.options.installJupyterEndpoint,
knative: this.options.installKnativeEndpoint,
elastic_stack: this.options.installElasticStackEndpoint,
};
this.appUpdateEndpointMap = {
knative: this.options.updateKnativeEndpoint,
......
......@@ -5,6 +5,7 @@ import {
JUPYTER,
KNATIVE,
CERT_MANAGER,
ELASTIC_STACK,
RUNNER,
APPLICATION_INSTALLED_STATUSES,
APPLICATION_STATUS,
......@@ -85,6 +86,11 @@ export default class ClusterStore {
updateSuccessful: false,
updateFailed: false,
},
elastic_stack: {
...applicationInitialState,
title: s__('ClusterIntegration|Elastic Stack'),
kibana_hostname: null,
},
},
environments: [],
fetchingEnvironments: false,
......@@ -198,12 +204,11 @@ export default class ClusterStore {
this.state.applications.cert_manager.email =
this.state.applications.cert_manager.email || serverAppEntry.email;
} else if (appId === JUPYTER) {
this.state.applications.jupyter.hostname =
this.state.applications.jupyter.hostname ||
serverAppEntry.hostname ||
(this.state.applications.ingress.externalIp
? `jupyter.${this.state.applications.ingress.externalIp}.nip.io`
: '');
this.state.applications.jupyter.hostname = this.updateHostnameIfUnset(
this.state.applications.jupyter.hostname,
serverAppEntry.hostname,
'jupyter',
);
} else if (appId === KNATIVE) {
if (!this.state.applications.knative.isEditingHostName) {
this.state.applications.knative.hostname =
......@@ -216,10 +221,26 @@ export default class ClusterStore {
} else if (appId === RUNNER) {
this.state.applications.runner.version = version;
this.state.applications.runner.updateAvailable = updateAvailable;
} else if (appId === ELASTIC_STACK) {
this.state.applications.elastic_stack.kibana_hostname = this.updateHostnameIfUnset(
this.state.applications.elastic_stack.kibana_hostname,
serverAppEntry.kibana_hostname,
'kibana',
);
}
});
}
updateHostnameIfUnset(current, updated, fallback) {
return (
current ||
updated ||
(this.state.applications.ingress.externalIp
? `${fallback}.${this.state.applications.ingress.externalIp}.nip.io`
: '')
);
}
toggleFetchEnvironments(isFetching) {
this.state.fetchingEnvironments = isFetching;
}
......
......@@ -40,11 +40,6 @@ export default class Project {
$label.text(activeText);
});
$('#modal-geo-info').data({
cloneUrlSecondary: $this.attr('href'),
cloneUrlPrimary: $this.data('primaryUrl') || '',
});
if (mobileCloneField) {
mobileCloneField.dataset.clipboardText = url;
} else {
......
......@@ -47,7 +47,7 @@ class Clusters::ApplicationsController < Clusters::BaseController
end
def cluster_application_params
params.permit(:application, :hostname, :email)
params.permit(:application, :hostname, :kibana_hostname, :email)
end
def cluster_application_destroy_params
......
......@@ -15,6 +15,9 @@ class Clusters::ClustersController < Clusters::BaseController
before_action only: [:new, :create_gcp] do
push_frontend_feature_flag(:create_eks_clusters)
end
before_action only: [:show] do
push_frontend_feature_flag(:enable_cluster_application_elastic_stack)
end
helper_method :token_in_session
......
# frozen_string_literal: true
module Clusters
module Applications
class ElasticStack < ApplicationRecord
VERSION = '1.8.0'
self.table_name = 'clusters_applications_elastic_stacks'
include ::Clusters::Concerns::ApplicationCore
include ::Clusters::Concerns::ApplicationStatus
include ::Clusters::Concerns::ApplicationVersion
include ::Clusters::Concerns::ApplicationData
default_value_for :version, VERSION
def set_initial_status
return unless not_installable?
return unless cluster&.application_ingress_available?
ingress = cluster.application_ingress
self.status = status_states[:installable] if ingress.external_ip_or_hostname?
end
def chart
'stable/elastic-stack'
end
def values
content_values.to_yaml
end
def install_command
Gitlab::Kubernetes::Helm::InstallCommand.new(
name: 'elastic-stack',
version: VERSION,
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
files: files
)
end
def uninstall_command
Gitlab::Kubernetes::Helm::DeleteCommand.new(
name: 'elastic-stack',
rbac: cluster.platform_kubernetes_rbac?,
files: files,
postdelete: post_delete_script
)
end
private
def specification
{
"kibana" => {
"ingress" => {
"hosts" => [kibana_hostname],
"tls" => [{
"hosts" => [kibana_hostname],
"secretName" => "kibana-cert"
}]
}
}
}
end
def content_values
YAML.load_file(chart_values_file).deep_merge!(specification)
end
def post_delete_script
[
Gitlab::Kubernetes::KubectlCmd.delete("pvc", "--selector", "release=elastic-stack")
].compact
end
end
end
end
......@@ -40,7 +40,7 @@ module Clusters
end
def allowed_to_uninstall?
external_ip_or_hostname? && application_jupyter_nil_or_installable?
external_ip_or_hostname? && application_jupyter_nil_or_installable? && application_elastic_stack_nil_or_installable?
end
def install_command
......@@ -91,6 +91,10 @@ module Clusters
def application_jupyter_nil_or_installable?
cluster.application_jupyter.nil? || cluster.application_jupyter&.installable?
end
def application_elastic_stack_nil_or_installable?
cluster.application_elastic_stack.nil? || cluster.application_elastic_stack&.installable?
end
end
end
end
......@@ -3,7 +3,7 @@
module Clusters
module Applications
class Runner < ApplicationRecord
VERSION = '0.9.0'
VERSION = '0.10.0'
self.table_name = 'clusters_applications_runners'
......
......@@ -18,7 +18,8 @@ module Clusters
Applications::Prometheus.application_name => Applications::Prometheus,
Applications::Runner.application_name => Applications::Runner,
Applications::Jupyter.application_name => Applications::Jupyter,
Applications::Knative.application_name => Applications::Knative
Applications::Knative.application_name => Applications::Knative,
Applications::ElasticStack.application_name => Applications::ElasticStack
}.merge(PROJECT_ONLY_APPLICATIONS).freeze
DEFAULT_ENVIRONMENT = '*'
KUBE_INGRESS_BASE_DOMAIN = 'KUBE_INGRESS_BASE_DOMAIN'
......@@ -51,6 +52,7 @@ module Clusters
has_one_cluster_application :runner
has_one_cluster_application :jupyter
has_one_cluster_application :knative
has_one_cluster_application :elastic_stack
has_many :kubernetes_namespaces
......
......@@ -206,7 +206,16 @@ class Issue < ApplicationRecord
if self.confidential?
"#{iid}-confidential-issue"
else
"#{iid}-#{title.parameterize}"
branch_name = "#{iid}-#{title.parameterize}"
if branch_name.length > 100
truncated_string = branch_name[0, 100]
# Delete everything dangling after the last hyphen so as not to risk
# existence of unintended words in the branch name due to mid-word split.
branch_name = truncated_string[0, truncated_string.rindex("-")]
end
branch_name
end
end
......
......@@ -8,6 +8,7 @@ class ClusterApplicationEntity < Grape::Entity
expose :external_ip, if: -> (e, _) { e.respond_to?(:external_ip) }
expose :external_hostname, if: -> (e, _) { e.respond_to?(:external_hostname) }
expose :hostname, if: -> (e, _) { e.respond_to?(:hostname) }
expose :kibana_hostname, if: -> (e, _) { e.respond_to?(:kibana_hostname) }
expose :email, if: -> (e, _) { e.respond_to?(:email) }
expose :update_available?, as: :update_available, if: -> (e, _) { e.respond_to?(:update_available?) }
expose :can_uninstall?, as: :can_uninstall
......
......@@ -19,6 +19,10 @@ module Clusters
application.hostname = params[:hostname]
end
if application.has_attribute?(:kibana_hostname)
application.kibana_hostname = params[:kibana_hostname]
end
if application.has_attribute?(:email)
application.email = params[:email]
end
......@@ -60,7 +64,7 @@ module Clusters
end
def invalid_application?
unknown_application? || (!cluster.project_type? && project_only_application?)
unknown_application? || (!cluster.project_type? && project_only_application?) || (application_name == Applications::ElasticStack.application_name && !Feature.enabled?(:enable_cluster_application_elastic_stack))
end
def unknown_application?
......
......@@ -17,6 +17,7 @@
install_jupyter_path: clusterable.install_applications_cluster_path(@cluster, :jupyter),
install_knative_path: clusterable.install_applications_cluster_path(@cluster, :knative),
update_knative_path: clusterable.update_applications_cluster_path(@cluster, :knative),
install_elastic_stack_path: clusterable.install_applications_cluster_path(@cluster, :elastic_stack),
cluster_environments_path: cluster_environments_path,
toggle_status: @cluster.enabled? ? 'true': 'false',
has_rbac: has_rbac_enabled?(@cluster) ? 'true': 'false',
......
......@@ -25,5 +25,3 @@
= clipboard_button(target: '#http_project_clone', title: _("Copy URL"), class: "input-group-text btn-default btn-clipboard")
= render_if_exists 'projects/buttons/geo'
= render_if_exists 'projects/buttons/kerberos_clone_field'
= render_if_exists 'shared/geo_info_modal', project: project
......@@ -22,6 +22,3 @@
.input-group-append
= clipboard_button(target: '#project_clone', title: _("Copy URL"), class: "input-group-text btn-default btn-clipboard")
= render_if_exists 'shared/geo_modal_button'
= render_if_exists 'shared/geo_modal', project: project
---
title: Hide redundant labels in issue boards
merge_request: 17937
author:
type: fixed
---
title: Add projects.only option to Insights
merge_request: 15930
author:
type: added
---
title: Fix stylelint errors in epics.scss
merge_request: 17243
author:
type: fixed
---
title: Propagate custom environment variables to SAST analyzers
merge_request: 18193
author:
type: changed
---
title: Fix routing bugs in security dashboards
merge_request: 16738
author:
type: fixed
---
title: Adjust placeholder to solve misleading regex
merge_request: 18235
author:
type: fixed
---
title: Specify sort order explicitly for Group and Project audit events
merge_request: 17739
author:
type: fixed
---
title: Refactor checksum code in uploads
merge_request: 18065
author: briankabiro
type: other
---
title: Fix pod logs failure when pod contains more than 1 container
merge_request: 18574
author:
type: fixed
---
title: Show issue weight when weight is 0
merge_request: 17329
author: briankabiro
type: fixed
---
title: Fix creating epics with dates from api
merge_request: 18393
author:
type: fixed
---
title: Fix empty security dashboard for public projects
merge_request: 17915
author:
type: fixed
---
title: Add user_id and created_at columns to design_management_versions table
merge_request: 17316
author:
type: added
---
title: Make designs read-only if the issue has been moved, or if its discussion has been locked
merge_request: 18551
author:
type: changed
---
title: Adds sorting of packages at the group level
merge_request: 18062
author:
type: added
---
title: Make commit status created for any pipelines
merge_request: 17524
author: Aufar Gilbran
type: changed
---
title: 'Geo: Invalidate cache after refreshing foreign tables'
merge_request: 17885
author:
type: fixed
---
title: 'JIRA Integration API URL works having a trailing slash'
merge_request: 18526
author:
type: fixed
---
title: Creates Vue and Vuex app to render exposed artifacts
merge_request: 17934
author:
type: added
---
title: Warn before applying issue templates
merge_request: 16865
author:
type: changed
---
title: Abort Merge When Pipeline Succeeds when Fast Forward merge is impossible
merge_request: 17886
author:
type: fixed
---
title: Experimental separate sign up flow
merge_request: 16482
author:
type: other
---
title: Feature enabling embedded audio elements in markdown.
merge_request: 17860
author: Jesse Hall @jessehall3
type: added
---
title: Render xml artifact files in GitLab
merge_request: 16790
author:
type: added
---
title: Show 20 labels in dropdown instead of 5
merge_request: 17596
author:
type: fixed
---
title: Prevent the slash command parser from removing leading whitespace from content that is unrelated to slash commands
merge_request: 18589
author: Jared Deckard
type: fixed
---
title: Enable Request Access functionality by default for new projects and groups
merge_request: 17662
author:
type: changed
---
title: 'JIRA Service: Improve username/email validation'
merge_request: 18397
author:
type: fixed
---
title: Users can preview audio files in a repository.
merge_request: 18354
author: Jesse Hall @jessehall3
type: added
---
title: Add step 2 of the experimental signup flow
merge_request: 16583
author:
type: changed
---
title: Add more attributes to issues GraphQL endpoint
merge_request: 17802
author:
type: changed
---
title: Extend graphql query endpoint for merge requests to return more attributes to support sidebar implementation
merge_request: 17813
author:
type: other
---
title: 'Adds the ability to delete single tags from the docker registry. Fix the issue that caused all related tags and image to be deleted at the same time.'
merge_request: 16886
author:
type: fixed
---
title: Adds separate parsers for mentions of users, groups, projects in markdown content
merge_request: 18318
author:
type: added
---
title: Limit the number of comments on an issue, MR, or commit
merge_request: 18111
author:
type: added
---
title: 'Merge Request: Close JIRA issues when issues are disabled'
merge_request: 17743
author:
type: fixed
---
title: Fixes job overflow in stages dropdown
merge_request:
author:
type: fixed
---
title: Remove map-get($grid-breakpoints, xs) for max-width
merge_request: 17420
author: Takuya Noguchi
type: other
---
title: Allow maintainers to toggle write permission for public deploy keys
merge_request: 17210
author:
type: fixed
---
title: Group level Container Registry browser
merge_request: 17615
author:
type: added
---
title: Fix new discussion replies sometimes showing up twice
merge_request: 17255
author:
type: fixed
---
title: Support ES searches for project snippets
merge_request: 18459
author:
type: fixed
---
title: Fix Jira integration favicon image with relative URL
merge_request: 16802
author:
type: fixed
---
title: Add 'New release' to the project custom notifications
merge_request: 17877
author:
type: added
---
title: Creation of Evidence collection of new releases.
merge_request: 17217
author:
type: added
---
title: Fix issue with wiki TOC links being treated as external links
merge_request:
author: Oren Kanner
type: fixed
---
title: Truncate recommended branch name to a sane length
merge_request: 18821
author:
type: changed
---
title: Enable Cloud Run on GKE cluster creation
merge_request: 16566
author:
type: added
---
title: Fix showing diff when it has legacy diff notes
merge_request: 18510
author:
type: fixed
---
title: Add property to enable metrics dashboards to be rearranged
merge_request: 16605
author:
type: changed
---
title: Check if mapping is empty before caching in File Collections
merge_request: 18290
author: briankabiro
type: performance
---
title: Prevents a group path change when a project inside the group has container
registry images
merge_request: 17583
author:
type: fixed
---
title: Increase color contrast of select option path
merge_request:
author:
type: other
---
title: Unpin ingress image version, upgrade chart to 1.22.1
merge_request: 18047
author:
type: added
---
title: Schedule background migration to populate pages metadata
merge_request: 17993
author:
type: added
---
title: Add index on ci_builds for successful Pages deploys
merge_request: 17204
author:
type: added
---
title: Add project_pages_metadata DB table
merge_request: 17197
author:
type: added
---
title: Provide Merge requests and Issue links through the Release API
merge_request: 18311
author:
type: added
---
title: Add support for the association of multiple milestones to the Releases page
merge_request: 17091
author:
type: changed
---
title: Use cascading deletes for deleting logs upon deleting a webhook
merge_request: 18642
author:
type: performance
---
title: Fix inline rendering of videos for uploads with uppercase file extensions
merge_request: 17924
author:
type: fixed
---
title: Show all groups user belongs to in Notification settings
merge_request: 17303
author:
type: fixed
---
title: Improve time window filtering on metrics dashboard
merge_request: 17554
author:
type: added
---
title: Web IDE button should fork and open forked project when selected from read-only
project
merge_request: 17672
author:
type: added
---
title: Fix Web IDE tree not updating modified status
merge_request: 18647
author:
type: fixed
---
title: Fix notifications for private group mentions in Notes, Issues, and Merge Requests
merge_request: 18183
author:
type: fixed
---
title: Do not start mirroring via API when paused
merge_request: 17930
author:
type: changed
---
title: Refactor email notification code
merge_request: 17741
author: briankabiro
type: other
---
title: Fixes variables overflowing in sm screens
merge_request:
author:
type: fixed
---
title: Fix notes race condition when linking to specific note
merge_request: 17777
author:
type: fixed
---
title: Embed Jaeger in Gitlab UI
merge_request:
author:
type: changed
---
title: Use text instead of icon for recent searches dropdown
merge_request:
author:
type: changed
---
title: Fix usability problems with the file template picker
merge_request: 17522
author:
type: changed
---
title: Enable grid, frame and stripes styling on AsciiDoc tables
merge_request: 18165
author: Guillaume Grossetie
type: fixed
---
title: Show only personal snippets on explore page
merge_request: 18092
author:
type: performance
---
title: 'Fix Issue: WebIDE asks for confirmation to leave the page when committing
and creating a new MR'
merge_request: 17671
author:
type: fixed
---
title: Aggregate push events when there are too many
merge_request: 18239
author:
type: changed
---
title: Don't execute webhooks/services when above limit
merge_request: 17874
author:
type: performance
---
title: Fix broken notes avatar rendering in Chrome 77
merge_request: 18110
author:
type: fixed
---
title: Reduce Gitaly calls when viewing a commit
merge_request: 17095
author:
type: performance
---
title: Introduce diffs_batch JSON endpoint for paginated diffs
merge_request: 17651
author:
type: added
---
title: Update top nav bar to fit all content in at all screen sizes
merge_request:
author:
type: fixed
---
title: Alphabetically sorts selected sidebar labels.
merge_request: 17309
author:
type: fixed
---
title: Fix Flaky spec/finders/members_finder_spec.rb:85
merge_request: 18257
author: Jacopo Beschi @jacopo-beschi
type: fixed
---
title: Add two new predefined stages to pipelines
merge_request: 18205
author:
type: added
---
title: Banners should only be dismissable by clicking x button
merge_request: 17642
author:
type: changed
---
title: Update registry tag delete popup message
merge_request: 17257
author:
type: changed
---
title: Allow cross-project pipeline triggering with CI_JOB_TOKEN in core
merge_request: 17251
author:
type: added
---
title: Port over EE pipeline functionality to CE
merge_request: 18136
author:
type: changed
---
title: Collect docker registry related metrics
merge_request: 17063
author:
type: added
---
title: Update cluster link text
merge_request: 18322
author:
type: changed
---
title: Nullify platform Kubernetes namespace if blank
merge_request: 17657
author:
type: fixed
---
title: Stop sidebar icons from jumping when expanded & collapsed
merge_request: 16971
author:
type: fixed
---
title: Add ability to query todos using GraphQL
merge_request: 18218
author:
type: added
---
title: 'Snowplow custom events for Monitor: Health Product Categories'
merge_request: 18157
author:
type: added
---
title: Moves the license compliance reports to the Backend
merge_request: 17905
author:
type: other
---
title: 'Project list: Align star icons'
merge_request: 17833
author:
type: other
---
title: Allow users to add and remove zoom rooms on an issue using quick action commands
merge_request:
author:
type: added
---
title: Removes Collapsible Sections from Job Log
merge_request:
author:
type: fixed
---
title: Remove thin white line at top of diff view code blocks
merge_request: 17026
author:
type: fixed
---
title: Fix GraphQL for read-only instances
merge_request: 17225
author:
type: fixed
---
title: Use correct icons for issue actions
merge_request:
author:
type: other
---
title: Fix css selector for details in issue description
merge_request: 17557
author:
type: fixed
---
title: 'Geo: Fix instruction from rake geo:gitlab:check'
merge_request: 17895
author:
type: changed
---
title: Change welcome message and make translatable
merge_request: 17391
author:
type: other
---
title: Users can view the blame or history of a file with newlines in its filename.
merge_request: 17543
author: Jesse Hall @jessehall3
type: fixed
---
title: Fix relative positioning when moving items down and there is no space
merge_request: 17781
author:
type: fixed
---
title: 'Geo: Fix race condition for container synchronization'
merge_request: 17823
author:
type: fixed
---
title: Add more specific message to clarify the role of empty images in container
registry
merge_request: 32919
author:
type: changed
---
title: Add matching branch info to branch column
merge_request: 18352
author:
type: added
---
title: Time window filter in monitor dashboard gets reset
merge_request: 17972
author:
type: fixed
---
title: Fix 500 error on clicking to LetsEncrypt Terms of Service
merge_request: 18263
author:
type: fixed
---
title: Add missing page title to projects/container-registry
merge_request: 18114
author:
type: changed
---
title: Make sure project insights stick on its own
merge_request: 18082
author:
type: fixed
---
title: Container registry tag(s) delete button pluralization
merge_request: 18260
author:
type: changed
---
title: Fix protected branch detection used by notification service
merge_request: 18221
author:
type: fixed
---
title: HTML-escape search term in empty message
merge_request: 18319
author:
type: security
---
title: Do not allow deactivated users to use slash commands
merge_request: 18365
author:
type: fixed
---
title: Allow to view productivity analytics page without a license
merge_request: 33876
author:
type: fixed
---
title: Fix container registry delete tag modal title and button
merge_request: 34032
author:
type: fixed
---
title: Resolve missing design system notes icons
merge_request: 18693
author:
type: fixed
---
title: Fix formatting welcome screen external users
merge_request: 16667
author:
type: fixed
---
title: Add database tables to store AWS roles and cluster providers
merge_request: 17057
author:
type: added
---
title: Naming a project "shared" will no longer automatically open the "Shared Projects" tab.
merge_request: 16847
author: Jesse Hall @jessehall3
type: fixed
---
title: Add status to deployments and state to environments in API responses
merge_request: 16242
author:
type: changed
---
title: "[ObjectStorage] Allow migrating back to local storage"
merge_request: 16868
author:
type: added
---
title: Links on Releases page to commits and tags
merge_request: 16128
author:
type: changed
---
title: Add empty state in file search
merge_request: 16851
author:
type: changed
---
title: When user toggles task list item, keep details open until user closes the details
manually
merge_request: 16153
author:
type: fixed
---
title: Add kubernetes section to group runner settings
merge_request: 16338
author:
type: added
---
title: Deactivate a user (with self-service reactivation)
merge_request: 17037
author:
type: added
---
title: Cache branch and tag names as Redis sets
merge_request: 30476
author:
type: performance
---
title: persist the refs when open the link of refs in a new tab of browser
merge_request: 31998
author: minghuan lei
type: added
---
title: Fix for count in todo badge when user has over 1,000 todos. Will now correctly
display todo count after user marks some todos as done.
merge_request: 16844
author: Jesse Hall @jessehall3
type: fixed
---
title: Changed confidential quick action to only be available on non confidential issues
merge_request: 16902
author: Marc Schwede
type: fixed
---
title: Use scope param instead of hide_dismissed
merge_request: 16834
author:
type: changed
---
title: Added 'copy link' in epic comment dropdown.
merge_request: 17224
author:
type: added
---
title: Allow users to compare Git revisions on a read-only instance
merge_request: 18038
author:
type: fixed
---
title: Avoid unnecessary locks on internal_ids
merge_request: 18328
author:
type: performance
---
title: Replace index on ci_triggers
merge_request: 18652
author:
type: performance
---
title: Avoid dumping files on disk when direct_upload is enabled
merge_request: 18135
author:
type: performance
---
title: Add pull_mirror_branch_prefix column on projects table
merge_request: 17368
author:
type: added
---
title: Handle wiki and graphql attachments in gitlab-workhorse
merge_request: 17690
author:
type: performance
---
title: Introduce new Ansi2json parser to convert job logs to JSON
merge_request: 18133
author:
type: added
---
title: Introduce CI_PROJECT_TITLE as predefined environment variable
merge_request: 17849
author: Nejc Habjan
type: added
---
title: Add first_parent option to list commits api
merge_request: 32410
author: jhenkens
type: added
---
title: Export liveness and readiness probes
merge_request:
author:
type: changed
---
title: Adds sorting of packages at the project level
merge_request: 15448
author:
type: added
---
title: Added timestamp (updated_at) to API deployments response
merge_request: 17913
author:
type: added
---
title: Added timestamps (created_at and updated_at) to API pipelines response
merge_request: 17911
author:
type: added
---
title: Disable gitlab-workhorse static error page on health endpoints
merge_request: 17770
author:
type: fixed
---
title: Catch unhandled exceptions in health checks
merge_request: 17694
author:
type: fixed
---
title: Upgrade gitlab-workhorse to 8.12.0
merge_request: 17892
author:
type: changed
---
title: Add individual inherited member lookup API
merge_request: 17744
author:
type: added
---
title: Allow users to be searched with a @ prefix
merge_request: 17742
author:
type: added
---
title: Priority bump authorized_projects sidekiq queue
merge_request: 18125
author:
type: performance
---
title: Attribute each Sidekiq worker to a feature category
merge_request: 18462
author:
type: other
---
title: 'Allow to exclude ancestor groups on group labels API'
merge_request: 17221
author: Mathieu Parent
type: added
---
title: Backfill releases table updated_at column and add not null constraints to created_at and updated_at
merge_request: 17400
author:
type: fixed
---
title: Update PumaWorkerKiller defaults
merge_request: 17758
author:
type: performance
---
title: Bump GITLAB_ELASTICSEARCH_INDEXER_VERSION=v1.4.0
merge_request: 18558
author:
type: fixed
---
title: Fix viewing merge reqeust from a fork that's being deleted
merge_request: 17894
author:
type: fixed
---
title: Only schedule updating push-mirrors once per push
merge_request: 17902
author:
type: performance
---
title: Use cache_method_asymmetrically with Repository#has_visible_content?
merge_request: 17975
author:
type: fixed
---
title: Adds management project for a cluster
merge_request: 17866
author:
type: changed
---
title: Create a persistent ref per pipeline for keeping pipelines run from force-push
and merged results
merge_request: 17043
author:
type: fixed
---
title: Reduce lock contention of deployment creation by allocating IID outside
of the pipeline transaction
merge_request: 17696
author:
type: performance
---
title: Add API for manually creating and updating deployments
merge_request: 17620
author:
type: added
---
title: Improve UI for admin/projects and group/settings/projects pages
merge_request: 17247
author:
type: changed
---
title: Increase group avatar size to 40px
merge_request: 18654
author:
type: changed
---
title: Improve UI of documentation under /help
merge_request: 18331
author:
type: changed
---
title: Improve admin/system_info page ui
merge_request: 17829
author:
type: changed
---
title: Show correct CI indicator when build succeeded with warnings.
merge_request: 17034
author:
type: fixed
---
title: Include in the callout message a list of jobs that caused missing dependencies
failure.
merge_request: 18219
author:
type: added
---
title: Add max_artifacts_size fields under project and group settings.
merge_request: 18286
author:
type: added
---
title: MR Test Summary now shows errors as failures.
merge_request: 17039
author:
type: changed
---
title: Fix signup link in admin area not being disabled
merge_request: 16726
author: Illya Klymov
type: fixed
---
title: Expose name property in imports API
merge_request: 16848
author:
type: added
---
title: Require admins to enter admin-mode by re-authenticating before performing
administrative operations
merge_request: 16981
author: Roger Rüttimann & Diego Louzán
type: added
---
title: Adds login input with copy box and supporting copy to empty container registry view
merge_request: 18244
author: nate geslin
type: added
---
title: Create clusters with VPC-Native enabled
merge_request: 18284
author:
type: changed
---
title: Avoid knative and prometheus uninstall race condition
merge_request: 18020
author:
type: changed
---
title: Fix bug with new wiki not being indexed
merge_request: 18051
author:
type: fixed
---
title: Fix moved help URL for monitoring performance
merge_request:
author:
type: fixed
---
title: Fix N+1 queries in Jira Development Panel API endpoint
merge_request: 18329
author:
type: performance
---
title: Do not strip forwarded message body when creating an issue from Service Desk
email.
merge_request: 18196
author:
type: fixed
---
title: Fix styling of set status emoji picker
merge_request: 18509
author:
type: fixed
---
title: Narrow snippet search scope in GitLab.com
merge_request: 17625
author:
type: performance
---
title: Generate LFS token authorization for user LFS requests
merge_request: 17332
author:
type: fixed
---
title: Limit snippets search count
merge_request: 17585
author:
type: performance
---
title: Add trigram index on snippet content
merge_request: 17806
author:
type: performance
---
title: Move SMAU usage counters to the UsageData count field
merge_request: 17074
author:
type: fixed
---
title: Preserve custom .gitlab-ci.yml config path when forking.
merge_request: 17817
author: Mathieu Parent
type: added
---
title: Add "Custom HTTP Git clone URL root" setting
merge_request: 18422
author:
type: added
---
title: Add GitHub & Gitea importers project filtering
merge_request: 16823
author:
type: added
---
title: Add project filtering to Bitbucket Cloud import
merge_request: 16828
author:
type: added
---
title: Upgrade Gitaly to v1.64
merge_request: 16788
author:
type: added
---
title: Upgrade to Gitaly v1.66.0
merge_request: 17900
author:
type: changed
---
title: Upgrade to Gitaly v1.67.0
merge_request: 18326
author:
type: changed
---
title: Set name and updated_at properly in GitHub ReleaseImporter
merge_request: 17020
author:
type: fixed
---
title: Add support for epic update through GraphQL API.
merge_request: 18440
author:
type: added
---
title: Fix visibility level error when updating group from API
merge_request: 17227
author: Mathieu Parent
type: fixed
---
title: 'API: Add missing group parameters'
merge_request: 17220
author: Mathieu Parent
type: added
---
title: Optimize SQL requests for BlameController and CommitsController
merge_request: 18342
author:
type: performance
---
title: Cleanup background migrations for any approval rules
merge_request: 18256
author:
type: changed
---
title: Remove N+1 for fetching commits signatures
merge_request: 18389
author:
type: performance
---
title: Allow intra-project MR dependencies
merge_request: 16799
author:
type: changed
---
title: Ignore incoming emails with X-Autoreply header.
merge_request: 18118
author:
type: fixed
---
title: Ignore id column of ci_build_trace_sections table
merge_request: 17805
author:
type: change
---
title: Use search scope label in empty results message
merge_request: 16324
author:
type: changed
---
title: Increase the limit of includes in CI file to 100
merge_request: 17807
author:
type: fixed
---
title: Provides internationalization support to chart legends
merge_request: 16832
author:
type: added
---
title: Support Create/Read/Destroy operations in Feature Flag API
merge_request: 18198
author:
type: added
---
title: Expose subscribed attribute for epic on API
merge_request: 18475
author:
type: added
---
title: Expose web_url for epics on API
merge_request: 17380
author:
type: added
---
title: Sync issuables state_id with null values
merge_request: 16480
author:
type: other
---
title: Deprecate usage of state column for issues and merge requests
merge_request: 18099
author:
type: changed
---
title: Fix permissions for group milestones
merge_request:
author:
type: fixed
---
title: Add allowFilter and allowAnySHA1InWant for partial clones
merge_request: 16850
author:
type: added
---
title: Use GetBlobs RPC for uri type
merge_request: 16824
author:
type: performance
---
title: Removing cleanup:repo, cleanup:dirs
merge_request: 18087
author:
type: deprecated
---
title: Add file matching rule to flexible CI rules
merge_request: 16574
author:
type: added
---
title: Document Git LFS and max file size interaction
merge_request: 17609
author:
type: other
---
title: Knative version bump 0.6 -> 0.7
merge_request: 17367
author: Chris Baumbauer
type: changed
---
title: Add proper label REST API for update, delete and promote
merge_request: 17239
author: Mathieu Parent
type: added
---
title: Show the "Set up CI/CD" prompt in empty repositories when applicable.
merge_request: 17274
author: Ben McCormick
type: changed
---
title: Fixes wrong link on Protected paths admin settings
merge_request: 17945
author:
type: other
---
title: Allow users to configure protected paths from Admin panel
merge_request: 31246
author:
type: added
---
title: Show related merge requests in pipeline view
merge_request: 18697
author:
type: added
---
title: 'Geo: Enable replicating uploads, LFS objects, and artifacts in Object Storage'
merge_request: 18482
author:
type: added
---
title: Use MR links in PipelinePresenter#ref_text for branch pipelines
merge_request: 17947
author:
type: changed
---
title: Add edit button to release blocks on Releases page
merge_request: 18411
author:
type: added
---
title: Add "Edit Release" page
merge_request: 18033
author:
type: added
---
title: Allow releases to be targeted by URL anchor links on the Releases page
merge_request: 17150
author:
type: added
---
title: Fix button link foreground color
merge_request: 18669
author:
type: fixed
---
title: Suppress error messages shown when navigating to a new page
merge_request: 17706
author:
type: fixed
---
title: Stopped CRD apply retrying from allowing silent failures
merge_request: 18421
author:
type: fixed
---
title: Introduce a lightweight diffs_metadata endpoint
merge_request: 18104
author:
type: added
---
title: Adjust unnapliable suggestions in expanded lines
merge_request: 17286
author:
type: fixed
---
title: Update Pages to v1.11.0
merge_request: 18010
author:
type: other
---
title: Add columns for per project/group max pages/artifacts sizes
merge_request: 17231
author:
type: added
---
title: Better job naming for Docker.gitlab-ci.yml
merge_request: 17218
author: luca.orlandi@gmail.com
type: other
---
title: Add warnings to performance bar when page shows signs of poor performance
merge_request: 17612
author:
type: changed
---
title: Enable preview of private artifacts
merge_request: 16675
author: Tuomo Ala-Vannesluoma
type: added
---
title: Embed metrics time window scroll no longer affects other embeds
merge_request: 18109
author:
type: fixed
---
title: Fix error tracking table layout on small screens
merge_request: 18325
author:
type: fixed
---
title: Fix error where helper was incorrectly returning `true`
merge_request: 18231
author:
type: fixed
---
title: Remove duplicate primary button in dashboard snippets
merge_request: 32048
author: George Tsiolis
type: fixed
---
title: Show error message when setting an invalid group ID for the performance bar
merge_request:
author:
type: fixed
---
title: Fixes issues with the security reports migration
merge_request: 17519
author:
type: fixed
---
title: Add a policy check for system notes that may not be visible due to cross references
to private items
merge_request:
author:
type: security
---
title: Display only participants that user has permission to see on milestone page
merge_request:
author:
type: security
---
title: Do not disclose project milestones on group milestones page when project milestones
access is disabled in project settings
merge_request:
author:
type: security
---
title: Check permissions before showing head pipeline blocking merge requests
merge_request:
author:
type: security
---
title: Fix private feature Elasticsearch leak
merge_request:
author:
type: security
---
title: Fix new project path being disclosed through unsubscribe link of issue/merge
requests
merge_request:
author:
type: security
---
title: Prevent bypassing email verification using Salesforce
merge_request:
author:
type: security
---
title: Do not show resource label events referencing not accessible labels.
merge_request:
author:
type: security
---
title: Cancel all running CI jobs triggered by the user who is just blocked
merge_request:
author:
type: security
---
title: Fix Gitaly SearchBlobs flag RPC injection
merge_request:
author:
type: security
---
title: Only render fixed number of mermaid blocks
merge_request:
author:
type: security
---
title: Prevent GitLab accounts takeover if SAML is configured
merge_request:
author:
type: security
---
title: Limit search for IID to a type to avoid leaking records with the same IID that
the user does not have access to
merge_request:
author:
type: security
---
title: Upgrade Rouge to v3.11.0
merge_request: 17011
author:
type: other
---
title: Fix erroneous "No activities found" message
merge_request: 18434
author:
type: fixed
---
title: Enable Google API retries for uploads
merge_request: 18040
author:
type: fixed
---
title: Fix Gitaly N+1 queries in related merge requests API
merge_request: 17850
author:
type: performance
---
title: Fix project imports for pipelines for merge requests
merge_request: 17799
author:
type: fixed
---
title: Fix inability to set snippet visibility via API
merge_request: 18612
author:
type: fixed
---
title: 'GitHub import: Handle nil published_at dates'
merge_request: 18355
author:
type: fixed
---
title: Log Sidekiq exceptions properly in JSON format
merge_request: 17412
author:
type: fixed
---
title: Hide license breakdown in /admin if user count is high
merge_request: 18825
author:
type: performance
---
title: Limit diverging commit counts requests
merge_request: 16737
author:
type: performance
---
title: Reduce idle in transaction time when updating a merge request
merge_request: 18493
author:
type: performance
---
title: Add backend support for selecting custom templates by ID
merge_request: 18178
author:
type: fixed
---
title: Show the original branch name and link of merge request in pipeline emails
merge_request: 17513
author:
type: fixed
---
title: Sort vulnerabilities by severity then confidence for dashboard and pipeline views
merge_request: 18675
author:
type: changed
---
title: Changes response body of liveness check to be more accurate
merge_request: 17655
author:
type: changed
---
title: Do not show new issue button on archived projects
merge_request: 18590
author:
type: changed
---
title: Stops the expand button in reports from expanding
merge_request: 18064
author:
type: fixed
---
title: Create table for grafana api token for metrics embeds
merge_request: 17234
author:
type: added
---
title: Add endpoint to proxy requests to grafana's proxy endpoint
merge_request: 18210
author:
type: added
---
title: Cross-link unreplicated Geo types to issues
merge_request: 18443
author:
type: changed
---
title: Add timeout mechanism for CI config validation
merge_request: 16807
author:
type: fixed
---
title: Fixes embedded metrics chart tooltip spacing
merge_request: 18543
author:
type: fixed
---
title: Update GitLab Runner Helm Chart to 0.10.0
merge_request: 18879
author:
type: other
---
title: Update GitLab Runner Helm Chart to 0.9.0
merge_request: 17326
author:
type: other
---
title: Update GitLab Shell to v10.2.0
merge_request: 18735
author:
type: other
---
title: Add pipeline preparing status icons
merge_request: 17923
author:
type: added
---
title: Remove Postgresql specific setup tasks and move to schema.rb
merge_request:
author:
type: other
---
title: Use new Ansi2json job log converter via feature flag
merge_request: 18134
author:
type: added
---
title: Make instance configuration user friendly
merge_request: 18363
author: Takuya Noguchi
type: other
---
title: Add web_exporter to expose Prometheus metrics
merge_request: 17943
author:
type: added
---
title: Display reCAPTCHA modal when making issue public
merge_request: 17553
author:
type: fixed
---
title: Display if an issue was moved in issue list
merge_request: 17102
author:
type: changed
---
title: Redo fix for related issues border radius
merge_request: 17480
author:
type: fixed
---
title: Update Workhorse to v8.14.0
merge_request: 18391
author:
type: other
---
title: Add timeouts for each RPC call
merge_request: 31766
author:
type: changed
# frozen_string_literal: true
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class CreateClustersApplicationsElasticStack < ActiveRecord::Migration[5.2]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
def change
create_table :clusters_applications_elastic_stacks do |t|
t.timestamps_with_timezone null: false
t.references :cluster, null: false, index: false, foreign_key: { on_delete: :cascade }
t.integer :status, null: false
t.string :version, null: false, limit: 255
t.string :kibana_hostname, limit: 255
t.text :status_reason
t.index :cluster_id, unique: true
end
end
end
......@@ -1055,6 +1055,17 @@ ActiveRecord::Schema.define(version: 2019_10_17_045817) do
t.index ["cluster_id"], name: "index_clusters_applications_cert_managers_on_cluster_id", unique: true
end
create_table "clusters_applications_elastic_stacks", force: :cascade do |t|
t.datetime_with_timezone "created_at", null: false
t.datetime_with_timezone "updated_at", null: false
t.bigint "cluster_id", null: false
t.integer "status", null: false
t.string "version", limit: 255, null: false
t.string "kibana_hostname", limit: 255
t.text "status_reason"
t.index ["cluster_id"], name: "index_clusters_applications_elastic_stacks_on_cluster_id", unique: true
end
create_table "clusters_applications_helm", id: :serial, force: :cascade do |t|
t.integer "cluster_id", null: false
t.datetime "created_at", null: false
......@@ -4109,6 +4120,7 @@ ActiveRecord::Schema.define(version: 2019_10_17_045817) do
add_foreign_key "clusters", "projects", column: "management_project_id", name: "fk_f05c5e5a42", on_delete: :nullify
add_foreign_key "clusters", "users", on_delete: :nullify
add_foreign_key "clusters_applications_cert_managers", "clusters", on_delete: :cascade
add_foreign_key "clusters_applications_elastic_stacks", "clusters", on_delete: :cascade
add_foreign_key "clusters_applications_helm", "clusters", on_delete: :cascade
add_foreign_key "clusters_applications_ingress", "clusters", on_delete: :cascade
add_foreign_key "clusters_applications_jupyter", "clusters", on_delete: :cascade
......
......@@ -442,7 +442,7 @@ personal_access_token = User.find(123).personal_access_tokens.create(
scopes: [:api]
)
personal_access_token.token
puts personal_access_token.token
```
You might also want to manually set the token string:
......
......@@ -6,8 +6,7 @@ added translations to the community of translators.
At the same time, it creates a merge request to merge all newly added
& approved translations. Find the [merge request created by
`gitlab-crowdin-bot`](https://gitlab.com/gitlab-org/gitlab/merge_requests?scope=all&utf8=%E2%9C%93&state=opened&author_username=gitlab-crowdin-bot)
to see new and merged merge requests. They are created in EE and need
to be ported to CE manually.
to see new and merged merge requests.
## Validation
......@@ -21,7 +20,7 @@ doesn't do. Create a new pipeline at `https://gitlab.com/gitlab-org/gitlab/pipel
If there are validation errors, the easiest solution is to disapprove
the offending string in Crowdin, leaving a comment with what is
required to fix the offense. There is an
[issue](https://gitlab.com/gitlab-org/gitlab-foss/issues/49208)
[issue](https://gitlab.com/gitlab-org/gitlab/issues/23256)
suggesting to automate this process. Disapproving will exclude the
invalid translation, the merge request will be updated within a few
minutes.
......@@ -37,14 +36,12 @@ checked once more as discussed in [confidential issue](../../user/project/issues
## Merging translations
When all translations are found good and pipelines pass the
translations can be merged into the master branch. After that is done,
create a new merge request cherry-picking the translations from EE to
CE. When merging the translations, make sure to check the `Remove
translations can be merged into the master branch. When merging the translations, make sure to check the `Remove
source branch` checkbox, so Crowdin recreates the `master-i18n` from
master after the new translation was merged.
We are discussing automating this entire process
[here](https://gitlab.com/gitlab-org/gitlab-foss/issues/39309).
[here](https://gitlab.com/gitlab-org/gitlab/issues/19896).
## Recreate the merge request
......
......@@ -146,7 +146,15 @@ sast:
CI_DEBUG_TRACE: "true"
```
### Using a variable to pass username and password to a private Maven repository
### Using environment variables to pass credentials for private repositories
Some analyzers require downloading the project's dependencies in order to
perform the analysis. In turn, such dependencies may live in private Git
repositories and thus require credentials like username and password to download them.
Depending on the analyzer, such credentials can be provided to
it via [custom environment variables](#custom-environment-variables).
#### Using a variable to pass username and password to a private Maven repository
If you have a private Apache Maven repository that requires login credentials,
you can use the `MAVEN_CLI_OPTS` [environment variable](#available-variables)
......@@ -234,6 +242,19 @@ Some analyzers can be customized with environment variables.
| `SBT_PATH` | spotbugs | Path to the `sbt` executable. |
| `FAIL_NEVER` | spotbugs | Set to `1` to ignore compilation failure. |
#### Custom environment variables
> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/18193) in GitLab Ultimate 12.5.
In addition to the aforementioned SAST configuration variables,
all [custom environment variables](../../../ci/variables/README.md#creating-a-custom-environment-variable) are propagated
to the underlying SAST analyzer images if
[the SAST vendored template](#configuration) is used.
CAUTION: **Caution:**
Variables having names starting with these prefixes will **not** be propagated to the SAST Docker container and/or
analyzer containers: `DOCKER_`, `CI`, `GITLAB_`, `FF_`, `HOME`, `PWD`, `OLDPWD`, `PATH`, `SHLVL`, `HOSTNAME`.
## Reports JSON format
CAUTION: **Caution:**
......
......@@ -35,45 +35,12 @@ sast:
export DOCKER_HOST='tcp://localhost:2375'
fi
fi
- | # this is required to avoid undesirable reset of Docker image ENV variables being set on build stage
function propagate_env_vars() {
CURRENT_ENV=$(printenv)
for VAR_NAME; do
echo $CURRENT_ENV | grep "${VAR_NAME}=" > /dev/null && echo "--env $VAR_NAME "
done
}
- |
printenv | grep -E '^(DOCKER_|CI|GITLAB_|FF_|HOME|PWD|OLDPWD|PATH|SHLVL|HOSTNAME)' | cut -d'=' -f1 | \
(while IFS='\\n' read -r VAR; do unset -v "$VAR"; done; /bin/printenv > .env)
- |
docker run \
$(propagate_env_vars \
SAST_BANDIT_EXCLUDED_PATHS \
SAST_ANALYZER_IMAGES \
SAST_ANALYZER_IMAGE_PREFIX \
SAST_ANALYZER_IMAGE_TAG \
SAST_DEFAULT_ANALYZERS \
SAST_PULL_ANALYZER_IMAGES \
SAST_BRAKEMAN_LEVEL \
SAST_FLAWFINDER_LEVEL \
SAST_GITLEAKS_ENTROPY_LEVEL \
SAST_GOSEC_LEVEL \
SAST_EXCLUDED_PATHS \
SAST_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \
SAST_PULL_ANALYZER_IMAGE_TIMEOUT \
SAST_RUN_ANALYZER_TIMEOUT \
SAST_JAVA_VERSION \
ANT_HOME \
ANT_PATH \
GRADLE_PATH \
JAVA_OPTS \
JAVA_PATH \
JAVA_8_VERSION \
JAVA_11_VERSION \
MAVEN_CLI_OPTS \
MAVEN_PATH \
MAVEN_REPO_PATH \
SBT_PATH \
FAIL_NEVER \
) \
--env-file .env \
--volume "$PWD:/code" \
--volume /var/run/docker.sock:/var/run/docker.sock \
"registry.gitlab.com/gitlab-org/security-products/sast:$SAST_VERSION" /app/bin/run /code
......
......@@ -40,7 +40,7 @@ module Gitlab
private
def repository_update_command
'helm repo update' if repository
'helm repo update'
end
# Uses `helm upgrade --install` which means we can use this for both
......
......@@ -74,6 +74,7 @@ module Gitlab
clusters_applications_prometheus: count(::Clusters::Applications::Prometheus.available),
clusters_applications_runner: count(::Clusters::Applications::Runner.available),
clusters_applications_knative: count(::Clusters::Applications::Knative.available),
clusters_applications_elastic_stack: count(::Clusters::Applications::ElasticStack.available),
in_review_folder: count(::Environment.in_review_folder),
groups: count(Group),
issues: count(Issue),
......
......@@ -3510,6 +3510,9 @@ msgstr ""
msgid "ClusterIntegration|Copy Jupyter Hostname"
msgstr ""
msgid "ClusterIntegration|Copy Kibana Hostname"
msgstr ""
msgid "ClusterIntegration|Copy Knative Endpoint"
msgstr ""
......@@ -3555,6 +3558,9 @@ msgstr ""
msgid "ClusterIntegration|Did you know?"
msgstr ""
msgid "ClusterIntegration|Elastic Stack"
msgstr ""
msgid "ClusterIntegration|Enable Cloud Run on GKE (beta)"
msgstr ""
......@@ -3675,6 +3681,9 @@ msgstr ""
msgid "ClusterIntegration|Key pair name"
msgstr ""
msgid "ClusterIntegration|Kibana Hostname"
msgstr ""
msgid "ClusterIntegration|Knative"
msgstr ""
......@@ -3978,6 +3987,9 @@ msgstr ""
msgid "ClusterIntegration|The associated private key will be deleted and cannot be restored."
msgstr ""
msgid "ClusterIntegration|The elastic stack collects logs from all pods in your cluster"
msgstr ""
msgid "ClusterIntegration|The endpoint is in the process of being assigned. Please check your Kubernetes cluster or Quotas on Google Kubernetes Engine if it takes a long time."
msgstr ""
......
......@@ -79,6 +79,10 @@ FactoryBot.define do
cluster factory: %i(cluster with_installed_helm provided_by_gcp)
end
factory :clusters_applications_elastic_stack, class: Clusters::Applications::ElasticStack do
cluster factory: %i(cluster with_installed_helm provided_by_gcp)
end
factory :clusters_applications_prometheus, class: Clusters::Applications::Prometheus do
cluster factory: %i(cluster with_installed_helm provided_by_gcp)
end
......
......@@ -178,6 +178,37 @@ shared_examples "installing applications on a cluster" do
end
end
context 'when user installs Elastic Stack' do
before do
allow(ClusterInstallAppWorker).to receive(:perform_async)
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_in)
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_async)
create(:clusters_applications_helm, :installed, cluster: cluster)
create(:clusters_applications_ingress, :installed, external_ip: '127.0.0.1', cluster: cluster)
page.within('.js-cluster-application-row-elastic_stack') do
click_button 'Install'
end
end
it 'shows status transition' do
page.within('.js-cluster-application-row-elastic_stack') do
expect(page).to have_css('.js-cluster-application-install-button', exact_text: 'Installing')
Clusters::Cluster.last.application_elastic_stack.make_installing!
expect(page).to have_css('.js-cluster-application-install-button', exact_text: 'Installing')
Clusters::Cluster.last.application_elastic_stack.make_installed!
expect(page).to have_css('.js-cluster-application-uninstall-button', exact_text: 'Uninstall')
end
expect(page).to have_content('Elastic Stack was successfully installed on your Kubernetes cluster')
end
end
context 'when user installs Ingress' do
before do
allow(ClusterInstallAppWorker).to receive(:perform_async)
......
......@@ -35,6 +35,7 @@
"external_ip": { "type": ["string", "null"] },
"external_hostname": { "type": ["string", "null"] },
"hostname": { "type": ["string", "null"] },
"kibana_hostname": { "type": ["string", "null"] },
"email": { "type": ["string", "null"] },
"update_available": { "type": ["boolean", "null"] },
"can_uninstall": { "type": "boolean" }
......
......@@ -13,6 +13,9 @@ describe('Applications', () => {
beforeEach(() => {
Applications = Vue.extend(applications);
gon.features = gon.features || {};
gon.features.enableClusterApplicationElasticStack = true;
});
afterEach(() => {
......@@ -54,6 +57,10 @@ describe('Applications', () => {
it('renders a row for Knative', () => {
expect(vm.$el.querySelector('.js-cluster-application-row-knative')).not.toBeNull();
});
it('renders a row for Elastic Stack', () => {
expect(vm.$el.querySelector('.js-cluster-application-row-elastic_stack')).not.toBeNull();
});
});
describe('Group cluster applications', () => {
......@@ -91,6 +98,10 @@ describe('Applications', () => {
it('renders a row for Knative', () => {
expect(vm.$el.querySelector('.js-cluster-application-row-knative')).not.toBeNull();
});
it('renders a row for Elastic Stack', () => {
expect(vm.$el.querySelector('.js-cluster-application-row-elastic_stack')).not.toBeNull();
});
});
describe('Instance cluster applications', () => {
......@@ -128,6 +139,10 @@ describe('Applications', () => {
it('renders a row for Knative', () => {
expect(vm.$el.querySelector('.js-cluster-application-row-knative')).not.toBeNull();
});
it('renders a row for Elastic Stack', () => {
expect(vm.$el.querySelector('.js-cluster-application-row-elastic_stack')).not.toBeNull();
});
});
describe('Ingress application', () => {
......@@ -168,6 +183,7 @@ describe('Applications', () => {
prometheus: { title: 'Prometheus' },
jupyter: { title: 'JupyterHub', hostname: '' },
knative: { title: 'Knative', hostname: '' },
elastic_stack: { title: 'Elastic Stack', kibana_hostname: '' },
},
});
......@@ -260,7 +276,11 @@ describe('Applications', () => {
},
});
expect(vm.$el.querySelector('.js-hostname').getAttribute('readonly')).toEqual(null);
expect(
vm.$el
.querySelector('.js-cluster-application-row-jupyter .js-hostname')
.getAttribute('readonly'),
).toEqual(null);
});
});
......@@ -273,7 +293,9 @@ describe('Applications', () => {
},
});
expect(vm.$el.querySelector('.js-hostname')).toBe(null);
expect(vm.$el.querySelector('.js-cluster-application-row-jupyter .js-hostname')).toBe(
null,
);
});
});
......@@ -287,7 +309,11 @@ describe('Applications', () => {
},
});
expect(vm.$el.querySelector('.js-hostname').getAttribute('readonly')).toEqual('readonly');
expect(
vm.$el
.querySelector('.js-cluster-application-row-jupyter .js-hostname')
.getAttribute('readonly'),
).toEqual('readonly');
});
});
......@@ -299,7 +325,9 @@ describe('Applications', () => {
});
it('does not render input', () => {
expect(vm.$el.querySelector('.js-hostname')).toBe(null);
expect(vm.$el.querySelector('.js-cluster-application-row-jupyter .js-hostname')).toBe(
null,
);
});
it('renders disabled install button', () => {
......@@ -361,4 +389,84 @@ describe('Applications', () => {
});
});
});
describe('Elastic Stack application', () => {
describe('with ingress installed with ip & elastic stack installable', () => {
it('renders hostname active input', () => {
vm = mountComponent(Applications, {
applications: {
...APPLICATIONS_MOCK_STATE,
ingress: {
title: 'Ingress',
status: 'installed',
externalIp: '1.1.1.1',
},
},
});
expect(
vm.$el
.querySelector('.js-cluster-application-row-elastic_stack .js-hostname')
.getAttribute('readonly'),
).toEqual(null);
});
});
describe('with ingress installed without external ip', () => {
it('does not render hostname input', () => {
vm = mountComponent(Applications, {
applications: {
...APPLICATIONS_MOCK_STATE,
ingress: { title: 'Ingress', status: 'installed' },
},
});
expect(vm.$el.querySelector('.js-cluster-application-row-elastic_stack .js-hostname')).toBe(
null,
);
});
});
describe('with ingress & elastic stack installed', () => {
it('renders readonly input', () => {
vm = mountComponent(Applications, {
applications: {
...APPLICATIONS_MOCK_STATE,
ingress: { title: 'Ingress', status: 'installed', externalIp: '1.1.1.1' },
elastic_stack: { title: 'Elastic Stack', status: 'installed', kibana_hostname: '' },
},
});
expect(
vm.$el
.querySelector('.js-cluster-application-row-elastic_stack .js-hostname')
.getAttribute('readonly'),
).toEqual('readonly');
});
});
describe('without ingress installed', () => {
beforeEach(() => {
vm = mountComponent(Applications, {
applications: APPLICATIONS_MOCK_STATE,
});
});
it('does not render input', () => {
expect(vm.$el.querySelector('.js-cluster-application-row-elastic_stack .js-hostname')).toBe(
null,
);
});
it('renders disabled install button', () => {
expect(
vm.$el
.querySelector(
'.js-cluster-application-row-elastic_stack .js-cluster-application-install-button',
)
.getAttribute('disabled'),
).toEqual('disabled');
});
});
});
});
......@@ -52,6 +52,12 @@ const CLUSTERS_MOCK_DATA = {
email: 'test@example.com',
can_uninstall: false,
},
{
name: 'elastic_stack',
status: APPLICATION_STATUS.INSTALLING,
status_reason: 'Cannot connect',
can_uninstall: false,
},
],
},
},
......@@ -98,6 +104,11 @@ const CLUSTERS_MOCK_DATA = {
status_reason: 'Cannot connect',
email: 'test@example.com',
},
{
name: 'elastic_stack',
status: APPLICATION_STATUS.ERROR,
status_reason: 'Cannot connect',
},
],
},
},
......@@ -110,6 +121,7 @@ const CLUSTERS_MOCK_DATA = {
'/gitlab-org/gitlab-shell/clusters/1/applications/prometheus': {},
'/gitlab-org/gitlab-shell/clusters/1/applications/jupyter': {},
'/gitlab-org/gitlab-shell/clusters/1/applications/knative': {},
'/gitlab-org/gitlab-shell/clusters/1/applications/elastic_stack': {},
},
};
......@@ -131,6 +143,7 @@ const APPLICATIONS_MOCK_STATE = {
prometheus: { title: 'Prometheus' },
jupyter: { title: 'JupyterHub', status: 'installable', hostname: '' },
knative: { title: 'Knative ', status: 'installable', hostname: '' },
elastic_stack: { title: 'Elastic Stack', status: 'installable', kibana_hostname: '' },
};
export { CLUSTERS_MOCK_DATA, DEFAULT_APPLICATION_STATE, APPLICATIONS_MOCK_STATE };
......@@ -153,6 +153,18 @@ describe('Clusters Store', () => {
uninstallSuccessful: false,
uninstallFailed: false,
},
elastic_stack: {
title: 'Elastic Stack',
status: mockResponseData.applications[7].status,
installFailed: false,
statusReason: mockResponseData.applications[7].status_reason,
requestReason: null,
kibana_hostname: '',
installed: false,
uninstallable: false,
uninstallSuccessful: false,
uninstallFailed: false,
},
},
environments: [],
fetchingEnvironments: false,
......@@ -183,5 +195,16 @@ describe('Clusters Store', () => {
`jupyter.${store.state.applications.ingress.externalIp}.nip.io`,
);
});
it('sets default hostname for elastic stack when ingress has a ip address', () => {
const mockResponseData =
CLUSTERS_MOCK_DATA.GET['/gitlab-org/gitlab-shell/clusters/2/status.json'].data;
store.updateStateFromServer(mockResponseData);
expect(store.state.applications.elastic_stack.kibana_hostname).toEqual(
`kibana.${store.state.applications.ingress.externalIp}.nip.io`,
);
});
});
});
......@@ -86,33 +86,6 @@ describe Gitlab::Kubernetes::Helm::InstallCommand do
end
end
context 'when there is no repository' do
let(:repository) { nil }
it_behaves_like 'helm commands' do
let(:commands) do
<<~EOS
helm init --upgrade
for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
#{helm_install_command}
EOS
end
let(:helm_install_command) do
<<~EOS.squish
helm upgrade app-name chart-name
--install
--reset-values
#{tls_flags}
--version 1.2.3
--set rbac.create\\=false,rbac.enabled\\=false
--namespace gitlab-managed-apps
-f /data/helm/app-name/config/values.yaml
EOS
end
end
end
context 'when there is a pre-install script' do
let(:preinstall) { ['/bin/date', '/bin/true'] }
......
......@@ -32,6 +32,7 @@ describe Gitlab::UsageData do
create(:clusters_applications_prometheus, :installed, cluster: gcp_cluster)
create(:clusters_applications_runner, :installed, cluster: gcp_cluster)
create(:clusters_applications_knative, :installed, cluster: gcp_cluster)
create(:clusters_applications_elastic_stack, :installed, cluster: gcp_cluster)
ProjectFeature.first.update_attribute('repository_access_level', 0)
end
......@@ -120,6 +121,7 @@ describe Gitlab::UsageData do
clusters_applications_prometheus
clusters_applications_runner
clusters_applications_knative
clusters_applications_elastic_stack
in_review_folder
groups
issues
......@@ -190,6 +192,7 @@ describe Gitlab::UsageData do
expect(count_data[:clusters_applications_prometheus]).to eq(1)
expect(count_data[:clusters_applications_runner]).to eq(1)
expect(count_data[:clusters_applications_knative]).to eq(1)
expect(count_data[:clusters_applications_elastic_stack]).to eq(1)
end
it 'works when queries time out' do
......
# frozen_string_literal: true
require 'spec_helper'
describe Clusters::Applications::ElasticStack do
include_examples 'cluster application core specs', :clusters_applications_elastic_stack
include_examples 'cluster application status specs', :clusters_applications_elastic_stack
include_examples 'cluster application version specs', :clusters_applications_elastic_stack
include_examples 'cluster application helm specs', :clusters_applications_elastic_stack
describe '#can_uninstall?' do
let(:ingress) { create(:clusters_applications_ingress, :installed, external_hostname: 'localhost.localdomain') }
let(:elastic_stack) { create(:clusters_applications_elastic_stack, cluster: ingress.cluster) }
subject { elastic_stack.can_uninstall? }
it { is_expected.to be_truthy }
end
describe '#set_initial_status' do
before do
elastic_stack.set_initial_status
end
context 'when ingress is not installed' do
let(:cluster) { create(:cluster, :provided_by_gcp) }
let(:elastic_stack) { create(:clusters_applications_elastic_stack, cluster: cluster) }
it { expect(elastic_stack).to be_not_installable }
end
context 'when ingress is installed and external_ip is assigned' do
let(:ingress) { create(:clusters_applications_ingress, :installed, external_ip: '127.0.0.1') }
let(:elastic_stack) { create(:clusters_applications_elastic_stack, cluster: ingress.cluster) }
it { expect(elastic_stack).to be_installable }
end
context 'when ingress is installed and external_hostname is assigned' do
let(:ingress) { create(:clusters_applications_ingress, :installed, external_hostname: 'localhost.localdomain') }
let(:elastic_stack) { create(:clusters_applications_elastic_stack, cluster: ingress.cluster) }
it { expect(elastic_stack).to be_installable }
end
end
describe '#install_command' do
let!(:ingress) { create(:clusters_applications_ingress, :installed, external_ip: '127.0.0.1') }
let!(:elastic_stack) { create(:clusters_applications_elastic_stack, cluster: ingress.cluster) }
subject { elastic_stack.install_command }
it { is_expected.to be_an_instance_of(Gitlab::Kubernetes::Helm::InstallCommand) }
it 'is initialized with elastic stack arguments' do
expect(subject.name).to eq('elastic-stack')
expect(subject.chart).to eq('stable/elastic-stack')
expect(subject.version).to eq('1.8.0')
expect(subject).to be_rbac
expect(subject.files).to eq(elastic_stack.files)
end
context 'on a non rbac enabled cluster' do
before do
elastic_stack.cluster.platform_kubernetes.abac!
end
it { is_expected.not_to be_rbac }
end
context 'application failed to install previously' do
let(:elastic_stack) { create(:clusters_applications_elastic_stack, :errored, version: '0.0.1') }
it 'is initialized with the locked version' do
expect(subject.version).to eq('1.8.0')
end
end
end
describe '#uninstall_command' do
let!(:ingress) { create(:clusters_applications_ingress, :installed, external_ip: '127.0.0.1') }
let!(:elastic_stack) { create(:clusters_applications_elastic_stack, cluster: ingress.cluster) }
subject { elastic_stack.uninstall_command }
it { is_expected.to be_an_instance_of(Gitlab::Kubernetes::Helm::DeleteCommand) }
it 'is initialized with elastic stack arguments' do
expect(subject.name).to eq('elastic-stack')
expect(subject).to be_rbac
expect(subject.files).to eq(elastic_stack.files)
end
it 'specifies a post delete command to remove custom resource definitions' do
expect(subject.postdelete).to eq([
'kubectl delete pvc --selector release\\=elastic-stack'
])
end
end
describe '#files' do
let!(:ingress) { create(:clusters_applications_ingress, :installed, external_ip: '127.0.0.1') }
let!(:elastic_stack) { create(:clusters_applications_elastic_stack, cluster: ingress.cluster) }
let(:values) { subject[:'values.yaml'] }
subject { elastic_stack.files }
it 'includes elastic stack specific keys in the values.yaml file' do
expect(values).to include('ELASTICSEARCH_HOSTS')
end
end
end
......@@ -21,7 +21,7 @@ describe Clusters::Applications::Ingress do
describe '#can_uninstall?' do
subject { ingress.can_uninstall? }
it 'returns true if application_jupyter_nil_or_installable? AND external_ip_or_hostname? are true' do
it 'returns true if external ip is set and no application exists' do
ingress.external_ip = 'IP'
is_expected.to be_truthy
......@@ -33,6 +33,12 @@ describe Clusters::Applications::Ingress do
is_expected.to be_falsey
end
it 'returns false if application_elastic_stack_nil_or_installable? is false' do
create(:clusters_applications_elastic_stack, :installed, cluster: ingress.cluster)
is_expected.to be_falsey
end
it 'returns false if external_ip_or_hostname? is false' do
is_expected.to be_falsey
end
......
......@@ -508,9 +508,10 @@ describe Clusters::Cluster, :use_clean_rails_memory_store_caching do
let!(:runner) { create(:clusters_applications_runner, cluster: cluster) }
let!(:jupyter) { create(:clusters_applications_jupyter, cluster: cluster) }
let!(:knative) { create(:clusters_applications_knative, cluster: cluster) }
let!(:elastic_stack) { create(:clusters_applications_elastic_stack, cluster: cluster) }
it 'returns a list of created applications' do
is_expected.to contain_exactly(helm, ingress, cert_manager, prometheus, runner, jupyter, knative)
is_expected.to contain_exactly(helm, ingress, cert_manager, prometheus, runner, jupyter, knative, elastic_stack)
end
end
end
......
......@@ -423,6 +423,19 @@ describe Issue do
issue = create(:issue, title: 'testing-issue', confidential: true)
expect(issue.to_branch_name).to match /confidential-issue\z/
end
context 'issue title longer than 100 characters' do
let(:issue) { create(:issue, iid: 999, title: 'Lorem ipsum dolor sit amet consectetur adipiscing elit Mauris sit amet ipsum id lacus custom fringilla convallis') }
it "truncates branch name to at most 100 characters" do
expect(issue.to_branch_name.length).to be <= 100
end
it "truncates dangling parts of the branch name" do
# 100 characters would've got us "999-lorem...lacus-custom-fri".
expect(issue.to_branch_name).to eq("999-lorem-ipsum-dolor-sit-amet-consectetur-adipiscing-elit-mauris-sit-amet-ipsum-id-lacus-custom")
end
end
end
describe '#can_be_worked_on?' do
......
......@@ -132,6 +132,34 @@ describe Clusters::Applications::CreateService do
expect(subject.hostname).to eq('example.com')
end
end
context 'elastic stack application' do
let(:params) do
{
application: 'elastic_stack',
kibana_hostname: 'example.com'
}
end
before do
create(:clusters_applications_ingress, :installed, external_ip: "127.0.0.0", cluster: cluster)
expect_any_instance_of(Clusters::Applications::ElasticStack)
.to receive(:make_scheduled!)
.and_call_original
end
it 'creates the application' do
expect do
subject
cluster.reload
end.to change(cluster, :application_elastic_stack)
end
it 'sets the kibana_hostname' do
expect(subject.kibana_hostname).to eq('example.com')
end
end
end
context 'invalid application' do
......
......@@ -8,10 +8,6 @@ shared_examples 'cluster application helm specs' do |application_name|
it { is_expected.to be_an_instance_of(Gitlab::Kubernetes::Helm::DeleteCommand) }
it 'has the application name' do
expect(subject.name).to eq(application.name)
end
it 'has files' do
expect(subject.files).to eq(application.files)
end
......
elasticsearch:
enabled: true
cluster:
env:
MINIMUM_MASTER_NODES: "1"
master:
replicas: 2
client:
replicas: 1
data:
replicas: 1
kibana:
enabled: true
env:
ELASTICSEARCH_HOSTS: http://elastic-stack-elasticsearch-client:9200
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/tls-acme: "true"
logstash:
enabled: false
filebeat:
enabled: true
config:
output.file.enabled: false
output.elasticsearch:
enabled: true
hosts: ["http://elastic-stack-elasticsearch-client:9200"]
fluentd:
enabled: false
fluent-bit:
enabled: false
nginx-ldapauth-proxy:
enabled: false
elasticsearch-curator:
enabled: false
elasticsearch-exporter:
enabled: false
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