Parse runners and send publicKey

This commit is contained in:
Luke Tomlinson
2023-03-15 15:03:27 -07:00
parent bb7b1e8259
commit 97c15fd816
3 changed files with 13 additions and 3 deletions

View File

@@ -17,7 +17,7 @@ namespace GitHub.Runner.Common
{ {
Task<List<TaskAgent>> GetRunnersAsync(int runnerGroupId, string githubUrl, string githubToken, string agentName); Task<List<TaskAgent>> GetRunnersAsync(int runnerGroupId, string githubUrl, string githubToken, string agentName);
Task<TaskAgent> AddRunnerAsync(int runnerGroupId, TaskAgent agent, string githubUrl, string githubToken); Task<TaskAgent> AddRunnerAsync(int runnerGroupId, TaskAgent agent, string githubUrl, string githubToken, string publicKey);
Task<List<TaskAgentPool>> GetRunnerGroupsAsync(string githubUrl, string githubToken); Task<List<TaskAgentPool>> GetRunnerGroupsAsync(string githubUrl, string githubToken);
string GetGitHubRequestId(HttpResponseHeaders headers); string GetGitHubRequestId(HttpResponseHeaders headers);
@@ -136,7 +136,7 @@ namespace GitHub.Runner.Common
return agentPools?.ToAgentPoolList(); return agentPools?.ToAgentPoolList();
} }
public async Task<TaskAgent> AddRunnerAsync(int runnerGroupId, TaskAgent agent, string githubUrl, string githubToken) public async Task<TaskAgent> AddRunnerAsync(int runnerGroupId, TaskAgent agent, string githubUrl, string githubToken, string publicKey)
{ {
var gitHubUrlBuilder = new UriBuilder(githubUrl); var gitHubUrlBuilder = new UriBuilder(githubUrl);
var path = gitHubUrlBuilder.Path.Split('/', '\\', StringSplitOptions.RemoveEmptyEntries); var path = gitHubUrlBuilder.Path.Split('/', '\\', StringSplitOptions.RemoveEmptyEntries);
@@ -159,6 +159,7 @@ namespace GitHub.Runner.Common
{"updates_disabled", agent.DisableUpdate}, {"updates_disabled", agent.DisableUpdate},
{"ephemeral", agent.Ephemeral}, {"ephemeral", agent.Ephemeral},
{"labels", agent.Labels}, {"labels", agent.Labels},
{"public_key", publicKey},
}; };
var body = new StringContent(StringUtil.ConvertToJson(bodyObject), null, "application/json"); var body = new StringContent(StringUtil.ConvertToJson(bodyObject), null, "application/json");

View File

@@ -181,9 +181,11 @@ namespace GitHub.Runner.Listener.Configuration
// We want to use the native CSP of the platform for storage, so we use the RSACSP directly // We want to use the native CSP of the platform for storage, so we use the RSACSP directly
RSAParameters publicKey; RSAParameters publicKey;
var keyManager = HostContext.GetService<IRSAKeyManager>(); var keyManager = HostContext.GetService<IRSAKeyManager>();
string publicKeyXML;
using (var rsa = keyManager.CreateKey()) using (var rsa = keyManager.CreateKey())
{ {
publicKey = rsa.ExportParameters(false); publicKey = rsa.ExportParameters(false);
publicKeyXML = rsa.ToXmlString(includePrivateParameters: false);
} }
_term.WriteSection("Runner Registration"); _term.WriteSection("Runner Registration");
@@ -297,7 +299,7 @@ namespace GitHub.Runner.Listener.Configuration
{ {
if (runnerSettings.UseV2Flow) if (runnerSettings.UseV2Flow)
{ {
agent = await _dotcomServer.AddRunnerAsync(runnerSettings.PoolId, agent, runnerSettings.GitHubUrl, registerToken); agent = await _dotcomServer.AddRunnerAsync(runnerSettings.PoolId, agent, runnerSettings.GitHubUrl, registerToken, publicKeyXML);
} }
else else
{ {

View File

@@ -34,6 +34,13 @@ namespace GitHub.DistributedTask.WebApi
set; set;
} }
public List<TaskAgent> ToTaskAgents()
{
List<TaskAgent> taskAgents = new List<TaskAgent>();
return Runners.Select(runner => new TaskAgent() { Name = runner.Name }).ToList();
}
public ListRunnersResponse Clone() public ListRunnersResponse Clone()
{ {
return new ListRunnersResponse(this); return new ListRunnersResponse(this);