Skip to content

Developer resources

Clément Pernet edited this page Aug 22, 2017 · 4 revisions

Development workflow

We aim to follow the Feature Branch Workflow.

In short, the idea is to keep using a centralized repository at linbox-team/fflas-ffpack, but having all developpment (except trivial bug fixes) done in dedicated feature branches. This will allow to

  • keep the master branch clean and running at any time,
  • encourage discussions and collaborations grouped on well defined feature topics
  • use the pull request system to propose merge of ready branches, and have an automated feedback from the continuous intergration system on whether the branch merges cleanly and does not brake sanity tests.

Consequently, the master branch is protected: no direct push to it is allowed, and only pull request with a jenkins status "success" can be merged.

The development of new code should be as follows:

  • create an issue tagged as either bug or enhancement
  • create a new branch corresponding to this feature
  • when it is ready for merge, or when you need interraction with other developpers, and jenkins, create a pull request
  • once discussion on the pull request endup in an agreement, and the jenkins status is "success", then the branch can be merge.

It is recommended to extensively use the ability of github to make hyperlinks between branches, commits and issues (referring to issue #27 in a commit log or to the hash of a commit in the comment of an issue will automatically generate these hyperlinks).

Continuous integration

Our Jenkins continuous integration system, hosted by Inria CI tests the library on the following systems:

  • linux ubuntu 14.04 32 and 64 bit
  • fedora 4.4.3 64 bit
  • OS X Darwin 13.4

with the following compilers (when available)

  • gcc v4.8, 5.3, 6.1
  • clang v3.4
  • gcc frontend of clang 3.4 (on OS-X)
  • icpc

We also test manually on a ppc64le with gcc-5.3.

Using it:

  • A build is triggered automatically upon creation of a pull request and the resulting status is reported in it. The release manager will only consider merge the pull request when the builds are reported to be successful.
  • You can also manually login in http://ci.inria.fr/linbox and trigger a build.