Update nuget packages and added logging to the Updater #865

This commit is contained in:
tidusjar 2017-09-16 23:24:45 +01:00
parent 23efcd3dce
commit d754ef6b81
11 changed files with 126 additions and 109 deletions

View file

@ -8,7 +8,7 @@
<PackageReference Include="Moq" Version="4.7.99" /> <PackageReference Include="Moq" Version="4.7.99" />
<PackageReference Include="xunit" Version="2.3.0-beta5-build3769" /> <PackageReference Include="xunit" Version="2.3.0-beta5-build3769" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta5-build3769" /> <PackageReference Include="xunit.runner.visualstudio" Version="2.3.0-beta5-build3769" />
<PackageReference Include="Nunit" Version="3.7.1" /> <PackageReference Include="Nunit" Version="3.8.1" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.7.0" /> <PackageReference Include="NUnit.ConsoleRunner" Version="3.7.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0" /> <PackageReference Include="NUnit3TestAdapter" Version="3.8.0" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta4-build3742" /> <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta4-build3742" />

View file

@ -9,8 +9,8 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper" Version="6.1.0" /> <PackageReference Include="AutoMapper" Version="6.1.1" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="2.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="3.0.1" />
<PackageReference Include="Hangfire" Version="1.6.16" /> <PackageReference Include="Hangfire" Version="1.6.16" />
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.0.0" />

View file

@ -9,9 +9,9 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper" Version="6.1.0" /> <PackageReference Include="AutoMapper" Version="6.1.1" />
<PackageReference Include="AutoMapper.Collection" Version="3.0.1" /> <PackageReference Include="AutoMapper.Collection" Version="3.1.2" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="2.0.1" /> <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="3.0.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View file

@ -8,7 +8,7 @@
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" /> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />
<PackageReference Include="Moq" Version="4.7.99" /> <PackageReference Include="Moq" Version="4.7.99" />
<PackageReference Include="Nunit" Version="3.7.1" /> <PackageReference Include="Nunit" Version="3.8.1" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.7.0" /> <PackageReference Include="NUnit.ConsoleRunner" Version="3.7.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.8.0" /> <PackageReference Include="NUnit3TestAdapter" Version="3.8.0" />
<packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference> <packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference>

View file

@ -31,7 +31,7 @@ namespace Ombi.Schedule
RecurringJob.AddOrUpdate(() => EmbyContentCacher.Start(), Cron.Hourly); RecurringJob.AddOrUpdate(() => EmbyContentCacher.Start(), Cron.Hourly);
RecurringJob.AddOrUpdate(() => RadarrCacher.CacheContent(), Cron.Hourly); RecurringJob.AddOrUpdate(() => RadarrCacher.CacheContent(), Cron.Hourly);
RecurringJob.AddOrUpdate(() => PlexUserImporter.Start(), Cron.Daily); RecurringJob.AddOrUpdate(() => PlexUserImporter.Start(), Cron.Daily);
RecurringJob.AddOrUpdate(() => Updater.Update(), Cron.Daily); RecurringJob.AddOrUpdate(() => Updater.Update(null), Cron.Daily);
//BackgroundJob.Enqueue(() => PlexUserImporter.Start()); //BackgroundJob.Enqueue(() => PlexUserImporter.Start());
} }

View file

@ -1,9 +1,10 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Hangfire.Server;
namespace Ombi.Schedule.Ombi namespace Ombi.Schedule.Ombi
{ {
public interface IOmbiAutomaticUpdater public interface IOmbiAutomaticUpdater
{ {
Task Update(); Task Update(PerformContext context);
} }
} }

View file

@ -8,6 +8,8 @@ using System.Net.Http;
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Threading.Tasks; using System.Threading.Tasks;
using Hangfire.Console;
using Hangfire.Server;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Ombi.Api.Service; using Ombi.Api.Service;
@ -28,15 +30,17 @@ namespace Ombi.Schedule.Jobs.Ombi
private ILogger<OmbiAutomaticUpdater> Logger { get; } private ILogger<OmbiAutomaticUpdater> Logger { get; }
private IOmbiService OmbiService { get; } private IOmbiService OmbiService { get; }
public async Task Update() public async Task Update(PerformContext c)
{ {
c.WriteLine("Starting the updater");
// IF AutoUpdateEnabled => // IF AutoUpdateEnabled =>
// ELSE Return; // ELSE Return;
var currentLocation = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); var currentLocation = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
c.WriteLine("Path: {0}", currentLocation);
var productVersion = AssemblyHelper.GetRuntimeVersion(); var productVersion = AssemblyHelper.GetRuntimeVersion();
Logger.LogInformation(LoggingEvents.Updater, "Product Version {0}", productVersion); Logger.LogInformation(LoggingEvents.Updater, "Product Version {0}", productVersion);
c.WriteLine("Product Version {0}", productVersion);
var productArray = productVersion.Split('-'); var productArray = productVersion.Split('-');
var version = productArray[0]; var version = productArray[0];
@ -46,119 +50,127 @@ namespace Ombi.Schedule.Jobs.Ombi
Logger.LogInformation(LoggingEvents.Updater, "Version {0}", version); Logger.LogInformation(LoggingEvents.Updater, "Version {0}", version);
Logger.LogInformation(LoggingEvents.Updater, "Branch {0}", branch); Logger.LogInformation(LoggingEvents.Updater, "Branch {0}", branch);
try
var updates = await OmbiService.GetUpdates(branch);
var serverVersion = updates.UpdateVersionString;
Logger.LogInformation(LoggingEvents.Updater, "Service Version {0}", updates.UpdateVersionString);
if (!serverVersion.Equals(version, StringComparison.CurrentCultureIgnoreCase))
{ {
var updates = await OmbiService.GetUpdates(branch);
var serverVersion = updates.UpdateVersionString;
// Let's download the correct zip
var desc = RuntimeInformation.OSDescription;
var proce = RuntimeInformation.ProcessArchitecture;
Logger.LogInformation(LoggingEvents.Updater, "OS Information: {0} {1}", desc, proce); Logger.LogInformation(LoggingEvents.Updater, "Service Version {0}", updates.UpdateVersionString);
Download download; c.WriteLine("Service Version {0}", updates.UpdateVersionString);
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Logger.LogInformation(LoggingEvents.Updater, "We are Windows");
download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("windows", CompareOptions.IgnoreCase));
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
Logger.LogInformation(LoggingEvents.Updater, "We are OSX");
download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("osx", CompareOptions.IgnoreCase));
} if (!serverVersion.Equals(version, StringComparison.CurrentCultureIgnoreCase))
else
{ {
// Linux // Let's download the correct zip
if (desc.Contains("ubuntu", CompareOptions.IgnoreCase)) var desc = RuntimeInformation.OSDescription;
var proce = RuntimeInformation.ProcessArchitecture;
Logger.LogInformation(LoggingEvents.Updater, "OS Information: {0} {1}", desc, proce);
Download download;
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{ {
// Ubuntu Logger.LogInformation(LoggingEvents.Updater, "We are Windows");
Logger.LogInformation(LoggingEvents.Updater, "We are ubuntu"); download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("windows", CompareOptions.IgnoreCase));
download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("ubuntu", CompareOptions.IgnoreCase));
} }
else if (desc.Contains("debian", CompareOptions.IgnoreCase)) else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{ {
// Debian Logger.LogInformation(LoggingEvents.Updater, "We are OSX");
Logger.LogInformation(LoggingEvents.Updater, "We are debian"); download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("osx", CompareOptions.IgnoreCase));
download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("debian", CompareOptions.IgnoreCase));
}
else if (desc.Contains("centos", CompareOptions.IgnoreCase))
{
// Centos
Logger.LogInformation(LoggingEvents.Updater, "We are centos");
download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("centos",
CompareOptions.IgnoreCase));
} }
else else
{
// Linux
if (desc.Contains("ubuntu", CompareOptions.IgnoreCase))
{
// Ubuntu
Logger.LogInformation(LoggingEvents.Updater, "We are ubuntu");
download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("ubuntu", CompareOptions.IgnoreCase));
}
else if (desc.Contains("debian", CompareOptions.IgnoreCase))
{
// Debian
Logger.LogInformation(LoggingEvents.Updater, "We are debian");
download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("debian", CompareOptions.IgnoreCase));
}
else if (desc.Contains("centos", CompareOptions.IgnoreCase))
{
// Centos
Logger.LogInformation(LoggingEvents.Updater, "We are centos");
download = updates.Downloads.FirstOrDefault(x => x.Name.Contains("centos",
CompareOptions.IgnoreCase));
}
else
{
return;
}
}
if (download == null)
{ {
return; return;
} }
}
if (download == null)
{
return;
}
// Download it // Download it
Logger.LogInformation(LoggingEvents.Updater, "Downloading the file {0} from {1}", download.Name, download.Url); Logger.LogInformation(LoggingEvents.Updater, "Downloading the file {0} from {1}", download.Name, download.Url);
var extension = download.Name.Split('.').Last(); var extension = download.Name.Split('.').Last();
var zipDir = Path.Combine(currentLocation, $"Ombi.{extension}"); var zipDir = Path.Combine(currentLocation, $"Ombi.{extension}");
try try
{
if (File.Exists(zipDir))
{ {
File.Delete(zipDir); if (File.Exists(zipDir))
}
await DownloadAsync(download.Url, zipDir);
}
catch (Exception e)
{
Logger.LogError(LoggingEvents.Updater, e, "Error when downloading the zip");
throw;
}
var tempPath = Path.Combine(currentLocation, "TempUpdate");
if (Directory.Exists(tempPath))
{
Directory.Delete(tempPath, true);
}
// Extract it
using (var files = ZipFile.OpenRead(zipDir))
{
// Temp Path
Directory.CreateDirectory(tempPath);
foreach (var entry in files.Entries)
{
if (entry.FullName.Contains("/"))
{ {
var path = Path.GetDirectoryName(Path.Combine(tempPath, entry.FullName)); File.Delete(zipDir);
Directory.CreateDirectory(path);
} }
entry.ExtractToFile(Path.Combine(tempPath, entry.FullName)); await DownloadAsync(download.Url, zipDir);
}
catch (Exception e)
{
Logger.LogError(LoggingEvents.Updater, e, "Error when downloading the zip");
throw;
} }
}
// There must be an update var tempPath = Path.Combine(currentLocation, "TempUpdate");
var start = new ProcessStartInfo if (Directory.Exists(tempPath))
{ {
UseShellExecute = false, Directory.Delete(tempPath, true);
CreateNoWindow = true, }
FileName = "Ombi.Updater", // Extract it
Arguments = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + " " + extension, using (var files = ZipFile.OpenRead(zipDir))
}; {
using (var proc = new Process { StartInfo = start }) // Temp Path
{ Directory.CreateDirectory(tempPath);
proc.Start(); foreach (var entry in files.Entries)
} {
if (entry.FullName.Contains("/"))
{
var path = Path.GetDirectoryName(Path.Combine(tempPath, entry.FullName));
Directory.CreateDirectory(path);
}
entry.ExtractToFile(Path.Combine(tempPath, entry.FullName));
}
}
// There must be an update
var start = new ProcessStartInfo
{
UseShellExecute = false,
CreateNoWindow = true,
FileName = "Ombi.Updater",
Arguments = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + " " + extension,
};
using (var proc = new Process { StartInfo = start })
{
proc.Start();
}
}
}
catch (Exception e)
{
c.WriteLine(e);
throw;
} }
} }

View file

@ -11,9 +11,10 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Hangfire" Version="1.6.16" /> <PackageReference Include="Hangfire" Version="1.6.16" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.6.16" /> <PackageReference Include="Hangfire.AspNetCore" Version="1.6.16" />
<PackageReference Include="Hangfire.Console" Version="1.3.6" />
<PackageReference Include="Hangfire.MemoryStorage.Core" Version="1.4.0" /> <PackageReference Include="Hangfire.MemoryStorage.Core" Version="1.4.0" />
<PackageReference Include="Hangfire.RecurringJobExtensions" Version="1.1.6" /> <PackageReference Include="Hangfire.RecurringJobExtensions" Version="1.1.6" />
<PackageReference Include="Serilog" Version="2.4.0" /> <PackageReference Include="Serilog" Version="2.5.0" />
<PackageReference Include="System.Diagnostics.Process" Version="4.3.0" /> <PackageReference Include="System.Diagnostics.Process" Version="4.3.0" />
</ItemGroup> </ItemGroup>

View file

@ -11,7 +11,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper" Version="6.1.0" /> <PackageReference Include="AutoMapper" Version="6.1.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View file

@ -46,9 +46,10 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AutoMapper" Version="6.1.0" /> <PackageReference Include="AutoMapper" Version="6.1.1" />
<PackageReference Include="CommandLineParser" Version="2.1.1-beta" /> <PackageReference Include="CommandLineParser" Version="2.1.1-beta" />
<PackageReference Include="Hangfire.AspNetCore" Version="1.6.16" /> <PackageReference Include="Hangfire.AspNetCore" Version="1.6.16" />
<PackageReference Include="Hangfire.Console" Version="1.3.6" />
<PackageReference Include="Hangfire.MemoryStorage.Core" Version="1.4.0" /> <PackageReference Include="Hangfire.MemoryStorage.Core" Version="1.4.0" />
<PackageReference Include="Hangfire.RecurringJobExtensions" Version="1.1.6" /> <PackageReference Include="Hangfire.RecurringJobExtensions" Version="1.1.6" />
@ -57,8 +58,8 @@
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" /> <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" />
<PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.0.0-alpha6-79" /> <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.0.0-alpha6-79" />
<PackageReference Include="Serilog" Version="2.4.0" /> <PackageReference Include="Serilog" Version="2.5.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="1.4.0" /> <PackageReference Include="Serilog.Extensions.Logging" Version="2.0.2" />
<PackageReference Include="Serilog.Sinks.File" Version="3.2.0" /> <PackageReference Include="Serilog.Sinks.File" Version="3.2.0" />
<PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.0" /> <PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.0" />
<PackageReference Include="Serilog.Sinks.SQLite" Version="3.8.3" /> <PackageReference Include="Serilog.Sinks.SQLite" Version="3.8.3" />

View file

@ -5,6 +5,7 @@ using System.Text;
using AutoMapper; using AutoMapper;
using AutoMapper.EquivalencyExpression; using AutoMapper.EquivalencyExpression;
using Hangfire; using Hangfire;
using Hangfire.Console;
using Hangfire.Dashboard; using Hangfire.Dashboard;
using Hangfire.MemoryStorage; using Hangfire.MemoryStorage;
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authentication.JwtBearer;
@ -179,6 +180,7 @@ namespace Ombi
x.UseMemoryStorage(new MemoryStorageOptions()); x.UseMemoryStorage(new MemoryStorageOptions());
//x.UseSQLiteStorage("Data Source=Ombi.db;"); //x.UseSQLiteStorage("Data Source=Ombi.db;");
x.UseActivator(new IoCJobActivator(services.BuildServiceProvider())); x.UseActivator(new IoCJobActivator(services.BuildServiceProvider()));
x.UseConsole();
}); });