Skip to content
| Marketplace
Sign in
Azure DevOps>Azure Pipelines>WSL Container Pipeline Tasks
WSL Container Pipeline Tasks

WSL Container Pipeline Tasks

MSDI_WSLC

|
3 installs
| (0) | Free
Build and push container images on Windows agents, using Docker when available or WSL wslc 3.0.5+ otherwise.
Get it free

WSL Container Pipeline Tasks

为 Azure DevOps Services 和私有部署的 Azure DevOps Server 的 Windows 自托管代理提供 Wslc@1 流水线任务,用于构建、推送和管理容器镜像。任务按 Docker → Podman → nerdctl → wslc → Finch → Buildah 的顺序选择 PATH 中第一个可用的 CLI。

主要功能

  • 构建和推送镜像,登录或退出仓库,启动或停止容器。
  • 使用已授权的 Docker Registry 服务连接;Azure Container Registry(ACR)支持服务主体、托管标识和工作负载身份联合。
  • 为镜像添加流水线及基础镜像信息,并可在推送后发布 Azure DevOps 镜像详情。
  • 在同一作业中检测运行时变化,避免混用不同 CLI 的镜像和登录状态。

本扩展提供独立任务,不会修改内置的 Docker@2,也不会替换 Azure Pipelines 代理本身使用的 Docker。

使用条件

  • Windows 自托管代理;受支持的 docker.exe、podman.exe、nerdctl.exe、wslc.exe、finch.exe 或 buildah.exe 至少有一个位于代理账户的 PATH。Podman 和 nerdctl 需要已配置的容器后端;wslc 需要 WSL 3.0.5 或更高版本及 WSL 容器功能。
  • Finch 和 Buildah 在本任务的 Windows 环境中仅在相应 CLI 可用且后端已配置时尝试使用;本任务不安装 CLI,也不创建或启动 WSL/虚拟机后端。
  • 代理版本至少为 3.238.0,且包含 Node20_1 运行时;Azure DevOps Server 需支持该代理版本。
  • 使用专用代理账户,避免多个作业或进程共享仓库凭据。
  • 私有仓库需要授权给流水线的 Docker Registry 服务连接。托管标识或联合身份必须正确配置,并具有仓库所需权限。

任务不安装或配置容器工具。自动选择首个已检测到的 CLI;如果它无法执行或无法连接后端,任务会报错,不会自动切换到其他 CLI。

私有部署时,可由服务器管理员在 Manage Extensions 上传 VSIX,再由项目集合管理员安装到目标集合。生产依赖已包含在 VSIX 中,但运行任务仍需访问服务器和镜像仓库。

示例

steps:
- task: Wslc@1
  displayName: Sign in to the registry
  inputs:
    command: login
    containerRegistry: myRegistryConnection

- task: Wslc@1
  displayName: Build and push
  inputs:
    command: buildAndPush
    containerRegistry: myRegistryConnection
    repository: sample/app
    Dockerfile: '**/Dockerfile'
    buildContext: '**'
    tags: |
      $(Build.BuildId)
      latest

- task: Wslc@1
  displayName: Sign out of the registry
  condition: always()
  inputs:
    command: logout
    containerRegistry: myRegistryConnection

使用服务连接默认不会自动登录:推送私有仓库前需显式执行登录任务;也可对 push/buildAndPush 设置 loginBeforeCommand: true 在推送前自动登录。登录可能覆盖代理账户已有的同仓库凭据,执行登录即表示接受这一行为(无需额外确认开关)。任务不能恢复原有凭据,且代理中断时退出步骤不一定执行。

元数据和限制

  • addPipelineData 和 addBaseImageData 默认启用。未固定 digest 的基础镜像会先被拉取并检查,这会改变本地镜像缓存;无法确定唯一的仓库 digest 时只告警并跳过 digest 标签,构建继续。建议在 Dockerfile 中固定 digest。
  • 未固定 digest 的基础镜像同时使用 FROM --platform、构建 --platform 或构建 --pull 时,会跳过 digest 标签并告警;请固定 digest 以同时获得该标签。
  • publishImageMetadata 默认启用。元数据配置或发布失败默认只告警,不会把已成功的推送标记为失败;设置 failOnMetadataPublishError: true 可改为失败。--all-tags 默认跳过元数据发布并告警。
  • 元数据会尝试通过 history 提供层信息,运行时不支持时回退到 image inspect;无法完整复现 Docker@2 的旧版 layer 指纹。
  • 构建输出的镜像 ID 会以 ; 分隔追加到 DOCKER_TASK_BUILT_IMAGES,供后续任务复用;任务还会发布命令、作业 ID 和认证方式的遥测。
  • Azure DevOps Server 的镜像详情 API 可用性取决于服务器版本和配置。发布需要 HTTPS;HTTP 地址默认跳过发布并告警,failOnMetadataPublishError: true 时在推送前报错。服务器的身份联合能力也取决于其版本和配置。
  • 运行时命令失败时,错误消息会分别标注标准输出和标准错误,便于定位推送失败原因。
  • Buildah 将任务的 build 映射为 buildah bud,支持构建、推送、登录和退出;不支持 start/stop、基础镜像 digest 查询或本任务的镜像详情发布。
  • 选择 wslc 时,不支持 Azure Pipelines 代理管理的作业容器或服务容器,也不支持 Docker Compose、Docker API 兼容性或 wslc 不支持的命令。

Azure DevOps Server 的实际安装、代理执行、身份认证及镜像详情 API 尚需在授权的隔离环境中验证。

参考:Docker@2、Podman Windows 安装、nerdctl、Finch、Buildah、WSL 容器。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft