Skip to content

Allow overwriting instance/group/project-level CI variables at job/YAML level

Summary

If a variable is predefined in CI / CD Settings > Secret variables, it cannot be overwritten properly in the "variables" block. And sometimes it behaves more than just strange.

Steps to reproduce

  1. Enter any group --> Settings --> CI / CD

  2. Define some variables in this page and save them:

    NAMESPACE: ci
    NAMESPACE_PROD: prod
    NS: ci
    NS_PROD: prod
  3. In any project under this group, we try to overwrite some predefined variables and echo it :

    some_job:
      variables:
        NAMESPACE: $NAMESPACE_PROD
        NS: $NAMESPACE_PROD
        NS_PROD: production
      script:
        - echo $NAMESPACE_PROD
        - echo $NAMESPACE
        - echo $NS
        - echo $NS_PROD

Actual behavior

NAMESPACE_PROD=prod
NAMESPACE="ci ci" # what the hell?
NS=ci
NS_PROD=prod

Expected behavior

NAMESPACE_PROD=prod
NAMESPACE=prod # should be overwritten by $NAMESPACE_PROD
NS=prod # should be overwritten by $NAMESPACE_PROD
NS_PROD=production # should be overwritten by "production"

Relevant logs and/or screenshots

$ echo $NAMESPACE_PROD
prod
$ echo $NAMESPACE
ci ci
$ echo $NS
ci
$ echo $NS_PROD
prod

Environment description

Gitlab Version: 10.6

gitlab-runner --version

Version:      10.5.0
Git revision: 80b03db9
Git branch:   10-5-stable
GO version:   go1.8.5
Built:        2018-02-22T09:18:33+00:00
OS/Arch:      linux/amd64

Gitlab Runner Host: CentOS Linux release 7.2.1511 (Core)

Used GitLab Runner version

Version:      10.5.0
Git revision: 80b03db9
Git branch:   10-5-stable
GO version:   go1.8.5
Built:        2018-02-22T09:18:33+00:00
OS/Arch:      linux/amd64
Edited by Chen Wen