We want GitLab to be the place where your projects go from idea all the way to production. You shouldn't have to rely on other tools to build something great together. We believe GitLab is able to power any step in this process and with GitLab 8.7, we've made every step better.
GitLab 8.7 improves Issues, makes diffs better to work with, brings better commenting, has 100% more cherries and can now even push to remote repositories by its own volition1.
This month's MVP is Connor Shea. Connor has been an incredibly responsive and productive member of the community, working on anything from new features to performance issues up to this very release post.
We also want to thank Ershad Ahmad for his enthusiastic support in the community, both in the forums and on Twitter. Thanks Ershad and Connor!
Remote Mirrors (EE only)
You could already automatically mirror an external repository to your GitLab instance. With GitLab 8.7 you can now do the inverse and have GitLab push updates to a remote repository: a mirror on a remote repository (!249). It's like you can have your cake and eat it too.
This means you can use GitLab to build your projects, while still maintaining an active mirror in another place. You could even run a GitLab instance locally and mirror it to GitLab.com or any other git hosting service.
To start mirroring to a remote repository, find the Mirror Repository settings in your project and fill out the required URL and GitLab with automatically sync the remote every hour.
Multiple Label Filter
You might already be labelling your issues and merge requests. You might even be subscribed to a label. If that's the case, you were probably sad to discover GitLab couldn't filter by multiple labels at once. Well, now you can!
Select any number of labels to filter only for issues or merge requests that
contain all selected labels. Meaning, if I search for
feature proposal and
customer, I'm now able to find only feature proposals by customers (!3438).
If you have an open source project, you should have a license in place for it.
Typically, projects include a text file named
LICENSE in the root of their
repository. GitLab now provides license templates, so you can quickly move on
with building the rest of the project (!3660).
To add a license, add a new file named
LICENSE to an existing project. GitLab
will show a dropdown with licenses to choose from. With certain licenses, your
name will even be pre-filled.
Open source licenses benefit everyone. For authors, they specify any conditions of reuse or modification of their code. For people who use the code, they clarify what people can and cannot do with it. It may sound restrictive but there are several variations of licenses, so it really depends on the author's preference. That's why we provide several of the most popular licenses. We welcome merge requests for additional templates. These licenses allow the open source community to carry on with the free use and sharing of software.
Due Date for Issues
It's easy for things to get lost in the shuffle of multiple priorities and several stakeholders. This challenge compounds in collaborative projects since people often depend on each other. To help keep things on track, we've added the ability to set a due date for individual issues (!3614).
With the addition of due dates for issues, there are now two ways to keep your projects on track. However, due dates and milestones have a couple important distinctions. Due dates are only for individual issues. They are most useful when you want to drive your team to a target completion date.
Milestones, on the other hand, apply to your entire project. Milestones are great for organizing issues and merge requests into a cohesive group and to track progress on a collection of issues, using the milestone view.
You can now cherry-pick any commit into any branch, right within GitLab.
Cherry picking allows you to take a single commit and bring it to any other
branch. It's especially useful if you work with multiple, concurrent branches,
like the release branches of GitLab (
8-7-stable) and you want
to bring a certain change set over from one to the other.
To cherry pick a commit, simply click on the
Cherry Pick button, whenever
it presents itself. You can find it in Merge Requests and Commits:
Choose a branch to pick the commit into and optionally create a merge request for it.
Cherry Pick was contributed by P.S.V.R. Thanks!
Diffs never looked better than in GitLab 8.7 and now are much more
copy friendly, no longer copying line numbers or the
Tooltip in your timezone
Although some of you may correctly be using the one true timezone (UTC), it was confusing to many others that times in GitLab were reported in a different timezone than their own.
That's a thing of the past! All times are now reported in your own timezone.
Improved GitHub Importer
The GitHub importer now also imports milestones and labels, and preserves references to pull requests and issues!
Search is getting better and better with GitLab. With GitLab 8.7 we've added location-aware search. Meaning you can either search within the project:
Or remove the scope of the project and quickly search through the server:
In either case you always have the quick navigation options available when searching:
Smarter, Better Commenting
We've revised the input for comments! It doesn't just look much better, it's also smarter. If you start to mention someone, autocomplete will prioritize names based on the context of the issue, diff or merge request (several other dropdown boxes have that same ability now).
e to edit the issue or merge request you're viewing, and press the up
arrow key to quickly edit your last comment. In any case, make sure you're not
focusing in the comments area when pressing those keys.
More Default Dashboards
Did you know you can change the page you see when you sign in to GitLab? We've now made it possible to also make that page Groups or even Todos (!3379), thanks to the contribution of Elias W.! That means you can set the Dashboard to be:
- Projects (default)
- Starred Projects
- Activity of Projects
- Activity of Starred Projects
- Groups (new)
- Todos (new)
Build status notifications
You'll now get browser notifications from running builds in the current project. No more staring at the builds view!
Raw build trace output
You can now get the raw build trace of your builds.
CI: job-level environment variables
You can now define environment variables on a job level in
Job-level variables take precedence over global YAML variables, so it is now possible to override global YAML variables in the definition of a CI job.
Improvements to logging when behind a reverse proxy
- You can now add your proxy server to the list of trusted servers, so its IP is not logged as the client IP. The default trusted servers were also updated so that IPs on the private network are not trusted by default. !3524
- The NGINX included in the Omnibus package is now compiled with the
real_ipmodule, and can be configured to use a list of trusted proxies for determining client IP in its logs. !709
- SAML can identify external groups based on configuration and set members of these groups as external users. !3530
- Omniauth providers can be marked as external, allowing all users of these providers, even existing ones, to be marked as external users. !3657
- Timestamps for metrics have been made more accurate to prevent InfluxDB from overwriting points. Depending on the amount of traffic this may lead to significantly more data being stored.
- Extra instrumentation was added for various bits of code.
- Rails cache timings are now tracked.
- Markdown rendering performance has been improved, leading to a 3x performance boost in the most ideal cases, though this highly depends on the type of data being rendered.
- Emoji autocomplete performance has been improved.
- The referenced merge requests and related branches of an issue are now loaded asynchronously. This reduces the loading time of issue pages.
- Re-enable GZIP compression of assets in production.
- Load the emoji spritesheet only when necessary.
GitLab Mattermost 2.2
Mattermost 2.2 ships in GitLab 8.7 with threaded messages, French translation, new themes, new Trello and IRC support, plus many more new benefits.
This release requires up to 30 minutes downtime.
A migration affecting projects with import data requires downtime as it manipulates and encrypts user data stored for projects that were previously imported from other Git repositories. Unless you have a large number of imported projects, this migration should last only a few seconds.
This release contains other migrations that might make the total upgrade time longer. For GitLab.com (>800k projects) the complete upgrade was completed within 30 minutes.
Note: This assumes you are upgrading from the latest version. If not, please also consult the upgrade barometers of any intermediate versions you are skipping. If you are upgrading from a GitLab version prior to 8.0 and you have CI enabled, you have to upgrade to GitLab 8.0 first.
Please be aware that by default the Omnibus packages will stop, run migrations,
and start again, no matter how “big” or “small” the upgrade is. This behavior
can be changed by adding a
If you are setting up a new GitLab installation please see the download GitLab page.
Check out our update page.
The mentioned EE only features and things like LDAP group support can be found in GitLab Enterprise Edition. For a complete overview please have a look at the feature list of GitLab EE.
Access to GitLab Enterprise Edition is included with a subscription. No time to upgrade GitLab yourself? A subscription also entitles you to our upgrade and installation services.
GitLab 8.7 doesn't actually have a mind of its own. ↩