Skip to content
Snippets Groups Projects
CiDescription.md 6.01 KiB

Description of the stages and jobs in the Cbmroot Merge-Request CI chain

Acronyms:

  • MR = Merge Request
  • CI = Continuous Integration, checks performed
    • before allowed new changes to be merged to the "official" master
    • as well as immediately after new changes are merged
  • Pipeline = one iteration of the CI chain
  • Stage = group of jobs inside the pipeline,
    • typically one group starts only after the previous is done
    • and all jobs within the group are running in parallel (provided free runner ressources available)

Frequent troubles:

  • for your first MR after creating your fork, said fork needs to be given permissions to start jobs on our runners to complete the CI chain.
    => If you see jobs with a Pause icon for longer than 10-15 minutes, stuck or timing out, please check if other MRs are running pipelines at the time. If it is not the case please contact @f.uhlig as your fork probably do not have the permissions.
  • if you delete and re-create your fork, this permissions-setting need to be redone as the system relies on a fork ID and not on its name

1. Repository check stage

alt text

For this stage please also refer to the information about our workflow in our redmine wiki (added by @f.uhlig).

Linear History check: LinearHistCheck

This check ensures that the proposed commits in the MR doe not introduce a "loop" in the history, typically as a result of a merge commit.
Merge commit should never appear in our rebase base workflow, as the main goal of it is to have a linear history (single line for the master in the graph view).

Typical solution when this happens with only new commits in one branch and only upstream commits in the other is to do a rebase on the upstream/master and remove the merge commit.

git fetch master
git rebase upstream/master

if this does not work, one can try an interactive rebase to remove the merge commit

# => Check in the graph view or in git log which commit is the merged one
git fetch master
git rebase -i upstream/master
# => your favorite editor will open, just delete the line with the merge commit, save and exit

If the loop was introduced between two set of commits not in the master, you will have to be more carefull with the rebasing in order not to loose some commits.

2. Format check stage

alt text

Clang-format check of the code: CodeFormatCheck

This test ensures that all new/modified files obey our formatting conventions.

For general information on our conventions, please refer to this Styleguide page.