GitLab 7.14 released with improved syntax highlighting and Variables in CI

Whereas next month's release, version 8.0, promises many new and exciting features, our focus for 7.14 has been on fixing bugs and improving performance and usability. Many of these bug fixes were contributed by this month's MVP Stan Hu, bringing his total number of awards to four. Thank you and congratulations, Stan!

To celebrate Stan's hat-trick + 1 (4 MVP titles in the 7.x major release) GitLab is giving him an extra weekend in Amsterdam after he joins us with the rest of the core team for our summit during OSCON.

Beta: support for long git push/pull over HTTPS

GitLab supports two protocols for pushing and fetching Git data from Git clients such as the git command and GUI clients: SSH and HTTPS. Traditionally, the SSH protocol has been the best and sometimes only way to do long-running (i.e., slow or large) push/pull operations from Git on your computer to a GitLab server. One of the reasons for this is that Unicorn, the Ruby web application server used by GitLab, is not designed to handle many concurrent long-running requests. With Unicorn, long git pushes/pull will often fail (due to a timeout) after hogging precious resources (Unicorn workers) for a long time.

To address this problem, we created gitlab-git-http-server, a stand-alone web server written in Go to take over (most of) the job of serving Git HTTP requests. We use Nginx to route HTTP requests either to Unicorn (normal requests) or gitlab-git-http-server (Git clients).

In the GitLab 7.14 Omnibus packages, gitlab-git-http-server is included but disabled by default. In GitLab 8.0 we will deprecate the old Git HTTP server in GitLab (grack).

If you want to start using gitlab-git-http-server ahead of the 8.0 release, as we will on gitlab.com, you can add the following settings to /etc/gitlab/gitlab.rb:

Improved syntax highlighting

GitLab has implemented the popular Rouge library as our syntax highlighter of choice. Rouge has support for 72 languages and does a great job of properly highlighting your files in GitLab.

Show who edited a discussion note

When a note is edited by someone other than its original author, such as a project administrator, we now show who it was along with the time.

Better LDAP group management (GitLab EE)

Our Enterprise Edition users managing their GitLab groups with LDAP will be glad to hear that we've improved the way they're handled in GitLab. Groups synced with LDAP can no longer be brought out of sync by group changes made via GitLab's interface.

YAML Variables (GitLab CI)

Now you can define variables in your .gitlab-ci.yml file that will be passed to your CI builds, allowing you to fine-tune linked services by, for example, supplying a custom database name.

Build Triggers API (GitLab CI)

As part of our ongoing effort to improve support for dependent builds, we've introduced Build Triggers that can be used to force a rebuild of a specific branch or tag via API call. To use Build Triggers, go to your project's Triggers page where you'll find a custom link that can be called from other services.

Build Triggers can also accept custom variables that can be used to customize the behavior of the build scripts.

Application Settings interface (GitLab CI)

We're now surfacing application settings in the web interface of GitLab CI, furthering our goal of making all of the GitLab applications as easy to configure as possible.

Better support for skipped builds

GitLab CI and its integration with GitLab CE and EE now have improved support for builds skipped via the [ci skip] commit message tag.

Bundling of Mattermost now, possibly RocketChat in the future

In this release we've bundled Mattermost, an open source on-premises Slack alternative. More information can be found in the announcement. The current release is in alpha state, so we can't guarantee it will be upgradable and recommend against exposing it to the public Internet. Activation instructions can be found in the Omnibus documentation for GitLab Mattermost.

We're thinking of shipping RocketChat with the Omnibus packages of GitLab 8.1 (although earlier, later, and not at all are also options). Having two different Slack alternatives in the GitLab packages is not ideal. But both projects are moving quickly and we find it hard to pick a winner now. Consider the alpha state a warning that we don't guarantee that both will ship with GitLab forever.

Other changes

This release has more improvements, including security fixes. Please view the Changelog to see the full list of changes.

Upgrade barometer

This release's migrations are minor. If you are on GitLab 7.13 CE or EE you can upgrade to 7.14 while staying online.

The GitLab CI upgrade will require downtime. Coming from 7.13 the database migrations in GitLab CI will be fast but they cannot be performed online.

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. The behaviour can be changed by adding a /etc/gitlab/skip-auto-migrations file.

Reminder: Ruby (MRI) 2.0.x no longer supported

As of the previous release (7.13), we have dropped support for the 2.0.x versions of Ruby (MRI). We support Ruby (MRI) 2.1.x and recommend using 2.1.6.