将容器化的自托管代理与Azure DevOps连接

时间:2019-08-03 14:20:20

标签: azure-devops azure-devops-self-hosted-agent

我按照ms docs guide中的说明进行操作,该代理启动时没有任何问题。但是,它从未出现在我的代理池中。我尝试了在github上找到的不同版本的start.sh脚本,并且该脚本立即连接。我还有其他方法可以尝试解决此问题吗?来自下面的无效代理的日志

❯ kubectl logs azpagent-55864668dc-zgdrn
1. Determining matching Azure Pipelines agent...
2. Downloading and installing Azure Pipelines agent...
3. Configuring Azure Pipelines agent...

>> End User License Agreements:

Building sources from a TFVC repository requires accepting the Team Explorer Everywhere End User License Agreement. This step is not required for building sources from Git repositories.

A copy of the Team Explorer Everywhere license agreement can be found at:
  /azp/agent/externals/tee/license.html


>> Connect:

Connecting to server ...

>> Register Agent:

Scanning for tool capabilities.
Connecting to the server.
Successfully replaced the agent
Testing agent connection.
2019-08-03 04:22:56Z: Settings Saved.
4. Running Azure Pipelines agent...
Starting Agent listener interactively
Started listener process
Started running service
Scanning for tool capabilities.
Connecting to the server.
2019-08-03 04:23:08Z: Agent connect error: The signature is not valid.. Retrying until reconnected.

不确定是否要尝试其他方法-其他人是否看到过此问题,或者Linux代理指南是否成功?

3 个答案:

答案 0 :(得分:0)

更新

根据错误信息The signature is not valid..

您是否正在使用和构建TFVC存储库中的资源,而该存储库需要接受Team Explorer到处都是最终用户许可协议。从Git存储库构建源代码不需要执行此步骤。

如果是这样,请尝试从Git存储库构建。


您在文档中引用了deprecated的不同版本的start.sh脚本。它是用于旧的构建代理。

根据此错误和相关错误The signature is not valid.. Retrying until reconnected.,我建议您采取以下措施:

  • 您可能使用的是较旧的代理版本,请尝试使用最新版本的代理 https://github.com/microsoft/azure-pipelines-agent/releases
  • 您需要重新启动代理进程以使这些 环境会产生影响。
  • 请咨询您的IT部门,确保您之间的网络 构建机器和tfs服务器/ Azure DevOps服务可靠,请参阅 您的网络是否有任何变化。

还要确保您的构建机器/ VM不会耗尽资源。

答案 1 :(得分:0)

查看错误消息:

The signature is not valid.

提供的PAT可能有问题。我建议按照this guide的描述生成新的PAT,然后重试。

让我知道这是否有所帮助。

答案 2 :(得分:0)

如果其他任何人遇到此问题或类似问题,@ juliobbv的建议将非常有帮助。如果您注释掉脚本的最后一行,并将其替换为

./bin/Agent.Listener run & wait $!

您可以更清晰地查看所有错误消息。

就我而言,我没有意识到AGENT_NAME和POOL不再是相同的变量,并且原始错误消息也没有表明问题是我对默认池的权限不足。

我对脚本的最终更改如下-我默认使用主机名来使用代理名称,并保持了以前使用自定义池的行为

./config.sh --unattended \
  --agent "$(hostname)" \
  --url "$AZP_URL" \
  --auth PAT \
  --token $(cat "$AZP_TOKEN_FILE") \
  --pool "${AZP_POOL:-Default}" \
  --work "${AZP_WORK:-_work}" \
  --replace \
  --acceptTeeEula & wait $!