Compare commits

..

3 Commits

Author SHA1 Message Date
JoannaaKL
9cf42ea25a Do not fail service containers without the healthcheck 2022-10-05 09:33:21 +00:00
Ferenc Hammerl
86d0ee8389 Backport 2.298.1 (#2175)
* Update releaseNote.md

* Update runnerversion
2022-10-04 15:20:35 +00:00
Ferenc Hammerl
1379ed2c72 Fix incorrect template vars to show SHA for WIN-ARM64 (#2171) 2022-10-04 17:05:18 +02:00
3 changed files with 26 additions and 8 deletions

View File

@@ -1 +1 @@
2.298.1 <Update to ./src/runnerversion when creating release>

View File

@@ -110,7 +110,7 @@ namespace GitHub.Runner.Worker
{ {
var healthcheck = await ContainerHealthcheck(executionContext, container); var healthcheck = await ContainerHealthcheck(executionContext, container);
if (!string.Equals(healthcheck, "healthy", StringComparison.OrdinalIgnoreCase)) if (!(string.Equals(healthcheck, "healthy", StringComparison.OrdinalIgnoreCase) || string.IsNullOrEmpty(healthcheck)))
{ {
unhealthyContainers.Add(container); unhealthyContainers.Add(container);
} }
@@ -330,13 +330,13 @@ namespace GitHub.Runner.Worker
{ {
if (!container.IsJobContainer && !container.FailedInitialization) if (!container.IsJobContainer && !container.FailedInitialization)
{ {
executionContext.Output($"Print service container logs: {container.ContainerDisplayName}"); executionContext.Output($"Print service container logs: {container.ContainerDisplayName}");
int logsExitCode = await _dockerManager.DockerLogs(executionContext, container.ContainerId); int logsExitCode = await _dockerManager.DockerLogs(executionContext, container.ContainerId);
if (logsExitCode != 0) if (logsExitCode != 0)
{ {
executionContext.Warning($"Docker logs fail with exit code {logsExitCode}"); executionContext.Warning($"Docker logs fail with exit code {logsExitCode}");
} }
} }
executionContext.Output($"Stop and remove container: {container.ContainerDisplayName}"); executionContext.Output($"Stop and remove container: {container.ContainerDisplayName}");

View File

@@ -23,6 +23,7 @@ namespace GitHub.Runner.Common.Tests.Worker
private Mock<IJobServerQueue> serverQueue; private Mock<IJobServerQueue> serverQueue;
private Mock<IPagingLogger> pagingLogger; private Mock<IPagingLogger> pagingLogger;
private List<string> healthyDockerStatus = new List<string> { "healthy" }; private List<string> healthyDockerStatus = new List<string> { "healthy" };
private List<string> emptyDockerStatus = new List<string> { string.Empty };
private List<string> unhealthyDockerStatus = new List<string> { "unhealthy" }; private List<string> unhealthyDockerStatus = new List<string> { "unhealthy" };
private List<string> dockerLogs = new List<string> { "log1", "log2", "log3" }; private List<string> dockerLogs = new List<string> { "log1", "log2", "log3" };
@@ -81,6 +82,23 @@ namespace GitHub.Runner.Common.Tests.Worker
} }
[Fact]
[Trait("Level", "L0")]
[Trait("Category", "Worker")]
public async void RunServiceContainersHealthcheck_healthyServiceContainerWithoutHealthcheck_AssertSucceededTask()
{
//Arrange
Setup();
_dockerManager.Setup(x => x.DockerInspect(_ec.Object, It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult(emptyDockerStatus));
//Act
await containerOperationProvider.RunContainersHealthcheck(_ec.Object, containers);
//Assert
Assert.Equal(TaskResult.Succeeded, _ec.Object.Result ?? TaskResult.Succeeded);
}
private void Setup([CallerMemberName] string testName = "") private void Setup([CallerMemberName] string testName = "")
{ {
containers.Add(new ContainerInfo() { ContainerImage = "ubuntu:16.04" }); containers.Add(new ContainerInfo() { ContainerImage = "ubuntu:16.04" });