Azure DevOps 管道无法识别 Bash 脚本中的管道变量(未使用 YAML 文件)

Azure DevOps pipeline not recognizing pipeline variable in Bash script (not using a YAML file)

Azure DevOps 管道 有这个变量:

管道有一个 Bash 脚本任务。它被设置为文件路径。文件路径设置为 script.sh。 script.sh 开头为:

git clone https://username:$(PAT)@dev.azure.com/company/project/_git/repo-name

管道日志中的错误:

PAT: command not found
Cloning into 'repo-name'...
fatal: Authentication failed for 'https://dev.azure.com/healthcatalyst/CAP/_git/docs-template/'

为了验证身份验证令牌和 repo URL 是否准确,我可以在 运行 作为内联代码时验证它是否有效:

git clone https://username:$(pat)@dev.azure.com/company/project/_git/repo-name

script.sh 文件在 repo-name 中。

但是,环境 变量有效。以下两项 return 脚本中的准确值。请注意,一个没有引号,另一个有。

echo $BUILD_REPOSITORY_NAME
repo-name

echo "$BUILD_REPOSITORY_NAME"
repo-name

根据我看过的文档(我在使用 Microsoft 文档时遇到困难,因为我没有使用 YAML 文件),我尝试失败了:

有谁知道我做错了什么?感谢您的任何提示。

使用System.AccessToken代替个人PAT:

git clone https://$SYSTEM_ACCESSTOKEN@dev.azure.com/company/project/_git/repo-name

要启用 $SYSTEM_ACCESSTOKEN:转到 ADO 中的发布页面 > 任务 > 代理作业 > 检查允许脚本访问 OAuth 令牌

你的 PAT 变量是秘密变量吗?

如果是这样,则不能在脚本文件中直接访问它

如您在文档中所见:https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#secret-variables

Unlike a normal variable, they are not automatically decrypted into environment variables for scripts. You need to explicitly map secret variables.

示例:

...  
  env:
    MY_MAPPED_ENV_VAR: $(mySecret) # the recommended way to map to an env variable

或者,如果您使用的是可视化编辑器,那么: