Skip to content

GitLab Next

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
GitLab FOSS
GitLab FOSS
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 1
    • Merge requests 1
  • Requirements
    • Requirements
    • List
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Code Review
    • Insights
    • Issue
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • GitLab.org
  • GitLab FOSSGitLab FOSS
  • Issues
  • #27098

Closed (moved)
Open
Created Jan 23, 2017 by Francesco Duranti@fduranti

Problem with variable expansion from variable in environment url definition

Summary

Variables that use other variables are not expanded if used in environment but are expanded as environment variables. I'm using some variables (defined from project or from .gitlab-cy.yml) to define the URL for environments. I tried using other variables in those variables and those are expanded correctly at shell level. They are not expanded but used as is ($VARIABLE) in the environment URL resulting in a wrong url.

The environment on which I had the problem is gitlab-ee 8.16.0.

Steps to reproduce

Use this CI script. testko is the test reporting an error (using local defined variables). testok is the same working (using global variables)

variables:
  PRODSERVER: server2.my.domain
  WEBAPPNAME: WebApp.$CI_BUILD_REF_SLUG
   
testko:
  stage: deploy
  variables:
    DEPLOYSERVER: $PRODSERVER
  environment: 
    name: test_ko
    url: http://$DEPLOYSERVER/$WEBAPPNAME
  script:
  - env
  
testok:
  stage: deploy
  environment: 
    name: test_ok
    url: http://$PRODSERVER/WebApp.$CI_BUILD_REF_SLUG
  script:
  - env

Expected behavior

Those are the expected value:

test_ko URL: http://server2.my.domain/WebApp.fduranti-nuova-feature
test_ok URL: http://server2.my.domain/WebApp.fduranti-nuova-feature

Actual behavior

Those are the result I'm getting.

test_ko URL(wrong): http://$prodserver/WebApp.$CI_BUILD_REF_SLUG
test_ok URL(correct): http://server2.my.domain/WebApp.fduranti-nuova-feature

The env command result give those:

WEBAPPNAME=WebApp.fduranti-nuova-feature
PRODSERVER=server2.my.domain
DEPLOYSERVER=server2.my.domain

Results of GitLab environment info

sudo gitlab-rake gitlab:check SANITIZE=true

Checking GitLab Shell ...

GitLab Shell version >= 4.1.1 ? ... OK (4.1.1)
Repo base directory exists?
default... yes
Repo storage directories are symlinks?
default... no
Repo paths owned by git:git?
default... yes
Repo paths access is drwxrws---?
default... yes
hooks directories in repos are links: ... 
3/3 ... ok
3/4 ... ok
3/8 ... ok
3/9 ... ok
3/10 ... ok
3/13 ... ok
3/14 ... ok
3/15 ... ok
3/16 ... ok
3/17 ... ok
6/18 ... ok
10/19 ... ok
3/21 ... ok
8/22 ... ok
8/24 ... ok
10/26 ... ok
13/29 ... ok
15/30 ... ok
10/31 ... ok
10/32 ... ok
10/33 ... ok
15/34 ... ok
6/35 ... ok
10/36 ... ok
10/37 ... ok
13/38 ... ok
21/41 ... ok
21/42 ... ok
21/43 ... ok
21/44 ... ok
21/45 ... ok
15/48 ... ok
22/49 ... ok
22/50 ... ok
6/51 ... ok
6/52 ... ok
Running /opt/gitlab/embedded/service/gitlab-shell/bin/check
Check GitLab API access: OK
Access to /var/opt/gitlab/.ssh/authorized_keys: OK
Send ping to redis server: OK
gitlab-shell self-check successful

Checking GitLab Shell ... Finished

Checking Sidekiq ...

Running? ... yes
Number of Sidekiq processes ... 1

Checking Sidekiq ... Finished

Checking Reply by email ...

IMAP server credentials are correct? ... yes
Init.d configured correctly? ... skipped (omnibus-gitlab has no init script)
MailRoom running? ... can't check because of previous errors

Checking Reply by email ... Finished

Checking LDAP ...

Server: ldapmain
LDAP authentication... Success
LDAP users with access to your GitLab server (only showing the first 100 results)
Server: ldapsecondary
LDAP authentication... Success
LDAP users with access to your GitLab server (only showing the first 100 results)

Checking LDAP ... Finished

Checking GitLab ...

Git configured with autocrlf=input? ... yes
Database config exists? ... yes
All migrations up? ... yes
Database contains orphaned GroupMembers? ... no
GitLab config exists? ... yes
GitLab config outdated? ... no
Log directory writable? ... yes
Tmp directory writable? ... yes
Uploads directory setup correctly? ... yes
Init script exists? ... skipped (omnibus-gitlab has no init script)
Init script up-to-date? ... skipped (omnibus-gitlab has no init script)
projects have namespace: ... 
3/3 ... yes
3/4 ... yes
3/8 ... yes
3/9 ... yes
3/10 ... yes
3/13 ... yes
3/14 ... yes
3/15 ... yes
3/16 ... yes
3/17 ... yes
6/18 ... yes
10/19 ... yes
3/21 ... yes
8/22 ... yes
8/24 ... yes
10/26 ... yes
13/29 ... yes
15/30 ... yes
10/31 ... yes
10/32 ... yes
10/33 ... yes
15/34 ... yes
6/35 ... yes
10/36 ... yes
10/37 ... yes
13/38 ... yes
21/41 ... yes
21/42 ... yes
21/43 ... yes
21/44 ... yes
21/45 ... yes
15/48 ... yes
22/49 ... yes
22/50 ... yes
6/51 ... yes
6/52 ... yes
Redis version >= 2.8.0? ... yes
Ruby version >= 2.1.0 ? ... yes (2.3.3)
Your git bin path is "/opt/gitlab/embedded/bin/git"
Git version >= 2.7.3 ? ... yes (2.10.2)
Active users: 10

Checking GitLab ... Finished
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking