git repo的docker容器克隆中的Azure DevOps / TFS $ {SYSTEM.ACCESSTOKEN)

时间:2019-12-17 06:36:51

标签: docker azure-devops azure-pipelines

我有一个问题。我们正在Docker容器中的构建代理上运行构建。 Maven插件发布:准备克隆仓库。当这样做时,它将失败。因此,我已将名为环境变量“ TFS_ACCESSTOKEN”(添加了附加参数-e TFS_ACCESSTOKEN =“ $(SYSTEM.ACCESSTOKEN)”)的容器$(SYSTEM.ACCESSTOKEN)传递给容器并运行了此

git config --global http.extraheader "AUTHORIZATION: bearer ${TFS_ACCESSTOKEN}"

当插件运行克隆时,它仍然要求提供用户名,但失败。 我将管道更改为将访问令牌输出为base64并将睡眠设置为1h。 解码的令牌,然后转到另一台机器,并手动重复执行这些步骤,所有工作即可。步骤:

git config --global http.extraheader "AUTHORIZATION: bearer <decoded-token>"
git clone https://tfs-server/repo-path

我想知道为什么令牌可以在2台不同的机器上工作而不能在容器中工作。

我注意到机器具有相同的/ etc / machine-id。我已将体积添加到Docker容器中,但仍无法正常工作。

2 个答案:

答案 0 :(得分:0)

您需要将 TFS_ACCESSTOKEN 包装在$()中以引用它,而不是${}

尝试在您的git命令下方更改

git config --global http.extraheader "AUTHORIZATION: bearer ${TFS_ACCESSTOKEN}"

收件人

git config --global http.extraheader "AUTHORIZATION: bearer $(TFS_ACCESSTOKEN)"

答案 1 :(得分:0)

问题仅仅是因为Docker容器具有非常老的git版本(1.8.3),而http.extraheader是在2.1。*中引入的(如果我没记错的话)。