Commit 4fe01388 authored by Adrian DC's avatar Adrian DC
Browse files

feat: resolve #191: add support for 'variables:' includes

parent 917296ad
Loading
Loading
Loading
Loading
+17 −2
Changes for gitlabci_local/parsers/gitlab.py: 17 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -43,6 +43,21 @@ class GitLab:
        # Prepare options
        self.__options = options

    # Merges
    @staticmethod
    def __merges(data, additions):

        # Merge data
        for key in additions:

            # Handle included expanding data
            if key in data and isinstance(additions[key], dict) and key in ['variables']:
                data[key].update(additions[key])

            # Handle included overriding data
            else:
                data[key] = additions[key]

    # Scripts
    @staticmethod
    def __scripts(items):
@@ -155,10 +170,10 @@ class GitLab:
                        with open(Path(self.__options.path) / file_path,
                                  'r') as include_data:
                            include_additions = yaml_safe_load(include_data)
                            data_new.update(include_additions)
                            self.__merges(data_new, include_additions)

            # Agregate included data
            data_new.update(data)
            self.__merges(data_new, data)
            data = data_new
            data_new = None

+24 −0
Changes for tests/includes/.gitlab-ci.variables.yml: 24 added lines, 0 removed lines.
Original line number Diff line number Diff line
include: '/job_variables.yml'

stages:
  - includes

variables:
  VALUE_2: 2
  VALUE_3: 2
  VALUE_4: 2

'Job 1':
  stage: includes
  image: alpine:3.11
  variables:
    VALUE_3: 3
    VALUE_4: 3
    VALUE_5: 3
  script:
    - echo 'Job 1'
    - test "${VALUE_5:?}" -eq '3'
    - test "${VALUE_4:?}" -eq '3'
    - test "${VALUE_3:?}" -eq '3'
    - test "${VALUE_2:?}" -eq '2'
    - test "${VALUE_1:?}" -eq '1'
+4 −0
Changes for tests/includes/job_variables.yml: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
variables:
  VALUE_1: 1
  VALUE_2: 1
  VALUE_3: 1