Hi Leoh,
Thank you for reaching out and providing such detailed context. Based on the symptoms described where the scheduled Deployment Group stage enters the "In Progress / 1 pending" state but the job view says "The job has not yet started" and no agent logs are generated. The issue is occurring on the server side before the job is officially handed off to the agent queue. Because a manual redeployment succeeds, we can rule out agent health or task misconfiguration.
Here is how you can determine the root cause, based on official Microsoft troubleshooting guidelines:
1. Check Parallel Jobs and Concurrency Limits Even if no other releases are running in this specific pipeline, your Azure DevOps Server might be hitting a global concurrency limit at 02:00 due to other nightly builds or releases running across the collection. As stated in the official documentation for Troubleshoot pipeline failure to start:
"If you're currently running other pipelines, you might not have any remaining parallel jobs, or you might have hit your free limits... All available agents are in use. Jobs might wait if all your agents are currently busy."
To verify this, when the issue occurs at 02:00, navigate to Project settings > Parallel jobs and check the Agent pools tab to see if there are other jobs holding the concurrency slots.
2. Enable Verbose Logging and Inspect Server Logs Since the agent's _diag logs only show keep-alive polling, you must inspect the server-side routing.
- Enable debug logging on the pipeline. According to the Review logs to diagnose pipeline issues documentation: "To configure verbose logs for all runs, you can add a variable named
system.debugand set its value totrue." - Inspect the Azure DevOps Server Application Tier logs. Look in the Windows Event Viewer (Application log) and the server's
_diagfolder for theTfsJobAgentservice. If the scheduled job is failing to enqueue internally, theTfsJobAgentlogs around 02:00 will show if it crashed, timed out, or failed to assign the job.
3. Use Supported REST APIs for Visibility Instead of querying the SQL database directly (which is unsupported), use the Azure DevOps Server 2019 REST APIs to check the queue status. Call the following endpoint around the failure window to see if the job is listed and inspect its queuePosition and status: GET https://{yourServer}/{collection}/_apis/distributedtask/pools/{poolId}/jobs?api-version=5.1
Workaround / Next Step: If the TfsJobAgent service is silently dropping the scheduled task due to a hung internal thread, restarting the Azure DevOps Server Background Job Agent (TfsJobAgent) service from services.msc on the server can clear any orphaned tasks and prevent the queue from hanging.
Please let me know in comments if it works are any other questions.
Note: This response is generated with the help of AI systems.