Create vssconnection to actions service when URL provided. (#3751)

This commit is contained in:
Tingluo Huang
2025-03-14 13:55:57 -04:00
committed by GitHub
parent 0195d7ca77
commit 07310cabc0
3 changed files with 20 additions and 6 deletions

View File

@@ -9,9 +9,9 @@ using System.Threading;
using System.Threading.Tasks;
using GitHub.DistributedTask.WebApi;
using GitHub.Runner.Common;
using GitHub.Runner.Common.Util;
using GitHub.Runner.Listener.Configuration;
using GitHub.Runner.Sdk;
using GitHub.Runner.Common.Util;
using GitHub.Services.Common;
using GitHub.Services.OAuth;
using GitHub.Services.WebApi;
@@ -27,6 +27,7 @@ namespace GitHub.Runner.Listener
private CancellationTokenSource _getMessagesTokenSource;
private VssCredentials _creds;
private TaskAgentSession _session;
private IRunnerServer _runnerServer;
private IBrokerServer _brokerServer;
private readonly Dictionary<string, int> _sessionCreationExceptionTracker = new();
private bool _accessTokenRevoked = false;
@@ -40,6 +41,7 @@ namespace GitHub.Runner.Listener
base.Initialize(hostContext);
_term = HostContext.GetService<ITerminal>();
_runnerServer = HostContext.GetService<IRunnerServer>();
_brokerServer = HostContext.GetService<IBrokerServer>();
}
@@ -50,7 +52,8 @@ namespace GitHub.Runner.Listener
// Settings
var configManager = HostContext.GetService<IConfigurationManager>();
_settings = configManager.LoadSettings();
var serverUrl = _settings.ServerUrlV2;
var serverUrlV2 = _settings.ServerUrlV2;
var serverUrl = _settings.ServerUrl;
Trace.Info(_settings);
if (string.IsNullOrEmpty(_settings.ServerUrlV2))
@@ -84,9 +87,17 @@ namespace GitHub.Runner.Listener
try
{
Trace.Info("Connecting to the Broker Server...");
await _brokerServer.ConnectAsync(new Uri(serverUrl), _creds);
await _brokerServer.ConnectAsync(new Uri(serverUrlV2), _creds);
Trace.Info("VssConnection created");
if (!string.IsNullOrEmpty(serverUrl) &&
!string.Equals(serverUrl, serverUrlV2, StringComparison.OrdinalIgnoreCase))
{
Trace.Info("Connecting to the Runner server...");
await _runnerServer.ConnectAsync(new Uri(serverUrl), _creds);
Trace.Info("VssConnection created");
}
_term.WriteLine();
_term.WriteSuccessMessage("Connected to GitHub");
_term.WriteLine();
@@ -131,7 +142,7 @@ namespace GitHub.Runner.Listener
// Check whether we get 401 because the runner registration already removed by the service.
// If the runner registration get deleted, we can't exchange oauth token.
Trace.Error("Test oauth app registration.");
var oauthTokenProvider = new VssOAuthTokenProvider(vssOAuthCred, new Uri(serverUrl));
var oauthTokenProvider = new VssOAuthTokenProvider(vssOAuthCred, new Uri(serverUrlV2));
var authError = await oauthTokenProvider.ValidateCredentialAsync(token);
if (string.Equals(authError, "invalid_client", StringComparison.OrdinalIgnoreCase))
{

View File

@@ -360,7 +360,7 @@ namespace GitHub.Runner.Listener
}
}
private IMessageListener GetMesageListener(RunnerSettings settings)
private IMessageListener GetMessageListener(RunnerSettings settings)
{
if (settings.UseV2Flow)
{
@@ -379,7 +379,7 @@ namespace GitHub.Runner.Listener
try
{
Trace.Info(nameof(RunAsync));
_listener = GetMesageListener(settings);
_listener = GetMessageListener(settings);
CreateSessionResult createSessionResult = await _listener.CreateSessionAsync(HostContext.RunnerShutdownToken);
if (createSessionResult == CreateSessionResult.SessionConflict)
{

View File

@@ -16,6 +16,7 @@ namespace GitHub.Runner.Common.Tests.Listener
private readonly RunnerSettings _settings;
private readonly Mock<IConfigurationManager> _config;
private readonly Mock<IBrokerServer> _brokerServer;
private readonly Mock<IRunnerServer> _runnerServer;
private readonly Mock<ICredentialManager> _credMgr;
private Mock<IConfigurationStore> _store;
@@ -28,6 +29,7 @@ namespace GitHub.Runner.Common.Tests.Listener
_credMgr = new Mock<ICredentialManager>();
_store = new Mock<IConfigurationStore>();
_brokerServer = new Mock<IBrokerServer>();
_runnerServer = new Mock<IRunnerServer>();
}
[Fact]
@@ -75,6 +77,7 @@ namespace GitHub.Runner.Common.Tests.Listener
tc.SetSingleton<ICredentialManager>(_credMgr.Object);
tc.SetSingleton<IConfigurationStore>(_store.Object);
tc.SetSingleton<IBrokerServer>(_brokerServer.Object);
tc.SetSingleton<IRunnerServer>(_runnerServer.Object);
return tc;
}
}