Real-time merge request updates
When working on merge requests, it’s important to make sure that what you’re seeing is the latest information for approvals, pipelines or other information that might impact your ability to get the changes merged. Historically, this has meant refreshing the merge request or waiting for polling updates to come through.
We’ve improved the experience of both the merge button widget and approval widget inside of the merge request, so that they now update in real-time in the merge request. This is a great improvement to improve the speed at which you can deliver changes, and the confidence at which you can move a merge request forward knowing you’re seeing the latest information.
We’re looking at more areas for real-time improvements in merge requests, so follow along for updates.
Provide a reason when dismissing vulnerabilities in bulk
When selecting one or more vulnerabilities in the vulnerability report, it’s possible to change their status in bulk.
With this release, you can now select a dismissal reason when choosing the dismiss
status, and add a comment when changing a vulnerability’s status."
Add and remove compliance frameworks without using bulk actions
In GitLab 15.11, we added bulk adding and
removing of compliance frameworks to the
compliance frameworks report.
Now in GitLab 16.0, you can also add and remove compliance frameworks from projects directly from the report table row.
Before GitLab 16.0, you had to create and edit frameworks in the group’s settings.
Now in GitLab 16.0, you can create or edit your compliance frameworks in the
compliance framework report as well. This simplifies the framework creation workflow and reduces the need to switch contexts while managing your frameworks.
Filter compliance violations by target branch name
Prior to GitLab 16.0, the compliance violations report showed all violations on all branches.
Now you can now filter violations using the new Search target branch field, allowing you to focus on the branches that
you are most concerned with.
Support role-based approval action for scan result policies
With role-based approval actions, you can configure scan result policies to require approval from GitLab-supported roles, including Owners, Maintainers, and Developers.
This gives you additional flexibility over requiring individual approvers or defined groups of users, making it easier to enforce policies based on roles you already leverage in GitLab, at scale, especially across large organizations.
Introducing Out-of-band Application Security Testing through browser-based DAST
Previously, GitLab’s DAST analyzers did not support callback attacks while performing active checks. This meant that Out-of-band Application Security Testing (OAST) needed to be configured separately from your DAST scan.
Now, you can run OAST by extending the browser-based DAST analyzer configuration to enable callback attacks.
In this release we are introducing the BAS.latest.gitlab-ci.yml template. The Breach and Attack Simulation CI/CD template features job configuration for the browser-based DAST analyzer and enables container-to-container networking to add extended DAST scans against service containers to your CI/CD pipeline.
We’re continuously iterating to develop new Breach and Attack Simulation features. We’d love to hear your feedback on the addition of callback attacks to browser-based DAST.
Import Maven/Gradle packages by using CI/CD pipelines
Have you been thinking about moving your Maven or Gradle repository to GitLab, but haven’t been able to invest the time to plan the migration? GitLab is proud to announce the MVC launch of a Maven/Gradle package importer.
You can now use the Packages Importer tool to import packages from any Maven/Gradle compliant registry, like Artifactory.
To use the tool, simply create a config.yml file that contains the details of the packages you want to import into GitLab. Then add the importer to a .gitlab-ci.yml pipeline configuration file, and the importer does the rest. It runs in the pipeline, dynamically generating a child pipeline with jobs that import all the packages into your GitLab package registry.
Download packages from the Maven Registry with Scala
The GitLab Package Registry now supports downloading Maven packages using the Scala build tool (sbt). Previously, Scala users had no way to download Maven packages from the registry because basic authentication was not supported. As a result, Scala users were either blocked from using the registry or had to use Maven (mvn) or Gradle as an alternative.
By adding support for Scala, we hope to help you use the Package Registry with your more data intensive projects.
Please note that publishing artifacts using sbt is not yet supported, but you can follow issue 408479 if you are interested in adding support for publishing.
Add or resolve to-do items on tasks, objectives, and key results
We know that GitLab To-Do List is a widely adopted feature, but it was not available on tasks, objectives, and key results.
In this release, we’re introducing the ability to toggle a to-do item on or off from a work item record.
GitLab Pages unique subdomains
In previous versions of GitLab, cookies of different GitLab Pages sites under the same top-level group were visible for other projects under the same top-level because of the GitLab Pages default URL format.
Now, you can secure your sites by assigning a unique subdomain to each GitLab Pages project.
Add emoji reactions on tasks, objectives and key results
You can now contribute to tasks, objectives and key results with the addition of emoji reactions for work items.
Before this release, you could only add reactions on issues, merge requests, snippets, and epics.
Change work item type from quick action
With this additional quick action, you can now convert key results to objectives.
Pick custom colors for labels
Until now, you could specify only a fixed number of colors for your labels.
This release introduces a color picker to label management, allowing you to select any range of colors for your labels.
Reorder child records for tasks, objectives and key results
If you’re a user of tasks or OKRs you’ve likely wished more than once that we could reorder the child records within the widget!
With this work, users will now be able to reorder child records within work item widgets allowing them to indicate relative priority or signal what’s up next.
New stage events for custom Value Stream Analytics
Value Stream Analytics has been extended with two new stage events: issue first assigned and merge request first assigned.
These events can be useful for measuring the time it takes for an item to be first assigned to a user.
To implement this feature, GitLab started storing the history of assignment events in GitLab 16.0. This means that issue
and MR assignment events prior to GitLab 16.0 are not available.
Display message when deploy freeze is active
GitLab now shows you a message on the Environments page when a deploy freeze is in effect. This helps ensure your team is aware of when freezes occur, and when deployments are not allowed.
SAST analyzer updates
Secret Detection updates
We have optimized the way that the browser-based DAST analyzer performs its scans. These improvements have significantly
decreased the amount of time that it takes to run a DAST scan with the browser-based analyzer. The following improvements have been made:
- Added log summary statistics to help determine where time is spent during a scan. This can be enabled by including the environment variable
DAST_BROWSER_LOG="stat:debug". - Optimized passive checks by running them in parallel.
- Optimized passive checks by caching regular expressions used when matching content in HTTP response bodies.
- Optimized how DAST determines whether a page has finished loading. Now, we don’t wait for excluded document types or out-of-scope URLs.
- Reduced waiting time for pages where the DOM stabilizes quickly after page load.
With these improvements, we have seen browser-based DAST scan times reduced by 50%-80%, depending on the complexity and size of the
application being scanned. While this percentage decrease may not be seen in all scans, your browser-based DAST scans should now take significantly less time to complete.
Faster, easier Scala scanning in SAST
GitLab Static Application Security Testing (SAST) now offers Semgrep-based scanning for Scala code.
This work builds on our previous introduction of Semgrep-based Java scanning in GitLab 14.10.
As with the other languages we have transitioned to Semgrep-based scanning, Scala scanning coverage uses GitLab-managed detection rules to detect a variety of security issues.
The new Semgrep-based scanning runs significantly faster than the existing analyzer based on SpotBugs.
It also doesn’t need to compile your code before scanning, so it’s simpler to use.
GitLab’s Static Analysis and Vulnerability Research teams worked together to translate rules to the Semgrep format, preserving most existing rules.
We also updated, refined, and tested the rules as we converted them.
If you use the GitLab-managed SAST template (SAST.gitlab-ci.yml), both Semgrep-based and SpotBugs-based analyzers now run whenever Scala code is found.
In GitLab Ultimate, the Security Dashboard combines findings from the two analyzers, so you won’t see duplicate vulnerability reports.
In a future release, we’ll change the GitLab-managed SAST template (SAST.gitlab-ci.yml) to only run the Semgrep-based analyzer for Scala code.
The SpotBugs-based analyzer will still scan code for other languages, including Groovy and Kotlin.
You can disable SpotBugs early if you prefer to use only Semgrep-based scanning.
If you have any questions, feedback, or issues with the new Semgrep-based Scala scanning, please file an issue, we’ll be glad to help.
Create an instance runner in the Admin Area as a user
In this new workflow, adding a new runner to a GitLab instance requires authorized users to create a runner in the GitLab UI and include essential configuration metadata. With this method, the runner is now easily traceable to the user, which will help administrators troubleshoot build issues or respond to security incidents.
Trigger job mirror status of downstream pipeline when cancelled
Previously, a trigger job configured with strategy: depends mirrored the job status of the downstream pipeline. If the downstream pipeline was in the running status, the trigger job was also marked as running. Unfortunately, if the downstream job did not comnplete and had a status canceled, the trigger job’s status was inaccurately failed.
In this release, we have updated trigger jobs with strategy: depend to reflect the downstream’s pipelines’s statis accurately. When a downstream pipeline is cancelled, the trigger also shows canceled.
This change may have an impact on your existing pipelines, especially if you have jobs that rely on the trigger job’s status being marked as failed. We recommend reviewing your pipeline configurations and making any necessary adjustments to accommodate this change in behavior.
CI/CD components
In this release we are excited to announce the availability of CI/CD components, as an experimental feature. A CI/CD component is a reusable single-purpose building block that can be used to compose a part of a project’s CI/CD configuration, or even an entire pipeline.
When combined with the inputs keyword, a CI/CD component can be made much more flexible. You can configure the component to your exact needs by inputting values which can be used for job names, variables, credentials, and so on.
REST API endpoint to create a runner
Users can now use the new REST API endpoint, POST /user/runners, to automate the creation of runners associated with a user. When a runner is created, an authentication token is generated. This new endpoint supports the Next GitLab Runner Token Architecture workflow.
Per-cache fallback cache keys in CI/CD pipelines
Using a cache is a great way to speed up your pipelines by reusing dependencies that were already fetched in a previous job or pipeline. But when there is no cache yet, the benefits of caching are lost because the job has to start from scratch, fetching every dependency.
We previously introduced a single fallback cache to use when no cache is found, that you can define globally. This was useful for projects that used a similar cache for all jobs. Now in 16.0 we’ve improved that feature with per-cache fallback keys. You can define up to 5 fallback keys for every job’s cache, greatly reducing the risk that a job runs without a useful cache. If you have a wide variety of caches, you can now use an appropriate fallback cache as needed.
Create a group runner as a user
In this new workflow, adding a new runner to a GitLab group requires authorized users to create a runner in the GitLab UI and include essential configuration metadata. With this method, the runner is now easily traceable to the user, which will help administrators troubleshoot build issues or respond to security incidents.
Configurable maximum number of included CI/CD configuration files
The include keyword lets you compose your CI/CD configuration from multiple files. For example, you can split one
long .gitlab-ci.yml file into multiple files to increase readability, or reuse one CI/CD configuration file in multiple projects.
Previously, a single CI/CD configuration could include up to 150 files, but in GitLab 16.0 administrators can modify this limit to a different value in the instance settings.
Create project runners as a user
In this new workflow, adding a new runner to a project requires authorized users to create a runner in the GitLab UI and include essential configuration metadata.
With this method, the runner is now easily traceable to the user, which will help administrators troubleshoot build issues or respond to security incidents.
Rate Limit for the `projects/:id/jobs` API endpoint reduced
Previously, the GET /api/:version/projects/:id/jobs was rate limited to 2000 authenticated requests per minute.
To move this in line with other rate limits and improve efficiency and reliability, we have lowered the limit to 600 authenticated requests per minute.
GitLab Runner 16.0
We’re also releasing GitLab Runner 16.0 today! GitLab Runner is the lightweight, highly-scalable agent that runs your CI/CD jobs and sends the results back to a GitLab instance. GitLab Runner works in conjunction with GitLab CI/CD, the open-source continuous integration service included with GitLab.
What’s new:
The list of all changes is in the GitLab Runner CHANGELOG