I use variables to set the build directory for CI. This works well in linux however the variables do not get expanded on my windows runners. Below is a simple example.
In this example on linux $BUILD_DIR gets expanded correctly.
On windows a directory is created with the variable name ($BUILD_DIR) not the variable value.
Is this a bug I should report or am I doing something wrong?
I gues on windows you have to use something like mkdir %BUILDDIR%
the synthax for using environment variables in commands differs from platform to platform
mkdir %BUILDDIR% does expand the variable correctly. However the command does not work because CI_PROJECT_DIR and BUILD_DIR contain / path separators instead of \
Any ideas on the best way to handle this without having to redefine all my variables based on platform?
Should I ping the gitlab guys about this via the issue tracker?
After looking into this a bit more I don’t know the correct syntax for concatenating a path in windows. If I include quotes in the variable definition the variables are not expanded. For example…
.platform_template: &WindowsPlatform
variables:
BUILD_DIR: "%CI_PROJECT_DIR%/%CI_BUILD_REF_NAME%/build"
PLATFORM: 'windows'
tags:
- windows
Makes echo BUILD_DIR expand to %CI_PROJECT_DIR%/%CI_BUILD_REF_NAME%/build
If I remove the quotes…
.platform_template: &WindowsPlatform
variables:
BUILD_DIR: %CI_PROJECT_DIR%/%CI_BUILD_REF_NAME%/build
PLATFORM: 'windows'
tags:
- windows
the yml is invalid because of the unknown character %