Azure devops 管道中的Container jobs 可能是您正在寻找的。p>
当您在管道中指定容器时,代理将首先获取并启动容器。然后,作业的每一步都将在容器内运行。因此,您可以将 Docker 映像设置为容器。见下例:
到容器中的run a job:
pool:
vmImage: 'ubuntu-18.04'
container: mcr.microsoft.com/appsvc/staticappsclient:stable
steps:
- script: printenv
在容器中运行certain task:
resources:
containers:
- container: staticappsclient
image: mcr.microsoft.com/appsvc/staticappsclient:stable
steps:
- task: SampleTask@1
target: host
- task: AnotherTask@1
target: staticappsclient # this task will run in the container
更新:
在未预装 sudo 的容器内运行 sudo 命令。您可以按以下步骤结帐:
1、通过在Optionoptions: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro"中定义--name参数来命名容器
2、在你的 yaml 管道之上添加一个脚本任务来安装sudo
- script: |
/tmp/docker exec -t -u 0 ci-container \
sh -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confold" -y install sudo"
3,在以下脚本任务中运行脚本以安装 dotnet 3.1:请参阅下面的完整 yaml 示例:
resources:
containers:
- container: staticappsclient
image: mcr.microsoft.com/appsvc/staticappsclient:stable
options: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro"
container: staticappsclient
steps:
- script: |
/tmp/docker exec -t -u 0 ci-container \
sh -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confold" -y install sudo"
- script: |
wget -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/debian/9/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-3.1
请参阅this thread 了解更多信息。