You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps容器代理完成流水线后退出,如何使其保持空闲运行?

解决Azure DevOps容器代理流水线结束后退出的问题

你的核心问题在于Dockerfile里的CMD参数没有生效,且代理启动脚本未让代理进程保持前台运行,导致流水线结束后容器随脚本退出。以下是具体修正方案:

1. 修正启动脚本(start.sh)

Azure DevOps代理的run.sh本身是长期运行的前台进程,只要让它成为容器的主进程,容器就会持续运行。修改你的start.sh,确保最后用exec启动代理,让代理进程替换脚本进程成为PID 1:

#!/bin/bash
set -e

# 下载Azure DevOps代理(如果不存在)
AGENT_VERSION="2.220.5"
if [ ! -d "./agent" ]; then
    curl -LsS "https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz" | tar -xz
fi

# 自动配置代理(需传入环境变量:AZP_URL、AZP_TOKEN、AZP_POOL、AZP_AGENT_NAME)
./agent/config.sh --unattended \
    --url "$AZP_URL" \
    --token "$AZP_TOKEN" \
    --pool "$AZP_POOL" \
    --agent "$AZP_AGENT_NAME" \
    --replace \
    --work "_work"

# 用exec启动代理,让代理成为容器主进程
exec ./agent/run.sh

2. 调整Dockerfile

移除无用的CMD ["tail", "-f", "/dev/null"]——当使用ENTRYPOINT时,CMD的内容会作为参数传给ENTRYPOINT脚本,而你的start.sh并未处理这些参数,这条命令完全不会执行。修改后的Dockerfile:

# Base image(建议指定具体镜像版本,比如alpine:3.18)
FROM alpine:3.18

RUN apk update && apk upgrade

# Installing OpenJDK 17, Node.js, and other required packages
RUN apk add --no-cache bash curl git icu-libs jq openjdk17-jre nodejs npm

ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk
ENV PATH="$JAVA_HOME/bin:$PATH"

# Verify Java and Node.js installations
RUN java -version && node -v && npm -v

WORKDIR /azp/

COPY ./start.sh ./
RUN chmod +x ./start.sh

RUN adduser -D agent
RUN chown agent:agent /azp/
USER agent

ENTRYPOINT [ "./start.sh" ]

3. 容器运行的正确配置

运行容器时必须传入代理注册所需的环境变量,且用分离模式启动:

docker run -d \
    -e AZP_URL="https://dev.azure.com/你的组织名" \
    -e AZP_TOKEN="你的PAT令牌" \
    -e AZP_POOL="你的代理池名称" \
    -e AZP_AGENT_NAME="容器代理名称" \
    你的镜像名:标签

关键原理说明

  • exec ./agent/run.sh会让代理进程替换start.sh的进程,成为容器的PID 1。只要代理不主动退出(比如注册失败、被Azure DevOps移除),容器就会持续运行。
  • Azure DevOps代理的run.sh本身是长期运行的进程,流水线结束后会回到空闲状态,等待下一个任务,不会退出。
  • 之前的tail命令无效是因为ENTRYPOINT优先级高于CMD,你的start.sh未处理CMD传入的参数,所以这条命令从未执行。

内容的提问来源于stack exchange,提问作者user25518631

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 07:58:12