GitLab CI/CD - 如何在命令中使用变量?

问题描述 投票:0回答:1

我写了以下管道:

image: maven:3-openjdk-11

variables:
    TARGET_LOCATION: "/tmp/uploads/"

stages:
    - deploy

deploy-job:
    stage: deploy
    before_script:
    - export MAVEN_ARTIFACT_VERSION=$(mvn --non-recursive help:evaluate -Dexpression=project.version | grep -v '\[.*'| tail -1)
    - export MAVEN_ARTIFACT=app-${MAVEN_ARTIFACT_VERSION:+$MAVEN_ARTIFACT_VERSION.jar} 
    script:
    - eval $(ssh-agent -s)
    (SSH STUFF HERE...)
    - scp -o HostKeyAlgorithms=ssh-rsa -p /builds/xxxxx/app/target/$MAVEN_ARTIFACT user@host:${TARGET_LOCATION}

我期望 scp 命令中的 $MAVEN_ARTIFACT 更改为 app-BETA-0.1.jar 和 TARGET_NAME 更改其值,但它没有解析,并且我在两个地方都得到了变量名称。我也尝试过使用括号,但无法实现我想要的。 有没有办法将脚本执行期间生成的变量作为参数传递给同一脚本部分中执行的其他程序?

下面是一段管道执行的日志:

$ scp -o HostKeyAlgorithms=ssh-rsa -p /builds/xxxxx/app/target/$MAVEN_ARTIFACT user@host:${TARGET_LOCATION}
bash gitlab yaml scp
1个回答
3
投票

您正确使用了这些,并且它正在发挥作用。

GitLab 管道日志显示脚本中编写的命令 - 无需扩展/替换变量。但是,它会在运行命令之前扩展/替换变量。要检查变量是否正确设置,您可能需要添加

echo
命令,例如
echo $MAVEN_ARTIFACT

© www.soinside.com 2019 - 2024. All rights reserved.