Аналіз Gerrit на відповідність ключовим вимогам

Функціональні сценарії

  • Перевірка цілісності регламенту

  • Фіксація фактів початку, завершення та порушень цілісності регламенту

  • Тестування регламенту

  • Фіксація фактів початку, завершення та помилок тестування регламенту

Ключові вимоги

  • Використання Gerrit у якості сховища інформації про проведені перевірки та їх результати.

  • Налаштування інспекцій для перевірки та тестування внесених змін та збереження їх на рівні Gerrit.

  • Використання Gerrit для додавання результатів інспекції та тестування до внесених змін.

Аналіз на відповідність вимогам

Вимога Підтримка

Фіксація результатів інспектування внесених змін

Механізм Messages та Robot Comments

Налаштування інспекції внесених змін

Механізм Custom Labels

Додавати коментарії до внесених змін

Механізм Messages та Robot Comments

Налаштування Gerrit

Для використання механізму Custom Labels в Gerrit необхідно сконфігурувати в Gerrit додаткові labels для конкретного репозиторію або для всіх (All-Projects). Конфігурація Custom Labels в Gerrit виконуэться в файлі project.config.

Приклад сконфігурованих custom labels Review, StaticAnalysis, Tests в project.config
[project]
[receive]
    requireContributorAgreement = false
    requireSignedOffBy = false
    requireChangeId = true
    enableSignedPush = false
[submit]
    mergeContent = true
    action = fast forward only
[access "refs/*"]
    read = group Administrators
    read = group Registered Users
    label-Verified = -1..+1 group Registered Users
[access "refs/for/*"]
    addPatchSet = group Registered Users
[access "refs/for/refs/*"]
    push = group Registered Users
    pushMerge = group Registered Users
[access "refs/heads/*"]
    create = group Administrators
    create = group Project Owners
    editTopicName = +force group Administrators
    editTopicName = +force group Project Owners
    forgeAuthor = group Registered Users
    forgeCommitter = group Administrators
    forgeCommitter = group Project Owners
    label-Code-Review = -2..+2 group Administrators
    label-Code-Review = -2..+2 group Project Owners
    label-Code-Review = -2..+2 group Registered Users
    push = group Administrators
    push = group Project Owners
    read = group Anonymous Users
    revert = group Registered Users
    submit = group Administrators
    submit = group Project Owners
    submit = group Registered Users
    label-Verified = -1..+1 group Administrators
    label-Verified = -1..+1 group Project Owners
    label-Verified = -1..+1 group Registered Users
    label-Test = -1..+1 group Administrators
    label-Test = -1..+1 group Project Owners
    label-Test = -1..+1 group Registered Users
    label-Review = -1..+1 group Administrators
    label-Review = -1..+1 group Project Owners
    label-Review = -1..+1 group Registered Users
    label-StaticAnalysis = -1..+1 group Administrators
    label-StaticAnalysis = -1..+1 group Project Owners
    label-StaticAnalysis = -1..+1 group Registered Users
[access "refs/meta/config"]
    create = group Administrators
    create = group Project Owners
    create = group Registered Users
    label-Code-Review = -2..+2 group Administrators
    label-Code-Review = -2..+2 group Project Owners
    label-Code-Review = -2..+2 group Registered Users
    label-Code-Review = -1..+1 group Anonymous Users
    push = group Administrators
    push = group Project Owners
    push = group Registered Users
    read = group Administrators
    read = group Project Owners
    read = group Registered Users
    submit = group Administrators
    submit = group Anonymous Users
    submit = group Project Owners
    submit = group Registered Users
    label-Verified = -1..+1 group Administrators
    label-Verified = -1..+1 group Anonymous Users
    label-Verified = -1..+1 group Project Owners
    label-Verified = -1..+1 group Registered Users
    label-Test = -1..+1 group Administrators
    label-Test = -1..+1 group Project Owners
    label-Test = -1..+1 group Registered Users
    label-Review = -1..+1 group Administrators
    label-Review = -1..+1 group Project Owners
    label-Review = -1..+1 group Registered Users
    label-StaticAnalysis = -1..+1 group Administrators
    label-StaticAnalysis = -1..+1 group Project Owners
    label-StaticAnalysis = -1..+1 group Registered Users
[access "refs/meta/version"]
    read = group Anonymous Users
[access "refs/tags/*"]
    create = group Administrators
    create = group Project Owners
    createSignedTag = group Administrators
    createSignedTag = group Project Owners
    createTag = group Administrators
    createTag = group Project Owners
[label "Code-Review"]
    function = MaxWithBlock
    defaultValue = 0
    copyMinScore = true
    copyAllScoresOnTrivialRebase = true
    value = -2 This shall not be submitted
    value = -1 I would prefer this is not submitted as is
    value = 0 No score
    value = +1 Looks good to me, but someone else must approve
    value = +2 Looks good to me, approved
[label "Verified"]
    function = MaxWithBlock
    value = -1 Fails
    value = 0 No score
    value = +1 Verified
    copyAllScoresIfNoCodeChange = true
    defaultValue = 0
[label "Test"]
    function = MaxWithBlock
    value = -1 Fails
    value = 0 No score
    value = +1 Test
    copyAllScoresIfNoCodeChange = true
    defaultValue = 0
[label "Review"]
    function = MaxWithBlock
    value = -1 Fails
    value = 0 No score
    value = +1 Review
    copyAllScoresIfNoCodeChange = true
    defaultValue = 0
[label "StaticAnalysis"]
    function = MaxWithBlock
    value = -1 Fails
    value = 0 No score
    value = +1 StaticAnalysis
    copyAllScoresIfNoCodeChange = true
    defaultValue = 0
[capability]
    administrateServer = group Administrators
    administrateServer = group Registered Users
    priority = batch group Service Users
    streamEvents = group Service Users