GitLab.org/GitLab: Release v12.0.0-ee
Name: GitLab
Owner: GitLab.org
Release: GitLab 12.0
Released: 2020-04-03
License: MIT
Release Assets:


[Notifications for shared CI runner limits on GitLab.com](https://docs.gitlab.com/ee/subscriptions/#ci-pipeline-minutes) (SaaS only)
> Group owners on GitLab.com will now be notified via email to let them know that
> the group's CI Minutes Usage Quota has expired, with instructions on how to purchase more CI Minutes.
[Restrict access by IP address](https://docs.gitlab.com/ee/user/group/index.html#ip-access-restriction-ultimate)
> Compliance-minded organizations may want to prohibit traffic from outside
> IP addresses from accessing company resources. This is especially helpful
> for organizations using VPNs, as you're now able to restrict traffic from
> outside a specified subnet from accessing a group's resources in the GitLab UI.
>
> Configurable at the group level on both self-managed and GitLab.com, maintaining tight control
> over your organization's most valued code just became easier than ever.
[GitLab Insights](https://docs.gitlab.com/ee/user/project/insights/index.html)
> GitLab Insights introduced in GitLab Ultimate 11.9 (feature flag) is now Generally Available (GA) in GitLab Ultimate 12.0.
>
> Configure the Insights that matter for your projects to explore data such as triage hygiene, issues created/closed per a given period, average time for merge requests to be merged and much more.
[Add ability to query epics in GraphQL](https://docs.gitlab.com/ee/api/graphql/#available-queries)
> GraphQL APIs allows users to request exactly the data they need, making it
> possible to get all required data in a limited number of requests.
>
> In this release, GitLab is now supporting the ability to query epics in the
> GraphQL API.
[Enhancements for system notes for adding and removing epic relationships](https://docs.gitlab.com/ee/user/group/epics/)
> Changes in epic relationships have not been recorded as system notes in the discussion feed of an epic.
>
> In GitLab 12.0, system notes are now recorded for when epic relationships for parent and sub-epics are added or removed.
[Add and remove child epics via quick actions](https://docs.gitlab.com/ee/user/project/quick_actions.html#quick-actions-for-epics-ultimate)
> Child epics cannot currently be added or removed from parent epics via quick actions.
>
> In GitLab 12.0, we have added the ability to add and remove child epics
> via the `/child_epic` and `/remove_child_epic` quick action commands.
[File syncing to Web Terminal](https://docs.gitlab.com/ee/user/project/web_ide/#file-syncing-to-web-terminal)
> In GitLab 12.0, changes made in the Web IDE will now be synced to the Web Terminal. User changes made
> in the Web IDE can now be tested within the Web Terminal before committing them to the project.
>
> This feature also helps to lower the barrier to entry for new contributors as they'll be able to view,
> edit, and test without installing local dependencies for a project.
>
> Please note that GitLab.com only supports Interactive Web Terminals through Private Runners.
[Project dependency list](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#dependency-list)
> You can now easily access a project's Dependency List (sometimes
> referred to as a Bill of Materials or BOM) from the left sidebar menu.
>
> The BOM indicates what components are included in your project, and often
> is requested by Security teams and Compliance teams. In addition to being
> able to view the report, you can also export the report to JSON.
[Vulnerability database available for viewing and accepting contributions](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#contributing-to-the-vulnerability-database)
> Our vulnerability database project can now be viewed [here](https://gitlab.com/gitlab-org/security-products/gemnasium-db).
> You can view the entries and verify the vulnerabilities you are most interested are a part of our checks.
>
> In addition, [here are guidelines](https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#contributing-to-the-vulnerability-database)
> on how you can contribute to help make the vulnerability database more robust.
[Add a reason when dismissing vulnerabilities](https://docs.gitlab.com/ee/user/application_security/#adding-a-dismissal-reason)
> When dismissing a vulnerability identified by our scanners, there is now a
> field available to add a reason detailing why this vulnerability was dismissed.
>
> This will allow security teams and developers to be able to review the
> history and understand why items were not remediated.
[No longer require Docker in Docker for DAST](https://docs.gitlab.com/ee/user/application_security/dast/)
> Dynamic Application Security Testing (DAST) no longer requires the use of Docker in Docker to run.
> As a result, the DAST Docker image (3GB) will now be cached on Runners.
>
> Note that the image is updated weekly, so the cache will be invalidated every Monday.
> {: .alert .alert-info}
[Sequential merge trains](https://docs.gitlab.com/ee/ci/merge_request_pipelines/#merge-trains-premium)
> With the 12.0 release we're introducing a new way to keep your `master` or
> release branches green: merge trains. Merge trains build on our
> [pipelines for merge requests/results](https://docs.gitlab.com/ee/ci/merge_request_pipelines/#pipelines-for-merged-results)
> feature by allowing you to queue up pipelines in sequence.
>
> For this first iteration, it's important to note that merge train pipelines
> run in sequence (one at a time) so, depending on the frequency and duration
> of your pipelines, it may or may not be appropriate to enable this feature yet for your team.
> {: .alert .alert-info}
>
> In the future we plan to enable it by default, but we want to have
> [parallelization support](https://gitlab.com/gitlab-org/gitlab-ee/issues/11222) in
> place first to make it more accessible to more teams.
[Lock all memberships to LDAP](https://docs.gitlab.com/ee/administration/auth/ldap/index.html#global-group-memberships-lock) (self-managed only)
> Organizations leaning on LDAP typically [synchronize](https://docs.gitlab.com/ee/administration/auth/ldap/index.html#group-sync)
> it with GitLab for permissions management.
>
> In GitLab 12.0, instances can now prevent permissions changes outside of LDAP by
> non-admins with an instance-level setting. With this approach, compliance-minded organizations can use this option to ensure
> that the permissions in LDAP are reflected on the instance - and aren't modifiable by users who aren't instance admins.
[Prevent non-admins from deleting projects](https://docs.gitlab.com/ee/administration/settings/visibility_and_access_controls) (self-managed only)
> Compliance-minded organizations may wish to ensure that projects - which may include important code in a repository - can only be
> archived, rather than deleted and permanently lost.
>
> With an instance-level setting to prevent project deletion by non-admins,
> instance administrators can feel more secure knowing that projects are being
> [archived](https://docs.gitlab.com/ee/user/project/settings/#archiving-a-project)
> and retained.
[Visual Reviews](https://docs.gitlab.com/ee/ci/review_apps/index.html#visual-reviews-starter)
> GitLab gives users the ability to automatically create [review
> apps](https://docs.gitlab.com/ee/ci/review_apps/) for each merge request.
> This allows anyone to see how the design or UX has been changed.
>
> In GitLab 12.0, we are expanding the ability to discuss those changes by
> bringing the ability to insert
> [visual review tools](https://gitlab.com/gitlab-org/gitlab-ee/issues/10761)
> directly into the Review App itself. With a small code snippet, users can enable
> designers, product managers, and other stakeholders to quickly provide
> feedback on a merge request without leaving the app.
[Dependency proxy is enabled per-group by default](https://docs.gitlab.com/ee/user/packages/dependency_proxy/index.html) (self-managed only)
> In GitLab 11.11, we launched the MVC of the [dependency proxy](https://docs.gitlab.com/ee/user/packages/dependency_proxy/index.html),
> which allows users to download and cache Docker images for faster, more reliable downloads.
>
> In GitLab 12.0, we have enabled the feature by default at the group level.
[Maven template now automatically pushes to the Maven Repository](https://docs.gitlab.com/ee/user/packages/maven_repository/index.html)
> Java developers need an easy way to build and manage their dependencies with GitLab's CI/CD pipelines.
>
> In GitLab 12.0, we have modified the bundled `Maven.gitlab-ci.yml` template to
> easily allow users to upload and manage their Java dependencies to the GitLab Maven Repository from their CI/CD pipelines.
[Git integration for JupyterHub](https://docs.gitlab.com/ee/user/clusters/applications.html#jupyter-git-integration)
> Deploying JupyterHub via GitLab's Kubernetes integration provides an easy way to get started with
> Jupyter notebooks, which can be used to create and share documents that contain live code, visualizations, and even runbooks.
>
> Starting with GitLab 12.0, JupyterLab’s Git extension is automatically provisioned and configured when installing JupyterHub
> onto your Kubernetes cluster. This integration enables full version control of your notebooks as well as issuance of Git
> commands within Jupyter. Git commands can be issued via the Git tab on the left panel or via Jupyter’s command line prompt.
[Validate Kubernetes credentials provided at cluster creation](https://docs.gitlab.com/ee/user/project/clusters/#adding-an-existing-kubernetes-cluster)
> Adding a Kubernetes cluster manually requires entering multiple data points and can be error prone. In order to effectively surface
> access and permission issues when adding a cluster manually, the kubernetes
> integration will now validate the reachability of the API URL as well as the validity of both then cluster token and CA certificate.
>
> Relevant alerts will be presented when an issue is encountered.
[Use GitLab Serverless with existing Knative installations](https://docs.gitlab.com/ee/user/project/clusters/serverless/#using-an-existing-installation-of-knative)
> Prior to this release, GitLab Serverless features could only be used when installing Knative via GitLab.
> With GitLab 12.0, existing installations of Knative can now take advantage of GitLab Serverless. Simply [add the existing
> cluster manually](https://docs.gitlab.com/ee/user/project/clusters/#adding-an-existing-kubernetes-cluster),
> add the relevant Serverless templates to your project, and GitLab will do the rest.
>
> This means you can now use GitLab Serverless with hosted Knative offerings, such
> as Google's [Cloud Run on GKE](https://cloud.google.com/run/) or IBM's
> [hosted Knative service](https://cloud.ibm.com/docs/containers?topic=containers-serverless-apps-knative).
[GitLab Runner 12.0](https://docs.gitlab.com/runner)
> We're also releasing GitLab Runner 12.0 today! GitLab Runner is the open source project
> that is used to run your CI/CD jobs and send the results back to GitLab.
>
> ##### Most interesting changes:
>
> - [Docker Credentials helper support](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1386)
> - [Add configuration of access_level for runners on registration](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1323)
> - [Allow configuration of Pod Security Context by Kubernetes Executor](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1036)
> - [Make PowerShell default for new registered Windows shell executors](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1406)
> - [Support windows docker volumes configuration](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1269)
>
> As mentioned in previous posts, with version GitLab Runner 12.0, we're also removing a few previously deprecated things:
>
> - [Remove deprecated clone/fetch command](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1372)
> - [Remove deprecated git clean strategy](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1370)
> - [Remove support for deprecated metrics_server setting](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1368)
> - [Remove support for deprecated entrypoint configuration for K8S](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1369)
> - [Remove support for deprecated S3 cache configuration](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1367)
> - [Remove support for deprecated distributions](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1130)
> - [Remove old docker helper image commands](https://gitlab.com/gitlab-org/gitlab-runner/merge_requests/1373)
>
> A list of all changes can be found in GitLab Runner's [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-runner/blob/v12.0.0/CHANGELOG.md).
[Omnibus improvements](https://docs.gitlab.com/omnibus/) (self-managed only)
> We continue to improve the GitLab Omnibus with every release.
>
> Some of the improvements in GitLab 12.0 are:
>
> - GitLab 12.0 includes [Mattermost 5.11](https://mattermost.com/blog/mattermost-5-11/),
> an [open source Slack-alternative](https://mattermost.com/) whose newest release includes a new remote CLI tool, plus much more.
> This version also includes [security updates](https://mattermost.com/security-updates/) and upgrading from earlier versions is recommended.
> - [Enabling JSON logging by default](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4102).
> - Grafana service is now enabled by default in omnibus-gitlab packages. Also, [OAuth authentication](https://docs.gitlab.com/omnibus/settings/grafana.html#using-gitlab-as-an-oauth-provider)
> is now automatically enabled between Grafana and GitLab.
> - [Improved GitLab metrics with directly instrumented ruby metrics](https://gitlab.com/gitlab-org/gitlab-ce/issues/60303)
[Performance improvements](https://gitlab.com/groups/gitlab-org/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&label_name%5B%5D=performance&milestone_title=12.0)
> We continue to improve the performance of GitLab with every release
> for GitLab instances of every size.
>
> Some of the improvements in GitLab 12.0 are:
>
> - [Make epics list page more efficient](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/13904)
> - [Avoid hitting the database for Elasticsearch results](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/12691)
> - [Avoid hitting Elasticsearch twice for search results](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/13120)
> - [Submit documents to ElasticSearch index in bulk](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/13917)
> - [Cache rendered Markdown in commit messages to improve performance of listing commits](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/29054)
> - [Improve performance of repository size limit check on each push](https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/13460)
> - [Improve performance when loading an issue or merge request with a long description](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/28597)
> - [Improve performance of merge requests with suggested changes](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/29027)
> - [Improve performance and reduce CPU usage of clones by using delta islands when repacking Git repositories](https://gitlab.com/gitlab-org/gitaly/merge_requests/1267)
> - [Improve peformance of monitoring charts](https://gitlab.com/gitlab-org/gitlab-ce/issues/58516)
> - [Fix Git N + 1 on ListLastCommit RPC](https://gitlab.com/gitlab-org/gitaly/merge_requests/1253)
> - [Improve Git code search performance by using `--perl-regexp`](https://gitlab.com/gitlab-org/gitaly/merge_requests/1241)
> - [Improve performance of `JobsController` by fixing Git N + 1](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/28093)
[Group-specific notification email addresses](https://docs.gitlab.com/ee/user/profile/notifications.html)
> In 12.0, we have added the ability to select a separate email address for group notifications.
> This now allows users to separate group notifications to different email addresses. For example, a work email address
> for a work group and a personal email address for personal groups.
[Issue API now responds with task completion statistics](https://docs.gitlab.com/ee/api/issues.html)
> Users are able to define tasks in issues and this information is surfaced in various places throughout the application.
>
> In GitLab 12.0, users will now have the ability to return task progress information through the API.
[New threaded discussion design](https://docs.gitlab.com/ee/user/discussions/)
> Our existing design for discussions for merge requests and issues involved many boxes and borders, often times
> making it difficult to follow the conversation.
>
> In GitLab 12.0, we introduced a redesign to enhance the user experience of discussions.
[Additional issue stats from the issues API](https://docs.gitlab.com/ee/api/issues_statistics.html)
> Users have been unable to get detailed issue statistics from the issues API.
>
> In GitLab 12.0, we are adding the ability to return counts of issues for all, closed, and opened states.
[Git object deduplication (Beta)](https://docs.gitlab.com/ee/administration/repository_storage_types.html#hashed-object-pools)
> Forking workflows make it easy to contribute to any project by
> creating a copy of the upstream project to work on before opening a
> merge request to merge your changes into the upstream project. For
> popular projects, the server side storage requirements needed for
> thousands of copies accumulate quickly and increase hosting costs.
>
> In GitLab 12.0, object deduplication can be enabled by instance
> administrators using the `object_pools` feature flag. When enabled,
> creating a fork of a public will also create an object pool and use
> [`objects/info/alternates`](https://git-scm.com/docs/gitrepository-layout#Documentation/gitrepository-layout.txt-objectsinfoalternates)
> to reduce the storage requirements of forks.
>
> Object deduplication requires hashed storage to be enabled, and for
> the parent project to be using hashed storage. Existing forks are not
> currently migrated to object pools automatically – for updates follow
> [gitaly#1560](https://gitlab.com/gitlab-org/gitaly/issues/1560).
>
> In an upcoming release, we will also implement
> [fast forking](https://gitlab.com/groups/gitlab-org/-/epics/607)
> by directly creating the fork in a deduplicated state. Currently the
> fork is first created, then deduplicated.
>
> Object deduplication has been enabled on GitLab.com since 30 May 2019,
> but it remains off by default for self-managed instances because of a
> [duplicate bitmap warning](https://gitlab.com/gitlab-org/gitaly/issues/1728)
> shown when fetching. This issue is fixed in 12.0 but the feature flag
> could not be removed in time for this release.
> {: .alert .alert-info}
[Enabled Git bitmap hash cache to speedup repacking](https://git-scm.com/docs/git-config/2.21.0#Documentation/git-config.txt-packwriteBitmapHashCache)
> In GitLab 12.0, when repacking Git repositories, a bitmap hash cache will be
> saved in the bitmap index. The cache improves repack performance,
> particularly when using delta islands.
>
> Note that versions of JGit prior to 3.5.0 are incompatible with the bitmap
> hash cache.
> {: .alert .alert-info}
[Support for AsciiDoc include directive](https://docs.gitlab.com/ee/user/asciidoc.html#includes)
> The AsciiDoc markup format supports declaratively including content
> from other files, allowing unnecessary duplication to be removed from
> documents. The AsciiDoctor implementation presumes a local file system,
> not a Git repository, preventing includes from being rendered when
> viewing an AsciiDoc file inside GitLab.
>
> In GitLab 12.0, the include directive (`include::example.adoc[]`) is
> now supported, allowing text files in the same branch or tag to be
> included when viewed in GitLab.
>
> Thanks [Guillaume Grossetie](https://gitlab.com/g.grossetie) for your
> [contribution](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/28417)!
[Multiple extends support in .gitlab-ci.yml](https://docs.gitlab.com/ee/ci/yaml/#extends)
> The `extends` keyword allows users to keep their GitLab CI/CD code [dry](https://dev.to/michalbryxi/how-to-dry-your-gitlab-ciyml-16pc).
> Using extends to condense common sections of code is a frequently used feature for advanced users of GitLab CI/CD,
> and is used by our own teams to [build GitLab](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/.gitlab/ci/rails.gitlab-ci.yml)
> as well as our [Auto DevOps](https://docs.gitlab.com/ee/topics/autodevops/) features.
>
> In GitLab 12.0, we're very happy to welcome a contribution from [Lumi Akimova](https://gitlab.com/qwolphin) to improve this feature
> by allowing users to include multiple `extends` snippets in a single job and,
> with multiple `extends`, you can now achieve streamlined and dry CI configuration.
>
> Thanks Lumi!
[Collapsible job logs](https://docs.gitlab.com/ee/ci/pipelines/index.html#expand-and-collapse-job-log-sections)
> In GitLab 12.0, we're adding the ability to expand and collapse the log output from GitLab CI/CD jobs.
> This will allow users to more easily debug certain steps in the job, and provide a great overview of the steps when desired -
> or a detailed view if you want to see the entire output.
>
> This originally started as a community contribution from [Matthias van de Meent](https://gitlab.com/matthias.vandemeent).
> Thank you Matthias for your contribution!
[Email notifications for broken master builds](https://docs.gitlab.com/ee/api/services#pipeline-emails)
> The GitLab [Pipeline Emails](https://gitlab.com/gitlab-org/gitlab-ce/issues/61721) service integration allows users to create
> email alerts on build completion and failure to a list of recipients.
> Previously, users could only subscribe to all build failures.
>
> In GitLab 12.0, we have added the option to only
> send the failure notification on the default branch for the project (e.g. `master`).
>
> Thank you to [Peter Marko](https://gitlab.com/petermarko) for this contribution!
[Improved support for passing variables to downstream pipelines](https://docs.gitlab.com/ee/ci/multi_project_pipelines.html#passing-variables-to-a-downstream-pipeline)
> In GitLab 11.8, we introduced the ability to [trigger](https://docs.gitlab.com/ee/ci/multi_project_pipelines.html#triggering-a-downstream-pipeline-using-a-bridge-job)
> a downstream pipeline from an upstream bridge job.
> We also introduced basic support for passing variables to the downstream pipeline.
>
> With GitLab 12.0, we support passing current environmental variables to the downstream pipeline as well.
> This allows users to provide context to the downstream pipeline as well as to the commit,
> merge request, or other details from the pipeline that triggered it.
[Faster shallow clones by default for all new projects in GitLab CI/CD](https://docs.gitlab.com/ee/user/project/pipelines/settings#git-shallow-clone)
> Since GitLab 8.9, GitLab CI/CD has supported shallow [git clones](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt)
> by specifying the `GIT_DEPTH` variable in your job definition.
>
> In GitLab 12.0, we've added the ability to set this depth at the project level - enabling project maintainers to default to
> a shallow clone if desired. Shallow Git clones are faster than cloning the entire Git repository every time,
> and if your CI/CD jobs are set up to build the latest, often a shallow clone is sufficient.
>
> Also in GitLab 12.0, new projects created in GitLab will, by default, have a `GIT_DEPTH` setting of `50` when they are created.
> This sensible default will help users have faster clone and build times with GitLab CI/CD,
> while still allowing advanced users to change this setting if required for different types of CI/CD use cases.
[Developers now can delete tags from the Container Registry via API](https://docs.gitlab.com/ee/api/container_registry.html#delete-a-repository-tag)
> The Container Registry API allows GitLab users to easily manage their registry programmatically.
>
> With GitLab 12.0, we have updated the [permissions model](https://docs.gitlab.com/ee/user/permissions.html#project-members-permissions)
> to allow Developers to delete a tag.
[Link and access a Zoom meeting from an issue](https://docs.gitlab.com/ee/user/project/issues/associate_zoom_meeting.html)
> In GitLab 12.0, we have made it easy to collaborate with teammates on an issue via a Zoom conference call.
> Paste a Zoom meeting link in the description of an issue.
> GitLab will detect the link and display a "Join Zoom meeting" button at the top underneath the title surfacing it to all collaborators.
[Link to external dashboards from environment dashboards](https://docs.gitlab.com/ee/operations/metrics/dashboards/settings.html)
> Operations teams often use more complex metrics dashboards for visualizing the state of their environments.
>
> Starting in GitLab 12.0, you can now supply and easily access your external dashboards directly from within GitLab's environment dashboards.