Skip to content

Conversation

@ChristopherHX
Copy link
Owner

No description provided.

@ChristopherHX
Copy link
Owner Author

This is a regression: That needs investigation. Looks like pwd is now /_a instead of /_w/1, but how and why.

+ Runner.Client --event azpipelines -C testworkflows/azpipelines/containermatrix -W testworkflows/azpipelines/containermatrix/pipeline.yml
Starting Server...
The server is listening on http://[::]:33481 / http://10.1.0.140:33481/
Starting 1 Runner...
First runner is listening for jobs
No default github.ref found
[pipeline.yml] Running: pipeline.yml
| Initialize Workflow Run 1
| Parsing template pipeline.yml resolved to pipeline.yml (self) using Schema pipeline-root
| # Based on https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/jobs-job-container?view=azure-pipelines#examples-1
| resources:
|   containers:
|   - container: u14
|     image: ubuntu:14.04
| 
|   - container: u16
|     image: ubuntu:16.04
| 
|   - container: u18
|     image: ubuntu:18.04
| 
| jobs:
| - job: RunInContainer
| 
|   strategy:
|     matrix:
|       ubuntu14:
|         containerResource: u14
|       ubuntu16:
|         containerResource: u16
|       ubuntu18:
|         containerResource: u18
| 
|   container: $[ variables['containerResource'] ]
| 
|   steps:
|   - script: printenv
| 
| Begin evaluating template '(self)/pipeline.yml'
| Finished evaluating template '(self)/pipeline.yml'
| {
| 50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221
| Final exit code for Docker start: 0
| #​#​[​command]/usr/bin/docker ps --all --filter id=50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 --filter status=running --no-trunc --format "{{.ID}} {{.Status}}"
| 50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 Up Less than a second
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 sh -c "command -v bash"
| #​#​[​command]whoami 
| runner
| #​#​[​command]id -u runner
| 1001
| #​#​[​command]id -g runner
| 1001
| #​#​[​command]id -gn runner
| runner
| Try to create a user with UID '1001' inside the container.
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 bash -c "getent passwd 1001 | cut -d: -f1 "
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 bash -c "if [[ -e '/etc/alpine-release' ]]; then echo 'Alpine-based image detected.'; fi"
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 useradd -m -u 1001 runner_azpcontainer
| Grant user 'runner_azpcontainer' SUDO privilege and allow it run any command without authentication.
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 groupadd azure_pipelines_sudo
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 usermod -a -G azure_pipelines_sudo runner_azpcontainer
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 su -c "echo '%azure_pipelines_sudo ALL=(ALL:ALL) NOPASSWD:ALL' >> /etc/sudoers"
| Allow user 'runner_azpcontainer' run any docker command without SUDO.
| #​#​[​command]stat -c %g /var/run/docker.sock
| 118
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 bash -c "cat /etc/group"
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 groupadd -g 118 azure_pipelines_docker
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 usermod -a -G azure_pipelines_docker runner_azpcontainer
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 bash -c "/__a/externals/node24/bin/node -v"
| #​#​[​command]/usr/bin/docker exec  50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221 bash -c "/__a/externals/node20_1/bin/node -v"
| #​#​[​section]Finishing: Initialize containers
[20260123.1 / Stage / RunInContainer ubuntu14] Succeeded: Initialize containers
[20260123.1 / Stage / RunInContainer ubuntu14] Running: Default Checkout Task
| #​#​[​section]Starting: Default Checkout Task
| ==============================================================================
| Task         : Local Checkout
| Description  : Copy the workspace from the Runner.Client to the Agent
| Version      : 0.1.2
| Author       : ChristopherHX
| Help         : 
| ==============================================================================
| #​#​[​error]Access to the path '/__a' is denied.
| #​#​[​section]Finishing: Default Checkout Task
[20260123.1 / Stage / RunInContainer ubuntu14] Failed: Default Checkout Task
[20260123.1 / Stage / RunInContainer ubuntu14] Running: Command Line Script
| Skipping step due to condition evaluation.
| Evaluating: SucceededNode()
| Result: False
| 
[20260123.1 / Stage / RunInContainer ubuntu14] Skipped: Command Line Script
[20260123.1 / Stage / RunInContainer ubuntu14] Running: Stop Containers
| #​#​[​section]Starting: Stop Containers
| Stop and remove container: u14_ubuntu[1404](https://github.com/ChristopherHX/runner.server/actions/runs/21301919054/job/61321599915?pr=647#step:11:1405)_e07245
| #​#​[​command]/usr/bin/docker rm --force 50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221
| 50d5bba4282066b49961a4731ceaef401835b5fa75265c175de301b055044221
| Remove container network: vsts_network_1df697db9385409292520a55a9481514
| #​#​[​command]/usr/bin/docker network rm vsts_network_1df697db9385409292520a55a9481514
| vsts_network_1df697db9385409292520a55a9481514
| #​#​[​section]Finishing: Stop Containers
[20260123.1 / Stage / RunInContainer ubuntu14] Succeeded: Stop Containers
[20260123.1 / Stage / RunInContainer ubuntu14] Running: Finalize Job
| #​#​[​section]Starting: Finalize Job
| Cleaning up task key
| Start cleaning up orphan processes.
| #​#​[​section]Finishing: Finalize Job
[20260123.1 / Stage / RunInContainer ubuntu14] Succeeded: Finalize Job
[20260123.1 / Stage / RunInContainer ubuntu14] Running: Stage / RunInContainer ubuntu14
| #​#​[​section]Finishing: Stage / RunInContainer ubuntu14
[20260123.1 / Stage / RunInContainer ubuntu14] Failed: Stage / RunInContainer ubuntu14
[20260123.1 / Stage / RunInContainer ubuntu14] Job Completed with Status: Failed
| Cancelled via strategy.fail-fast == true
| Cancelled via strategy.fail-fast == true
[20260123.1 / Stage / RunInContainer ubuntu16] Job Completed with Status: Canceled
[20260123.1 / Stage / RunInContainer ubuntu18] Job Completed with Status: Canceled
[20260123.1 / Stage / RunInContainer] Job Completed with Status: Failed
[pipeline.yml] Workflow 1 Completed with Status: Failed
All Workflows finished, at least one workflow failed
Stopped Runner
Stopped Server
Error: Process completed with exit code 1.

@ChristopherHX
Copy link
Owner Author

ChristopherHX commented Jan 24, 2026

 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.FileSystem.CreateParentsAndDirectory(String fullPath, UnixFileMode unixCreateMode)
   at System.IO.FileSystem.CreateDirectory(String fullPath, UnixFileMode unixCreateMode)
   at System.IO.Directory.CreateDirectory(String path)
   at Microsoft.VisualStudio.Services.Agent.Worker.VsoTaskLibManager.DownloadAsync(IExecutionContext executionContext, String blobUrl, String tempDirectory, String extractPath, IRetryOptions retryOptions) in /mnt/vss/_work/1/s/src/Agent.Worker/VsoTaskLibManager.cs:line 44
   at Microsoft.VisualStudio.Services.Agent.Worker.VsoTaskLibManager.DownloadVsoTaskLibAsync(IExecutionContext executionContext) in /mnt/vss/_work/1/s/src/Agent.Worker/VsoTaskLibManager.cs:line 34
   at Microsoft.VisualStudio.Services.Agent.Worker.Handlers.NodeHandler.RunAsync() in /mnt/vss/_work/1/s/src/Agent.Worker/Handlers/NodeHandler.cs:line 127
   at Microsoft.VisualStudio.Services.Agent.Worker.TaskRunner.RunAsyncInternal() in /mnt/vss/_work/1/s/src/Agent.Worker/TaskRunner.cs:line 477
   at Microsoft.VisualStudio.Services.Agent.Worker.TaskRunner.RunAsync() in /mnt/vss/_work/1/s/src/Agent.Worker/TaskRunner.cs:line 81
   at Microsoft.VisualStudio.Services.Agent.Worker.StepsRunner.RunStepAsync(IStep step, CancellationToken jobCancellationToken) in /mnt/vss/_work/1/s/src/Agent.Worker/StepsRunner.cs:line 369

at Microsoft.VisualStudio.Services.Agent.Worker.VsoTaskLibManager.DownloadAsync(IExecutionContext executionContext, String blobUrl, String tempDirectory, String extractPath, IRetryOptions retryOptions) in /mnt/vss/_work/1/s/src/Agent.Worker/VsoTaskLibManager.cs:line 44

tempDirectory = /__a, an agent path on the host? Did they break their agent if the task is not already cached and used in container mode?

https://github.com/microsoft/azure-pipelines-agent/blob/53b6f78cb16f0e0d90a79e7450bbe7bfc861e6db/src/Agent.Worker/VsoTaskLibManager.cs#L32C63-L32C76

So the temp folder here depends on the agent step runner

@ChristopherHX ChristopherHX marked this pull request as ready for review January 24, 2026 14:51
@ChristopherHX ChristopherHX merged commit 0696461 into main Jan 24, 2026
39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants