mirror of
https://github.com/actions/runner.git
synced 2025-12-12 05:37:01 +00:00
Compare commits
3 Commits
fhammerl/2
...
fhammerl/f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b183ce236d | ||
|
|
216e1b5643 | ||
|
|
44157b5234 |
@@ -38,7 +38,7 @@ namespace GitHub.Runner.Listener
|
|||||||
private IRunnerServer _runnerServer;
|
private IRunnerServer _runnerServer;
|
||||||
private int _poolId;
|
private int _poolId;
|
||||||
private int _agentId;
|
private int _agentId;
|
||||||
private readonly List<string> _updateTrace = new List<string>();
|
private readonly ConcurrentQueue<string> _updateTrace = new ConcurrentQueue<string>();
|
||||||
private Task _cloneAndCalculateContentHashTask;
|
private Task _cloneAndCalculateContentHashTask;
|
||||||
private string _dotnetRuntimeCloneDirectory;
|
private string _dotnetRuntimeCloneDirectory;
|
||||||
private string _externalsCloneDirectory;
|
private string _externalsCloneDirectory;
|
||||||
@@ -80,7 +80,7 @@ namespace GitHub.Runner.Listener
|
|||||||
}
|
}
|
||||||
|
|
||||||
Trace.Info($"An update is available.");
|
Trace.Info($"An update is available.");
|
||||||
_updateTrace.Add($"RunnerPlatform: {_targetPackage.Platform}");
|
_updateTrace.Enqueue($"RunnerPlatform: {_targetPackage.Platform}");
|
||||||
|
|
||||||
// Print console line that warn user not shutdown runner.
|
// Print console line that warn user not shutdown runner.
|
||||||
await UpdateRunnerUpdateStateAsync("Runner update in progress, do not shutdown runner.");
|
await UpdateRunnerUpdateStateAsync("Runner update in progress, do not shutdown runner.");
|
||||||
@@ -120,7 +120,7 @@ namespace GitHub.Runner.Listener
|
|||||||
Trace.Info($"Delete old version runner backup.");
|
Trace.Info($"Delete old version runner backup.");
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
// generate update script from template
|
// generate update script from template
|
||||||
_updateTrace.Add($"DeleteRunnerBackupTime: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"DeleteRunnerBackupTime: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
await UpdateRunnerUpdateStateAsync("Generate and execute update script.");
|
await UpdateRunnerUpdateStateAsync("Generate and execute update script.");
|
||||||
|
|
||||||
string updateScript = GenerateUpdateScript(restartInteractiveRunner);
|
string updateScript = GenerateUpdateScript(restartInteractiveRunner);
|
||||||
@@ -145,14 +145,14 @@ namespace GitHub.Runner.Listener
|
|||||||
|
|
||||||
totalUpdateTime.Stop();
|
totalUpdateTime.Stop();
|
||||||
|
|
||||||
_updateTrace.Add($"TotalUpdateTime: {totalUpdateTime.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"TotalUpdateTime: {totalUpdateTime.ElapsedMilliseconds}ms");
|
||||||
await UpdateRunnerUpdateStateAsync("Runner will exit shortly for update, should be back online within 10 seconds.");
|
await UpdateRunnerUpdateStateAsync("Runner will exit shortly for update, should be back online within 10 seconds.");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_updateTrace.Add(ex.ToString());
|
_updateTrace.Enqueue(ex.ToString());
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -260,9 +260,9 @@ namespace GitHub.Runner.Listener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateTrace.Add($"DownloadUrl: {packageDownloadUrl}");
|
_updateTrace.Enqueue($"DownloadUrl: {packageDownloadUrl}");
|
||||||
_updateTrace.Add($"RuntimeTrimmed: {runtimeTrimmed}");
|
_updateTrace.Enqueue($"RuntimeTrimmed: {runtimeTrimmed}");
|
||||||
_updateTrace.Add($"ExternalsTrimmed: {externalsTrimmed}");
|
_updateTrace.Enqueue($"ExternalsTrimmed: {externalsTrimmed}");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -328,14 +328,14 @@ namespace GitHub.Runner.Listener
|
|||||||
if (fallbackToFullPackage)
|
if (fallbackToFullPackage)
|
||||||
{
|
{
|
||||||
Trace.Error("Something wrong with the trimmed runner package, failback to use the full package for runner updates.");
|
Trace.Error("Something wrong with the trimmed runner package, failback to use the full package for runner updates.");
|
||||||
_updateTrace.Add($"FallbackToFullPackage: {fallbackToFullPackage}");
|
_updateTrace.Enqueue($"FallbackToFullPackage: {fallbackToFullPackage}");
|
||||||
|
|
||||||
IOUtil.DeleteDirectory(latestRunnerDirectory, token);
|
IOUtil.DeleteDirectory(latestRunnerDirectory, token);
|
||||||
Directory.CreateDirectory(latestRunnerDirectory);
|
Directory.CreateDirectory(latestRunnerDirectory);
|
||||||
|
|
||||||
packageDownloadUrl = _targetPackage.DownloadUrl;
|
packageDownloadUrl = _targetPackage.DownloadUrl;
|
||||||
packageHashValue = _targetPackage.HashValue;
|
packageHashValue = _targetPackage.HashValue;
|
||||||
_updateTrace.Add($"DownloadUrl: {packageDownloadUrl}");
|
_updateTrace.Enqueue($"DownloadUrl: {packageDownloadUrl}");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -453,9 +453,9 @@ namespace GitHub.Runner.Listener
|
|||||||
Trace.Info($"Download runner: finished download");
|
Trace.Info($"Download runner: finished download");
|
||||||
downloadSucceeded = true;
|
downloadSucceeded = true;
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
_updateTrace.Add($"PackageDownloadTime: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"PackageDownloadTime: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
_updateTrace.Add($"Attempts: {attempt}");
|
_updateTrace.Enqueue($"Attempts: {attempt}");
|
||||||
_updateTrace.Add($"PackageSize: {downloadSize / 1024 / 1024}MB");
|
_updateTrace.Enqueue($"PackageSize: {downloadSize / 1024 / 1024}MB");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException) when (token.IsCancellationRequested)
|
catch (OperationCanceledException) when (token.IsCancellationRequested)
|
||||||
@@ -505,7 +505,7 @@ namespace GitHub.Runner.Listener
|
|||||||
|
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
Trace.Info($"Validated Runner Hash matches {archiveFile} : {packageHashValue}");
|
Trace.Info($"Validated Runner Hash matches {archiveFile} : {packageHashValue}");
|
||||||
_updateTrace.Add($"ValidateHashTime: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"ValidateHashTime: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -561,7 +561,7 @@ namespace GitHub.Runner.Listener
|
|||||||
|
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
Trace.Info($"Finished getting latest runner package at: {extractDirectory}.");
|
Trace.Info($"Finished getting latest runner package at: {extractDirectory}.");
|
||||||
_updateTrace.Add($"PackageExtractTime: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"PackageExtractTime: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task CopyLatestRunnerToRoot(string latestRunnerDirectory, CancellationToken token)
|
private Task CopyLatestRunnerToRoot(string latestRunnerDirectory, CancellationToken token)
|
||||||
@@ -581,20 +581,20 @@ namespace GitHub.Runner.Listener
|
|||||||
IOUtil.CopyDirectory(Path.Combine(latestRunnerDirectory, Constants.Path.ExternalsDirectory), externalsVersionDir, token);
|
IOUtil.CopyDirectory(Path.Combine(latestRunnerDirectory, Constants.Path.ExternalsDirectory), externalsVersionDir, token);
|
||||||
|
|
||||||
// copy and replace all .sh/.cmd files
|
// copy and replace all .sh/.cmd files
|
||||||
Trace.Info($"Copy any remaining .sh/.cmd files into runner root.");
|
Trace.Info($"DISABLED");
|
||||||
foreach (FileInfo file in new DirectoryInfo(latestRunnerDirectory).GetFiles() ?? new FileInfo[0])
|
// foreach (FileInfo file in new DirectoryInfo(latestRunnerDirectory).GetFiles() ?? new FileInfo[0])
|
||||||
{
|
// {
|
||||||
string destination = Path.Combine(HostContext.GetDirectory(WellKnownDirectory.Root), file.Name);
|
// string destination = Path.Combine(HostContext.GetDirectory(WellKnownDirectory.Root), file.Name);
|
||||||
|
|
||||||
// Removing the file instead of just trying to overwrite it works around permissions issues on linux.
|
// // Removing the file instead of just trying to overwrite it works around permissions issues on linux.
|
||||||
// https://github.com/actions/runner/issues/981
|
// // https://github.com/actions/runner/issues/981
|
||||||
Trace.Info($"Copy {file.FullName} to {destination}");
|
// Trace.Info($"Copy {file.FullName} to {destination}");
|
||||||
IOUtil.DeleteFile(destination);
|
// IOUtil.DeleteFile(destination);
|
||||||
file.CopyTo(destination, true);
|
// file.CopyTo(destination, true);
|
||||||
}
|
// }
|
||||||
|
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
_updateTrace.Add($"CopyRunnerToRootTime: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"CopyRunnerToRootTime: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -720,9 +720,14 @@ namespace GitHub.Runner.Listener
|
|||||||
_terminal.WriteLine(currentState);
|
_terminal.WriteLine(currentState);
|
||||||
|
|
||||||
var traces = new List<string>();
|
var traces = new List<string>();
|
||||||
if (_updateTrace.Count > 0)
|
while (_updateTrace.TryDequeue(out var trace))
|
||||||
{
|
{
|
||||||
foreach (var trace in _updateTrace)
|
traces.Add(trace);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (traces.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var trace in traces)
|
||||||
{
|
{
|
||||||
Trace.Info(trace);
|
Trace.Info(trace);
|
||||||
}
|
}
|
||||||
@@ -730,7 +735,7 @@ namespace GitHub.Runner.Listener
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _runnerServer.UpdateAgentUpdateStateAsync(_poolId, _agentId, currentState, string.Join(Environment.NewLine, _updateTrace));
|
await _runnerServer.UpdateAgentUpdateStateAsync(_poolId, _agentId, currentState, string.Join(Environment.NewLine, traces));
|
||||||
_updateTrace.Clear();
|
_updateTrace.Clear();
|
||||||
}
|
}
|
||||||
catch (VssResourceNotFoundException)
|
catch (VssResourceNotFoundException)
|
||||||
@@ -806,7 +811,7 @@ namespace GitHub.Runner.Listener
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
_updateTrace.Add($"{nameof(RestoreTrimmedExternals)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"{nameof(RestoreTrimmedExternals)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -858,7 +863,7 @@ namespace GitHub.Runner.Listener
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
_updateTrace.Add($"{nameof(RestoreTrimmedDotnetRuntime)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"{nameof(RestoreTrimmedDotnetRuntime)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -889,7 +894,7 @@ namespace GitHub.Runner.Listener
|
|||||||
var externalsHash = await HashFiles(externalsCloneDirectory, token);
|
var externalsHash = await HashFiles(externalsCloneDirectory, token);
|
||||||
Trace.Info($"Externals content hash: {externalsHash}");
|
Trace.Info($"Externals content hash: {externalsHash}");
|
||||||
_contentHashes[_externals] = externalsHash;
|
_contentHashes[_externals] = externalsHash;
|
||||||
_updateTrace.Add($"ExternalsHash: {_contentHashes[_externals]}");
|
_updateTrace.Enqueue($"ExternalsHash: {_contentHashes[_externals]}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -913,7 +918,7 @@ namespace GitHub.Runner.Listener
|
|||||||
var runtimeHash = await HashFiles(dotnetRuntimeCloneDirectory, token);
|
var runtimeHash = await HashFiles(dotnetRuntimeCloneDirectory, token);
|
||||||
Trace.Info($"Runtime content hash: {runtimeHash}");
|
Trace.Info($"Runtime content hash: {runtimeHash}");
|
||||||
_contentHashes[_dotnetRuntime] = runtimeHash;
|
_contentHashes[_dotnetRuntime] = runtimeHash;
|
||||||
_updateTrace.Add($"DotnetRuntimeHash: {_contentHashes[_dotnetRuntime]}");
|
_updateTrace.Enqueue($"DotnetRuntimeHash: {_contentHashes[_dotnetRuntime]}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -983,7 +988,7 @@ namespace GitHub.Runner.Listener
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
_updateTrace.Add($"{nameof(CloneDotnetRuntime)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"{nameof(CloneDotnetRuntime)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -1009,7 +1014,7 @@ namespace GitHub.Runner.Listener
|
|||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
_updateTrace.Add($"{nameof(CloneExternals)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"{nameof(CloneExternals)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.FromResult(false);
|
return Task.FromResult(false);
|
||||||
@@ -1055,6 +1060,8 @@ namespace GitHub.Runner.Listener
|
|||||||
arguments: $"\"{hashFilesScript.Replace("\"", "\\\"")}\"",
|
arguments: $"\"{hashFilesScript.Replace("\"", "\\\"")}\"",
|
||||||
environment: env,
|
environment: env,
|
||||||
requireExitCodeZero: false,
|
requireExitCodeZero: false,
|
||||||
|
outputEncoding: null,
|
||||||
|
killProcessOnCancel: true,
|
||||||
cancellationToken: token);
|
cancellationToken: token);
|
||||||
|
|
||||||
if (exitCode != 0)
|
if (exitCode != 0)
|
||||||
@@ -1063,7 +1070,7 @@ namespace GitHub.Runner.Listener
|
|||||||
}
|
}
|
||||||
|
|
||||||
stopWatch.Stop();
|
stopWatch.Stop();
|
||||||
_updateTrace.Add($"{nameof(HashFiles)}{Path.GetFileName(fileFolder)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
_updateTrace.Enqueue($"{nameof(HashFiles)}{Path.GetFileName(fileFolder)}Time: {stopWatch.ElapsedMilliseconds}ms");
|
||||||
return hashResult;
|
return hashResult;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user