Skip to content

Github Runner Action Fails when backend api call urls are redirected through security software (like openDNS) #3029

Closed as not planned
@garkenxian

Description

@garkenxian

Describe the bug
I am using self-hosted runners. The runners are configured to connect to the internet through my company's network. Our network uses OpenDNS for network monitoring. When using the GitHub action software, it will attempt to connect to the github site using a pipelines url, that gets checked by open DNS.

looks like this on chrome

image

Basically it routes the request through openDNS to validate the link is valid and returns it to the original link with a couple of added headers to say its safe.

This "works" in chrome because chrome follows the redirects, where the GitHub Action software does not. The error in the logs show that when it attempts this, it just fails and retries.

Expected behavior
Expected behavior is that the github action runner application will follow 302 redirects to ensure that openDNS and other networking monitoring solutions can be used in conjunction of github action runners on self hosted machines in a secure environment

Runner Version and Platform

Version of your runner?
Windows runner 2.311.0

OS of the machine running the runner? OSX/Windows/Linux/...
Windows 2019 server edition

What's not working?

Please include error messages and screenshots.

Job Log Output

If applicable, include the relevant part of the job / step log output here. All sensitive information should already be masked out, but please double-check before pasting here.

[2023-12-07 18:36:03Z INFO GitHubActionsService] Starting operation Location.GetConnectionData
[2023-12-07 18:36:03Z ERR  GitHubActionsService] GET request to https://pipelinesghubeus25.actions.githubusercontent.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/_apis/connectionData?connectOptions=1&lastChangeId=-1&lastChangeId64=-1 failed. HTTP Status: Redirect
[2023-12-07 18:36:03Z INFO JobRunner] Redirecting to 'https://pipelinesghubeus25.actions.githubusercontent.com.x.5fbcf52e0106c04fb90ba3500c5b05e633fe.9270fc56.id.opendns.com/s/pipelinesghubeus25.actions.githubusercontent.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/_apis/connectionData?X-OpenDNS-Session=_5fbcf52e0106c04fb90ba3500c5b05e633fe9270fc56_EFagCeIH_connectOptions=1&lastChangeId=-1&lastChangeId64=-1'.
[2023-12-07 18:36:03Z ERR  GitHubActionsService] GET request to https://pipelinesghubeus25.actions.githubusercontent.com.x.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.9270fc56.id.opendns.com/s/pipelinesghubeus25.actions.githubusercontent.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/_apis/connectionData?X-OpenDNS-Session=_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_EFagCeIH_connectOptions=1&lastChangeId=-1&lastChangeId64=-1 failed. HTTP Status: Redirect
[2023-12-07 18:36:03Z INFO GitHubActionsService] Finished operation Location.GetConnectionData
[2023-12-07 18:36:03Z INFO Worker] Job completed.
[2023-12-07 18:36:03Z ERR  Worker] GitHub.Services.WebApi.VssServiceResponseException: Moved Temporarily
   at GitHub.Services.WebApi.VssHttpClientBase.HandleResponseAsync(HttpResponseMessage response, CancellationToken cancellationToken)
   at GitHub.Services.WebApi.VssHttpClientBase.SendAsync(HttpRequestMessage message, HttpCompletionOption completionOption, Object userState, CancellationToken cancellationToken)
   at GitHub.Services.WebApi.VssHttpClientBase.SendAsync[T](HttpRequestMessage message, Object userState, CancellationToken cancellationToken)
   at GitHub.Services.Location.Client.LocationHttpClient.GetConnectionDataAsync(ConnectOptions connectOptions, Int64 lastChangeId, CancellationToken cancellationToken, Object userState)
   at GitHub.Services.WebApi.Location.VssServerDataProvider.GetConnectionDataAsync(ConnectOptions connectOptions, Int32 lastChangeId, CancellationToken cancellationToken)
   at GitHub.Services.WebApi.Location.VssServerDataProvider.ConnectAsync(ConnectOptions connectOptions, CancellationToken cancellationToken)
   at GitHub.Runner.Common.JobServer.ConnectAsync(VssConnection jobConnection)
   at GitHub.Runner.Worker.JobRunner.RunAsync(AgentJobRequestMessage message, CancellationToken jobRequestCancellationToken)
   at GitHub.Runner.Worker.Worker.RunAsync(String pipeIn, String pipeOut)
   at GitHub.Runner.Worker.Program.MainAsync(IHostContext context, String[] args)

Runner and Worker's Diagnostic Logs

If applicable, add relevant diagnostic log information. Logs are located in the runner's _diag folder. The runner logs are prefixed with Runner_ and the worker logs are prefixed with Worker_. Each job run correlates to a worker log. All sensitive information should already be masked out, but please double-check before pasting here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    StalebugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions