branch resource_rules fail when a date condition is specified
We are trying to set up gitlab-triage system on our local gitlab instance (we are using community edition v15.8) and, while doing so, ran into an error when trying to set up a triage policy for branch resources.
From our dry-run tests, we found that specifying date condition
for branch resources, results in an error from branch_date_filter.rb file.
Error message
gitlab-triage --dry-run --token $GITLAB_API_TOKEN --host-url $CI_SERVER_URL --source groups --source-id $TRIAGE_SOURCE_PATH
/usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/filters/branch_date_filter.rb:49:in `resource_value': undefined method `[]' for nil:NilClass (NoMethodError)
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/filters/branch_date_filter.rb:61:in `calculate'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:340:in `block in filter_resources'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:333:in `select'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:333:in `filter_resources'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:302:in `block in resources_for_rule'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/expand_condition.rb:13:in `each'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/expand_condition.rb:13:in `perform'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:279:in `resources_for_rule'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:183:in `block in process_rules'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:182:in `each'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:182:in `process_rules'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:79:in `block in perform'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:70:in `each'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/lib/gitlab/triage/engine.rb:70:in `perform'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/bin/gitlab-triage:18:in `block in <top (required)>'
from /usr/local/lib/ruby/2.7.0/set.rb:328:in `each_key'
from /usr/local/lib/ruby/2.7.0/set.rb:328:in `each'
from /usr/local/bundle/gems/gitlab-triage-1.28.0/bin/gitlab-triage:11:in `<top (required)>'
from /usr/local/bundle/bin/gitlab-triage:23:in `load'
from /usr/local/bundle/bin/gitlab-triage:23:in `<main>'
*********************************************
Executing policies from .triage-policies.yml.
*********************************************
Performing a dry run.
=========================================================================================================
Triaging the `hahn-schickard/software-sollutions/application-engineering/internal/opc_ua_dev_group` group
=========================================================================================================
-----------------------------------------
Processing summaries & rules for branches
-----------------------------------------
-----------------------------------------------------
Gathering resources for rule: **Stale branch policy**
-----------------------------------------------------
.
* Found 1 resources...
* Filtering resources...
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1
We use the default CI-CD pipeline configuration file from the readme:
.gitlab-ci.yml
image: ruby:2.7
stages:
- triage
dry-run:triage:
stage: triage
script:
- gem install gitlab-triage
- gitlab-triage --help
- gitlab-triage --dry-run --token $GITLAB_API_TOKEN --host-url $CI_SERVER_URL --source groups --source-id $TRIAGE_SOURCE_PATH
when: manual
except:
- schedules
run:triage:
stage: triage
script:
- gem install gitlab-triage
- gitlab-triage --token $GITLAB_API_TOKEN --host-url $CI_SERVER_URL --source groups --source-id $TRIAGE_SOURCE_PATH
only:
- schedules
The triage policy that generates this error:
.triage-policies.yml
resource_rules:
branches:
rules:
- name: Stale branch policy
conditions:
date:
attribute: committed_date
condition: older_than
interval_type: months
interval: 6
protected: false
actions:
issue:
title: |
Review stale branch {{ title }}
description: |
{{ author }}, the branch {{ full_reference }} had no new commits for 6 months.
Please consider merging/closing this branch.
Removing the date
condition from the .triage-policies.yml
file, results in a successful pipeline