Troubleshooting workflows
You can use the tools in GitHub Actions to debug your workflows.
In this article
Initial troubleshooting suggestions
There are several ways you can troubleshoot failed workflow runs.
Note
If you are on a GitHub Copilot Free subscription, this will count towards your monthly chat message limit.
Using GitHub Copilot
To open a chat with GitHub Copilot about a failed workflow run, you can either:
- Next to the failed check in the merge box, click, then click Explain error.
- In the merge box, click on the failed check. At the top of the workflow run summary page, click Explain error.
This opens a chat window with GitHub Copilot, where it will provide instructions to resolve the issue.
Using workflow run logs
Each workflow run generates activity logs that you can view, search, and download. For more information, seeUsing workflow run logs.
Enabling debug logging
If the workflow logs do not provide enough detail to diagnose why a workflow, job, or step is not working as expected, you can enable additional debug logging. For more information, seeEnabling debug logging.
If your workflow uses specific tools or actions, enabling their debug or verbose logging options can help generate more detailed output for troubleshooting.For example, you can usenpm install --verbose
for npm orGIT_TRACE=1 GIT_CURL_VERBOSE=1 git ...
for git.
Reviewing billing errors
Actions usage includes runner minutes and storage forworkflow artifacts. For more information, seeGitHub Actions billing.
Setting a budget
Setting an Actions budget may help immediately unblock workflows failing due to billing or storage errors. It will allow further minutes and storage usage to be billed up to the set budget amount. To learn more, seeSetting up budgets to control spending on metered products.
Reviewing GitHub Actions activity with metrics
To analyze the efficiency and reliability of your workflows using metrics, seeViewing GitHub Actions metrics.
Troubleshooting workflow triggers
You can review your workflow'son:
field to understand what is expected to trigger the workflow. For more information, seeTriggering a workflow.
For a full list of available events, seeEvents that trigger workflows.
Triggering event conditions
Some triggering events only run from the default branch (i.e.issues
,schedule
). Workflow file versions that exist outside of the default branch will not trigger on these events.
Workflows will not run onpull_request
activity if the pull request has a merge conflict.
Workflows that would otherwise be triggered onpush
orpull_request
activity will be skipped if the commit message contains a skip annotation. For more information, seeSkipping workflow runs.
Scheduled workflows running at unexpected times
Scheduled events can be delayed during periods of high loads of GitHub Actions workflow runs.
High load times include the start of every hour. If the load is sufficiently high enough, some queued jobs may be dropped. To decrease the chance of delay, schedule your workflow to run at a different time of the hour. For more information, seeEvents that trigger workflows.
Filtering and diff limits
Specific events allow for filtering by branch, tag, and/or paths you can customize. Workflow run creation will be skipped if the filter conditions apply to filter out the workflow.
You can use special characters with filters. For more information, seeWorkflow syntax for GitHub Actions.
For path filtering, evaluating diffs is limited to the first 300 files. If there are files changed that are not matched in the first 300 files returned by the filter, the workflow will not be run. For more information, seeWorkflow syntax for GitHub Actions.
Troubleshoot workflow execution
Workflow execution involves any issues seen after the workflow was triggered and a workflow run has been created.
Canceling Workflows
If standard cancellation through theUI orAPI does not process as expected, there may be a conditional statement configured for your running workflow job(s) that causes it to not cancel.
In these cases, you can leverage the API to force cancel the run. For more information, seeREST API endpoints for workflow runs.
A common cause can be using thealways()
status check function which returnstrue
, even on cancellation. An alternative is to use the inverse of thecancelled()
function,${{ !cancelled() }}
.
For more information, seeUsing conditions to control job execution andCanceling a workflow run.
Troubleshooting runners
Defining runner labels
GitHub-hosted runners leveragepreset labels maintained through theactions/runner-images
repository.
We recommend using unique label names for larger and self-hosted runners. If a label matches to any of the existing preset labels, there can be runner assignment issues where there is no guarantee on which matching runner option the job will run on.
Self-hosted runners
If you use self-hosted runners, you can view their activity and diagnose common issues.
For more information, seeMonitoring and troubleshooting self-hosted runners.
Networking troubleshooting suggestions
Our support is limited for network issues that involve:
- Your networks
- External networks
- Third-party systems
- General internet connectivity
To view GitHub's realtime platform status, checkGitHub Status.
For other network-related issues, review your organization's network settings and verify the status of any third-party services you're accessing. If problems persist, consider reaching out to your network administrators for further assistance.
If you're unsure about the issue, contact GitHub Support. For details on how to contact support, seeContacting GitHub Support.
DNS
Issues may occur from Domain Name System (DNS) configuration, resolution, or resolver problems. We recommend you review available logs, vendor documentation, or consult with your administrators for additional assistance.
Firewalls
Activities may become blocked by firewalls. If this occurs, you may want to review available logs, vendor documentation, or consult with your administrators for additional assistance.
Proxies
Activities could fail when using a proxy for communications. It's good practice to review available logs, vendor documentation, or consult with your administrators for additional assistance.
Refer toUsing a proxy server with self-hosted runners for information about configuring the runner application to utilize a proxy.
Subnets
It is possible to encounter issues with subnets in use or overlaps with an existing network, such as within virtual cloud provider or Docker networks. In such cases, we recommend you review your network topology and subnets in use.
Certificates
Issues may occur from self-signed or custom certificate chains and certificate stores. You can check that a certificate in use has not expired and is currently trusted. Certificates may be inspected withcurl
or similar tools. You can also review available logs, vendor documentation, or consult with your administrators for additional assistance.
IP lists
IP allow or deny lists may disrupt expected communications. If there is a problem, you should review available logs, vendor documentation, or consult with your administrators for additional assistance.
For information on GitHub's IP addresses, such as those used by GitHub-hosted runners, seeAbout GitHub's IP addresses.
Static IP addresses are available for use with GitHub-hosted larger runners. SeeManaging larger runners for more information.
Operating systems and software applications
In addition to firewalls or proxies, customizations performed to GitHub-hosted runners, such as installing additional software packages, may result in communication disruptions. For information about available customization options, seeCustomizing GitHub-hosted runners.
For self-hosted runners, learn more about necessary endpoints inSelf-hosted runners reference.
For help configuring WireGuard, seeUsing WireGuard to create a network overlay.
For details about configuring OpenID Connect (OIDC), seeUsing an API gateway with OIDC.
Azure private networking for GitHub-hosted runners
Issues may arise from the use of GitHub-hosted runners within your configured Azure Virtual Networks (VNETs) settings.
For troubleshooting advice, seeTroubleshooting Azure private network configurations for GitHub-hosted runners in your organization orTroubleshooting Azure private network configurations for GitHub-hosted runners in your enterprise in the GitHub Enterprise Cloud docs.