We made an experiment these last few months with release notes that were only talking about completed features. As it turns out, people want to have more details and see actual work in progress so, we’re back with the full release note. Grab a cup of ☕ and enjoy!


Enhancements

Jenkins Integration

We are currently very busy with integrations and especially with Jenkins to offer the best-in-class experience when using both tools. With Tuleap 11.12 two major blocks are already available:

Tuleap Branch Source Jenkins plugin v2

It’s almost a complete rewrite of the Branch Source plugin that we released ~ one year ago. The main focus was on making the authentication more robust and more performant. The only supported method of authentication is through Access Keys   (until now it was basic auth with login/password). Access Keys are easier to revoke when they get compromised and are generally easier to rotate to ensure a healthy and secure environment.

In addition to authentication, the way build jobs are triggered also changed. With v1 of the plugin, developers had to rely on weird tricks in their Jenkins file or regular polling of the source repositories to get their jobs triggered when a push was done. With v2, a new endpoint (URL) is exposed (similar to what notify Commit does for regular git repo). When this endpoint is called, it will automatically trigger build of jobs that corresponds to the given git repository URL. Sounds complex? Fear not! Tuleap will do that automatically for you, see the next section!

Jenkins server with Jobs created out of Tuleap project git repositories
Jenkins server with Jobs created out of Tuleap project git repositories

Project wide push trigger

Since forever, Tuleap project administrators can trigger Jenkins jobs or generic webhook call when a push occurs on a Git repository. That’s convenient but when you have a lot of repositories in your project, it can be tedious to set up and hard to keep in sync.

The ambition of the Jenkins / Tuleap integration is to make your CI/CD setup one time and then forget it (well, as much as a CI/CD pipeline can be forgotten :cough: :cough:).

Starting Tuleap 11.12, the Jenkins Git triggers (the standard Git one and the Tuleap Branch Source one) can be set up at project level and will apply for all Git push made in any repository in your project.

As soon as the setup is done, the very next push made in the project will notify the Jenkins servers configured at project level. No need to change anything in your Jenkins file or Jenkins server configurations.

The feature is hidden behind a feature flag, you can activate it by setting $git_allow_jenkins_plugin_hook_configuration = 1; in your local.inc.

Jenkins Integration in Tuleap
Jenkins Integration in Tuleap

User account redesign

We regularly add options for user account management. The layout in the form of one-single-page was ok until it has become overstretched. It was time to refresh this area, all the more we will soon add another bunch of personal things to manage (thanks OAuth2 grants).

Preferences and account settings are now divided into tabs and grouped by topic or plugin. It should be easier to find the right information with this new organization.

New user account page
New user account page

Simplifying tracker creation (work in progress)

Creating a new tracker is not something that’s done often, but when it’s time to do it, it’s nice to have a slick UI, better guidance and streamlined flow.

You won’t be surprised to see the same pattern used for project creation (2 steps wizard). You will select your template on the first screen and give the name on the second one.

As mentioned in the title, it’s a work in progress so not all templates are available in this release. As of now you can pick-up templates from Template projects, XML files or start from empty. In the next release, you will be able to pick trackers from other projects.

Once the template is selected, you will enter the name of the tracker. As for projects, the technical short name of the tracker is automatically generated out of the name. The availability of the names are checked in real-time.

Once created, you are redirected to the administration page to finalize your tracker.

Bugs and requests

➡️ Click here to get all details of this release  

Security

  • request #14613 Use ESLint to prevent some XSS when working with unsafe DOM APIs
  • request #14602 Harden handling of sensitive strings
  • request #14564 Tracker inheritance should only possible on trackers user can see

Tracker

  • request #14617  GROUP_CONCAT will not retrieve all values if there are many
  • request #14615  burndown generate event is triggered even if configuration is no properly set
  • request #14534 Refuse CSV import files that are not in UTF8
  • request #14530 « Artifact submitter » used in Select Box displays users only when it is not associated with another group
  • request #14545 Artifact export is broken when an attachment is deleted

Project creation

  • request #14510 When no Tuleap template is available on platform we should display an empty template
  • request #14405 Glossify new project creation

Site administration

  • request #14368 Support sign-in with any personal Microsoft account or Azure AD account
  • request #14507 XML import/export : docman
  • request #14546 Forgeupgrade bucket b202001101700_enable_plugin_api_explorer is not replayable

UX, UI & Design

  • request #14539 Move FRS plugin to BurningParrot
  • request #14562 Misalignment of bottom border in tlp-tabs
  • request #14554 Fix bad alignment of homepage statistic background

Misc

  • request #14631 Renaming a user group is not propagated to legacy SVN access files
  • request #14569 XMl import crash when TTM is not instantiated on a project
  • request #14537 Fatal error in RSS Reader when the HTTP client throws an exception
  • request #14533 Sub-elements always has the « Remove from top backlog » quick action
  • request #14409 Memory limit exhausted while uploading git-lfs

Development

Build and CI pipeline

  • request #14588 Remove versions of plugins and themes that are locked on the main Tuleap version
  • request #13753 Use Lerna to install the JS dependencies of all Tuleap components
  • request #14535 Play Jest tests in CI pipeline with some parallelism

Tests

  • request #14573 Cypress tests should not rely on past test execution
  • request #14515  Add end-to-end tests for taskboard
  • request #14514 Improve reliability of the tracker workflow end-to-end test
  • request #14067 Add cypress test for the kanban
  • request #14063 Update Cypress tests for Agile Dashboard service
  • request #14547 Update cypress version to v4.x

Front end

  • request #14614 Do not use type assertion when accessing the DOM
  • request #14572 Upgrade to TypeScript 3.8
  • request #14384 Move all javascript build process to Webpack

Back end

  • request #14553 Methods in PHP code should have an explicit visibility
  • request #14527 Remove useless @param and @return annotations in PHP code
  • request #14575 Remove unused private elements in PHP code
  • request #14580 Remove unnecessary translate() method
  • request #14529 Do not depend on concrete logger implementations
  • request #14519 Migrate existing logger interface to PSR-3
  • request #14599 Update to Psalm 3.9.0
  • request #14471 Update to guzzle/psr7 1.6.1
  • request #14516 Replace jimdo/prometheus_client_php by tuleap/prometheus-client

Validation

Tuleap 11.12 validation ranking
Tuleap 11.12 validation ranking

See it in action!