This article is a translation of a GitLab release article. The releases are released every month on the 22nd.
If you missed the previous ones, here are the links: 8.10 , 8.9 , 8.8
In the new GitLab 8.11 there are so many interesting things that we can hardly restrain ourselves in the framework of a constructive story!
So, in the new version appeared:
/command
) for working with tickets;This month's MVP is Clement Ho. Thanks to him for merge requests and responsiveness in working on tasks.
Ticket (issues) in GitLab is a very flexible tool. They may contain links to each other, you can indicate their priorities, you can sort by popularity. The ticket board adds a new way of working with them.
Now you can customize workflows and quickly receive information about the status of tickets. All this is available on a simple and nice looking board, similar to those used in Kanban or Skrama.
A board is created for each project automatically. By default, all open tickets form a backlog, and all closed ones appear in the Done list.
By adding new lists, you create new workflows. The belonging of the ticket to the list is determined by the label. When a ticket is added to the list, the corresponding label is added to it, and if it is deleted from the list, the label is deleted.
If you used to have labels like ,
and
- it's time to make lists of them. Tickets will appear in them automatically. And, of course, a ticket may belong to more than one list.
If you want to look at this feature in action, take a look at the GitLab CE version 8.12 board .
Ticket Board Documentation
Merzy in large and actively developing projects usually cause many problems. We want you to have a built-in conflict resolution tool. Therefore, you can now do this directly in the GitLab interface.
When the merge is blocked by a conflict, you can simply click the "Resolve these conflicts" button and go to the resolution interface. There you can select the desired lines and commit the result.
Of course, not all conflicts can be resolved this way. But we hope that in most cases this tool will help you speed up the passage of requests.
Conflict Resolution Documentation
Now in Enterprise Edition, you can configure permissions to push or merge to a branch not only for user groups (like developers
or owners
), but also for specific users.
New settings can be combined with other functionality, including permissions for subgroups. For example, you can allow only Temlides Pete and Masha to push directly into the branch, but confirm merge-requests to this branch - to all members of the developer
level and above.
For each action (push and merg) you can configure any number of authorized users.
Branch Permissions Documentation
In merge-requests there are long branches of comments, in which you can get confused. But each of them is important.
We added the ability to mark a comment or a whole thread as processed and close it.
Merge-Requests now also have a counter for unclosed discussions and a convenient button for moving to the next open discussion.
Documentation for closing discussions in Merge Requests
Conveyors in GitLab can have a rather complex structure with many sequential and parallel assemblies. Now you can look at the scheme of a specific conveyor, showing its structure and state. Such a scheme clearly shows the processes occurring in it.
Just click on the pipeline on the merge-request page or in the list of conveyors. You will see a diagram of this pipeline with a display of completed, failed, active, and pending assemblies.
The ability to standardize tickets and merge requests using templates was already in GitLab Enterprise Edition. Starting from GitLab 8.11, there may be many templates - for example, one for errors and another for sentences. And the opportunity itself is in all versions: GitLab.com, GitLab CE / EE.
Templates are written in the Markdown markup and are located in your repository, respectively, in the folders .gitlab/issue_templates
and .gitlab/merge_request_templates
:
The purpose of this feature is to improve the appearance and completeness of sentences, error messages and merge requests.
Template Documentation
Now GitLab has a slash command ( /command
) - just like in IRC, HipChat, Mattermost or Slack. They allow you to change labels, assign artists, subscribe and unsubscribe from tickets and do much more - quickly and without taking your hands off the keyboard. Commands work in the description of the ticket or merge-request, as well as in the comments.
How to use them:
You can use slash commands even when creating a new ticket or request:
If several commands are sequentially specified, all of them will be executed.
A few ideas on how to use slash commands:
We ourselves look forward to your stories about what other uses you will invent.
Slash Commands Documentation
Koding allows you to run your development environment in the cloud, use the same settings for this environment for the entire team, and even use a local editor. Thanks to this, it is not necessary to spend time on installing and setting up a stack for each new computer and with any change.
Starting from version 8.11, GitLab supports integration with Koding. Now, at the touch of a button, you can download the entire project or a separate merge-request and open it in a full-fledged cloud-based IDE. (note that the integration with Koding has not yet been added to GitLab.com).
Enable Koding support in Admin> Application settings
Set up Koding to work with your project:
And that's it! Now you can quickly dump any merge-request, branch and commit of the project into a full-fledged IDE.
We have prepared a short video showing how Koding + GitLab works:
To learn more about Koding in GitLab, refer to our documentation .
Now the pipelines are displayed in Merge-Requests:
Click on the pipeline to see its layout and builds related to it.
Now you can specify URLs for your environments:
Due to this, GitLab shows the deployment status for merge-requests in cases where the deployment occurs automatically during the merge:
After a successful merge, GitLab will show you a link to the deployment environment, which allows you to see the result of a merge request in one click.
To simplify integration with GitLab pipelines, we added web hooks for them. They are triggered when creating, starting, or shutting down a pipeline.
To add a web hook, select Webhooks
in the Settings menu of your project.
Now GitLab editor supports highlighting and allows you to hide blocks of code.
Now, when pushing to GitLab, there are links to the creation of a merge-request, as well as to all merge-requests related to the current one.
Now you can create icons showing test coverage for your project:
If you did not use the coverage mapping in GitLab, enable it in the pipeline settings: pipelines/settings
.
Test Coverage Icon Documentation
When issuing access to the project to a single user or group, you can now set a specific date, after which access to the project will be closed for them.
This makes it easier to work with access rights for temporary team members.
Multiple mount points were added to GitLab 8.10.
In GitLab 8.11, it became possible to move projects between shards with the help of the rake command. This functionality is not intended for frequent use, however, it may be useful in cases when you want to test a new shard or move a frequently used project to a fast access repository.
In this release, a number of changes aimed at improving performance were introduced - merge-requests and their diffs became even faster! Below are graphs showing the performance difference after deploying GitLab 8.11 RC2 on GitLab.com (a drop in performance falls on the deployment).
Diff load for merge-requests:
Number of executed SQL queries when displaying diffs:
Time spent on executing SQL queries when rendering diffs:
Also significantly increased the performance of conveyors:
Below is a detailed list of the improvements made and the corresponding Merge Requests:
ci_runners
table ci_runners
(PostgreSQL only) ci_runners
5755DiffHelper
in DiffHelper
5756geo_nodes
table index geo_nodes
639Repository
:! 5621Gitlab::Highlight
5644Project.visible_to_user
re-instrumented Project.visible_to_user
5793GitLab 8.11 comes with the Mattermost 3.3 , the open analog of Slack .
Localization to Chinese, Korean and Dutch, Go bot ,
the ability to flag (flag) posts, mentions of the form @here
and much more.
In addition, several security updates have been included in this version of Mattermost, so we strongly recommend upgrading to it.
GitLab now has experimental support for Redis Sentinel.
All the details in the documentation
This release includes many other improvements, including various security fixes. A full list of changes is available in Changelog .
Upgrading to GitLab 8.11 will require downtime due to database migrations
The downtime for the GitLab.com website (the largest GitLab instance we know) was 15-30 minutes. Depending on the amount of data on your instance, your downtime may be less.
One of the migrations deletes several columns in several tables (and the GitLab instance needs to be minimized so that these data are not lost in the process of accessing them).
Two other migrations create new tables and fill them with information based on the data already existing in the system: in this case, downtime is needed so that the data added does not change during the migration process (and remain unchanged until the 8.11 deployment is complete).
Finally, another migration adds two foreign keys (foreign keys), and here downtime is needed to ensure that there is no simultaneous access to the data being changed.
With this release we updated Ruby to version 2.3.
For manual installations, we strongly recommend that you upgrade to Ruby 2.3. GitLab installations made via Omnibus will automatically use Ruby 2.3.
Ruby 2.1 and 2.2 support will be completely discontinued in GitLab version 8.13.
If you upgraded to 8.11 right after the release and got the error undefined method merge! for nil:NilClass
undefined method merge! for nil:NilClass
, then download a newer package with a lower version .1: 8.11.0-ce.1
.
Just run apt-get update
and apt-get install gitlab-ce
/ apt-get install gitlab-ee
, and everything should be fixed by itself.
If you have two-factor authentication enabled and you try to get an API token via the /sessions
or Resource Owner Password Credentials flow provided in OAuth2, then you will not be able to log in. For a successful login in these cases, you will need to use a Personal Access Token.
Read more about personal access tokens
We have changed the structure of Elasticsearch indexes and now they use parent-child relationships. This improves performance, but requires a complete restructuring of all Elasticsearch indexes. After upgrading to 8.11, you will need to manually remove old indexes and build new ones.
To delete old indexes, make the following request to Elasticsearch:
curl -XDELETE 'http://localhost:9200/_all/'
To rebuild indexes follow the steps described in the documentation for integration with Elasticsearch
Warning The above is applicable only if you are upgrading from a previous version (8.10). If you are upgrading from earlier versions, check the “Upgrade-barometer” sections for all intermediate versions.
If you are upgrading from a version of GitLab smaller than 8.0 and at the same time you have CI enabled, you must first upgrade to 8.0 .
By default, during the update process, all Omnibus packages will be stopped, then all their migrations will be rolled out, and only then they will be started again. This behavior does not depend on the size of the update. You can change this behavior by creating the / etc / gitlab / skip-auto-migrations file.
If you are installing GitLab from scratch, read the relevant section: https://about.gitlab.com/installation/
Update instructions: https://about.gitlab.com/update/
GitLab Enterprise Edition includes additional features such as support for LDAP groups. Detailed information can be found in the description of GitLab EE .
GitLab EE is available only by subscription, details and prices can be found here .
Not enough time to install and configure a new tool? The cost of the subscription includes the installation and update services GitLab on your servers.
PS If you will be updated, update immediately on 8.11.2
PPS Chebureque , nick_volynkin and @ sgnl_0 worked on the translation
Source: https://habr.com/ru/post/308632/
All Articles