我写了以下管道:
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}
您正确使用了这些,并且它正在发挥作用。
GitLab 管道日志显示脚本中编写的命令 - 无需扩展/替换变量。但是,它会在运行命令之前扩展/替换变量。要检查变量是否正确设置,您可能需要添加
echo
命令,例如echo $MAVEN_ARTIFACT