Happy new Year 2019{:class="no-border"}

Enhancements

Git LFS – General Availability

Git Large File Storage (aka. Git LFS) support is now production ready.

Git LFS file in git repositories

For end users the most notable change is that files under git-lfs control are now caught by Tuleap web UI in repository view as well as pull requests. Files themselves are not rendered (too big) but they can be downloaded.

While the usage with git didn’t change since Tuleap 10.8 the administration tooling around now allows a site administrator to deploy it more widely.

To make it simple, for developers that means it’s extremely unlikely that they will shoot themselves in their feet (they love to do that, esp. with scm tools and CI) and for site administrator it means that you are getting tools to control what people will push on your beloved servers.

Let’s review the changes:

  • git (even without git-lfs plugin) now forbids by default any file larger than 50MB (push will be refused). If people "have to" push stuff like that they will need to ask their admins to install and configure git-lfs plugin. Note: as we are not that extreme, we added a configuration console for site admins so they can grant exceptions to projects that absolutely need it. Keep in mind that it’s a very bad practice and it will hurt you one day or another.
  • git-lfs individual file size have a configurable limit (set to 512MB by default). There is no practical limit to the size that you can set but it’s recommended to not set file size bigger than 4GB otherwise you might hit a limit on what git itself is able to handle on windows (beside that a 1TB file is unlikely to be a good candidate for version control).
  • global space taken by git-lfs is limited by "project’s quota" (configurable in statistics section of site administration). Even with 512MB it’s easy to fill a fresh hard drive with a single commit. That won’t happen in Tuleap (unless a site admin decides it). When a git push is done with git-lfs tracked files, the amount of disk consumed by the new push is computed and must be lower to defined quota. Default quota is configurable in /etc/tuleap/plugins/statistics/etc/statistics.inc (default is 5GB) and it’s possible to set exceptions on individual projects.

A special note about quota:

  1. quota is enforced only on git-lfs files. That means that you can have a 5GB quota with 10GB stored in subversion (quota were only informative) and File Release System. Neither File Release System or Subversion won’t be impacted but you won’t be allowed to push git-lfs objects in this project.
  2. only git-lfs files are computed "in real time", other size (documents, subversion, frs, etc) are computed on nightly bases. For instance, given a 5GB quota and 4GB used yesterday. If I put 2 GB in Document Manager today, I will still have the possibility to upload 1GB worth of git-lfs files today (but not more).
  3. quota is checked only if statistics plugin is installed.

Bug fixed:

New Jenkins plugin

Thanks to a work initiated by a team from Orange, there is now an "Organization" Tuleap plugin for jenkins.

Create a new Tuleap organization in jenkins

This plugin automates the creation of jobs on Jenkins based on repositories and branches in your Tuleap projects. It means that with a single configuration where you set the target project to inspect and some credentials, Jenkins will automatically scan all git repositories and within those repo all branches, looking for Jenkinsfiles. When a Jenkinsfile is found, a new job is created and built.

Thanks to Julien Coste, Thomas De Grenier De La Tour and Haja Rambelontsalam (main contributor) who built the initial version of the plugin and thanks to Orange to have contributed it as an Open Source plugin under MIT license.

As all jenkins plugins, the reference repository is under Jenkins Organization on github. Contributions are welcomed !

Document Manager REST routes

As part of the new document manager plugin, the REST routes of the Document Manager are progressively implemented. With 10.9 you get the ability to create a new document. What’s special here is that we introduce a new way to manage uploads via the tus.io protocol. As the web site states tus.io is an Open Protocol for Resumable File Uploads, in other words it’s now possible to upload (large) files even with a brittle network smoothly.

Moreover, as tus.io is a standard protocol, a handful of libraries already exists to handle uploads.

Git

Filter on git branches selector

The git branches selector now displays the branches in alphabetical order and it’s possible to filter the branches. Those two feature are really useful when you’re dealing with a large amount of branches or tags.

Fixes:

  • request #12630 PR creation failure due to a Git reference creation failure is marked as a user error
  • request #12618 Jenkins webhook might fail when the server URL ends with /
  • request #12578 Slow git repositories listing
  • request #12577 Perceived slowness in git repository listing
  • request #12570 Gitolite post receive hook might still contains an old hook version
  • request #12481 Calling REST routes git/{id}/(files|branches|tags) when a repository is being created gives an error

Homepage

Awesome homepage

Homepage got a refresh for 2019 with one new feature (stats) and the come back of an old one (news). By default, both will be displayed but site admin can decide to enable/disable each one in "Homepage" section of site admin.

The stats give a quick overview on the global activity on the platform with the total number of projects, users & co as well as the increase since the last 30 days.

RHEL7

  • request #12641 Missing dependency for the webdav plugin on RHEL/CentOS 7
  • request #12675 Bot Mattermost plugins should be available on CentOS/RHEL 7
  • request #12648 Tuleap Enterprise plugins should be buildable for CentOS/RHEL 7

Timetracking (Tuleap Enterprise)

  • request #12617 Timetracking set on artifacts should be accessible with REST API

Under development: new workflow admin

  • story #12187 configure workflow pre & post actions at target state level

The new admin interface is progressing, it’s now possible to set/unset transitions and to display pre-conditions. Corresponding REST routes were added accordingly.

WIP worfklow admin interface

Under development: new document manager (Tuleap Enterprise)

WIP new document manager interface

It’s now possible to expand/collapse folders as well as download files, go to links or wiki pages.

Development

PHP 7.2

Composer

Releases stats

  • 881 files changed, 28131 insertions(+), 15706 deletions(-)
  • They made the release (number of commits, author, company)
    • 136 Thomas Gerbet, Enalean
    • 90 Yannis ROSSETTO, Enalean
    • 86 Nicolas Terray, Enalean
    • 57 Marie Ange Garnier, Enalean
    • 50 Joris Masson, Enalean
    • 27 Manuel VACELET, Enalean
    • 18 Jibidus, Sogilis
    • 10 Clarck Robinson, Enalean
    • 10 Martin Goyot, Enalean
    • 8 Thomas Gorka, Enalean
    • 4 Benjamin Dauton, Enalean
    • 3 Thi Mai, Sogilis
    • 3 lorentzr, Enalean
    • 1 Sandra Echinard, Enalean

Bug fix

Security

Document manager

  • request #12637 Document manager plugin should not crash when responding to an incorrectly formatted URL
  • request #12615 Correct errors loggued in console when accessing to a subfolder

Agile dashboard

  • request #12620 /plannings/{id}/milestones returns wrong x-pagination-size
  • request #12576 Some tracker links are escaped in kanban edit modal

Tracker

  • request #12616 When workflow block masschange, the error messages are not displayed
  • request #12575 Value deletion should remove value selection in a report

Misc