cicd runtime_error ai_generated partial

Error: Workflow timed out after 60 minutes waiting for approval. The workflow has been canceled.

ID: cicd/circleci-workflow-approval-timeout

Also available as: JSON · Markdown · 中文
88%Fix Rate
83%Confidence
1Evidence
2024-06-12First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
CircleCI CLI 0.1.3000 active
CircleCI Server 4.0 active

Root Cause

A CircleCI workflow with a manual approval job timed out because the required approver did not approve or reject the job within the default 60-minute timeout period.

generic

中文

由于所需的审批者在默认的 60 分钟超时时间内未批准或拒绝作业,带有手动审批作业的 CircleCI 工作流超时。

Official Documentation

https://circleci.com/docs/workflows/#holding-a-workflow-for-manual-approval

Workarounds

  1. 90% success Use the CircleCI API to approve the job manually: `curl -X POST -H "Circle-Token: $CIRCLE_TOKEN" https://circleci.com/api/v2/workflow/{workflow_id}/approve/{approval_request_id}`. Find the approval_request_id from the workflow's jobs via the API.
    Use the CircleCI API to approve the job manually: `curl -X POST -H "Circle-Token: $CIRCLE_TOKEN" https://circleci.com/api/v2/workflow/{workflow_id}/approve/{approval_request_id}`. Find the approval_request_id from the workflow's jobs via the API.
  2. 80% success Modify the workflow configuration to remove the approval job for non-production branches, or use a conditional approval: `when: << pipeline.parameters.deploy_to_prod >>` where the parameter defaults to false for development branches.
    Modify the workflow configuration to remove the approval job for non-production branches, or use a conditional approval: `when: << pipeline.parameters.deploy_to_prod >>` where the parameter defaults to false for development branches.

中文步骤

  1. Use the CircleCI API to approve the job manually: `curl -X POST -H "Circle-Token: $CIRCLE_TOKEN" https://circleci.com/api/v2/workflow/{workflow_id}/approve/{approval_request_id}`. Find the approval_request_id from the workflow's jobs via the API.
  2. Modify the workflow configuration to remove the approval job for non-production branches, or use a conditional approval: `when: << pipeline.parameters.deploy_to_prod >>` where the parameter defaults to false for development branches.

Dead Ends

Common approaches that don't work:

  1. 90% fail

    Project settings do not control approval timeout; the timeout is fixed per plan (60 minutes for free/paid) and cannot be changed via settings.

  2. 85% fail

    Re-running does not bypass the approval step; the same approval job will be triggered again, and the timeout will recur if no one approves.