Usar a expansão de parâmetros do Shell dentro do bloco de variáveis de .gitlab-ci.yaml não está resolvendo o valor padrão.
Exemplo:
my_job:
extends: .template
variables:
OPTS: >-
-tag=${CI_COMMIT_TAG:-NO_TAG}
-url=${CI_PIPELINE_URL}
A parte do script se parece com isso (e é fornecida via extends
)
.template:
script:
- cmd ${OPTS}
O problema é que -tag
está sempre vazio quando CI_COMMIT_TAG não está definido, mas deveria ser "NO_TAG" neste exemplo.
Uma possível solução seria definir OPTS em script
ou before_script
, mas isso é algo que quero evitar aqui por causa das extensões e somente as variáveis devem ser definidas.
Tentei encontrar uma solução online para, de alguma forma, escapar da ${parameter:-word}
parte na parte variável para deixar o bash "analisá-la" em vez do pipeline. Mas sem sucesso.
Existe uma maneira de fazer isso funcionar ou minha única opção é definir a variável "OPTS" dentro de um script?
Bem, sim - atualize o código-fonte do gitlab para suportá-lo. O Gitlab não é um shell. O Gitlab suporta apenas ${VAR} ou $VAR ou %VAR%. Veja https://docs.gitlab.com/ci/variables/where_variables_can_be_used/#expansion-mechanisms .
Sim, faça isso.
Você também pode definir o padrão
Mas isso entrará em conflito com as regras.