diff --git a/build/Version.props b/build/Version.props index 8d1bf5b98a..4a41529110 100644 --- a/build/Version.props +++ b/build/Version.props @@ -7,7 +7,8 @@ 2.2.0 8.3.0 9.1.2 - 5.3.0 + 6.0.0 + 5.3.0 1.1.0 1.2.0 diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm index 7ef3268322..26704ef57f 100644 --- a/src/DMAPI/tgs.dm +++ b/src/DMAPI/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "5.3.0" +#define TGS_DMAPI_VERSION "6.0.0" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -144,7 +144,7 @@ #define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return /** - * Call this at the beginning of [world/proc/Reboot]. + * Call this as late as possible in [world/proc/Reboot]. */ /world/proc/TgsReboot() return @@ -156,7 +156,7 @@ /datum/tgs_revision_information /// Full SHA of the commit. var/commit - /// ISO8601 timestamp of the commit + /// ISO 8601 timestamp of when the commit was created var/timestamp /// Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch. var/origin_commit @@ -207,9 +207,7 @@ /// An http URL to the test merge source. var/url /// The SHA of the test merge when that was merged. - var/pull_request_commit - /// ISO 8601 timestamp of when the test merge was created on TGS. - var/time_merged + var/head_commit /// Optional comment left by the TGS user who initiated the merge. var/comment diff --git a/src/DMAPI/tgs/v4/api.dm b/src/DMAPI/tgs/v4/api.dm index 081543828e..4eb8e67d92 100644 --- a/src/DMAPI/tgs/v4/api.dm +++ b/src/DMAPI/tgs/v4/api.dm @@ -92,7 +92,7 @@ var/list/json = cached_json["testMerges"] for(var/entry in json) var/datum/tgs_revision_information/test_merge/tm = new - tm.time_merged = text2num(entry["timeMerged"]) + tm.timestamp = text2num(entry["timeMerged"]) var/list/revInfo = entry["revision"] if(revInfo) @@ -104,7 +104,7 @@ tm.url = entry["url"] tm.author = entry["author"] tm.number = entry["number"] - tm.pull_request_commit = entry["pullRequestRevision"] + tm.head_commit = entry["pullRequestRevision"] tm.comment = entry["comment"] cached_test_merges += tm diff --git a/src/DMAPI/tgs/v5/api.dm b/src/DMAPI/tgs/v5/api.dm index c5b5257fb5..65bc231e21 100644 --- a/src/DMAPI/tgs/v5/api.dm +++ b/src/DMAPI/tgs/v5/api.dm @@ -18,7 +18,9 @@ var/initialized = FALSE /datum/tgs_api/v5/ApiVersion() - return new /datum/tgs_version(TGS_DMAPI_VERSION) + return new /datum/tgs_version( + #include "interop_version.dm" + ) /datum/tgs_api/v5/OnWorldNew(minimum_required_security_level) server_port = world.params[DMAPI5_PARAM_SERVER_PORT] @@ -63,12 +65,11 @@ var/list/revInfo = entry[DMAPI5_TEST_MERGE_REVISION] if(revInfo) tm.commit = revisionData[DMAPI5_REVISION_INFORMATION_COMMIT_SHA] - tm.timestamp = revisionData[DMAPI5_REVISION_INFORMATION_TIMESTAMP] tm.origin_commit = revisionData[DMAPI5_REVISION_INFORMATION_ORIGIN_COMMIT_SHA] else TGS_WARNING_LOG("Failed to decode [DMAPI5_TEST_MERGE_REVISION] from test merge #[tm.number]!") - tm.time_merged = text2num(entry[DMAPI5_TEST_MERGE_TIME_MERGED]) + tm.timestamp = entry[DMAPI5_TEST_MERGE_TIME_MERGED] tm.title = entry[DMAPI5_TEST_MERGE_TITLE_AT_MERGE] tm.body = entry[DMAPI5_TEST_MERGE_BODY_AT_MERGE] tm.url = entry[DMAPI5_TEST_MERGE_URL] diff --git a/src/DMAPI/tgs/v5/interop_version.dm b/src/DMAPI/tgs/v5/interop_version.dm new file mode 100644 index 0000000000..c7bf62ecae --- /dev/null +++ b/src/DMAPI/tgs/v5/interop_version.dm @@ -0,0 +1 @@ +"5.3.0" diff --git a/src/Tgstation.Server.Api/Models/ServerInformation.cs b/src/Tgstation.Server.Api/Models/ServerInformation.cs index 16b7ea0732..ed0509d76b 100644 --- a/src/Tgstation.Server.Api/Models/ServerInformation.cs +++ b/src/Tgstation.Server.Api/Models/ServerInformation.cs @@ -19,7 +19,7 @@ namespace Tgstation.Server.Api.Models public Version? ApiVersion { get; set; } /// - /// The DMAPI version of the host. + /// The DMAPI interop version the server uses. /// public Version? DMApiVersion { get; set; } diff --git a/src/Tgstation.Server.Host/Components/Interop/DMApiConstants.cs b/src/Tgstation.Server.Host/Components/Interop/DMApiConstants.cs index c910a8a1e2..b4697d8952 100644 --- a/src/Tgstation.Server.Host/Components/Interop/DMApiConstants.cs +++ b/src/Tgstation.Server.Host/Components/Interop/DMApiConstants.cs @@ -32,9 +32,9 @@ namespace Tgstation.Server.Host.Components.Interop public const string TopicData = "tgs_data"; /// - /// The DMAPI being used. + /// The DMAPI being used. /// - public static readonly Version Version = Version.Parse(MasterVersionsAttribute.Instance.RawDMApiVersion); + public static readonly Version InteropVersion = Version.Parse(MasterVersionsAttribute.Instance.RawInteropVersion); /// /// for use when communicating with the DMAPI. diff --git a/src/Tgstation.Server.Host/Components/Session/SessionController.cs b/src/Tgstation.Server.Host/Components/Session/SessionController.cs index 1462b6cd50..0de14b9df4 100644 --- a/src/Tgstation.Server.Host/Components/Session/SessionController.cs +++ b/src/Tgstation.Server.Host/Components/Session/SessionController.cs @@ -66,7 +66,7 @@ namespace Tgstation.Server.Host.Components.Session public Task OnPrime => primeTcs.Task; /// - public bool DMApiAvailable => reattachInformation.Dmb.CompileJob.DMApiVersion?.Major == DMApiConstants.Version.Major; + public bool DMApiAvailable => reattachInformation.Dmb.CompileJob.DMApiVersion?.Major == DMApiConstants.InteropVersion.Major; /// /// The up to date @@ -431,7 +431,7 @@ namespace Tgstation.Server.Host.Components.Session return Error("Missing dmApiVersion field!"); DMApiVersion = parameters.Version; - if (DMApiVersion.Major != DMApiConstants.Version.Major) + if (DMApiVersion.Major != DMApiConstants.InteropVersion.Major) { apiValidationStatus = ApiValidationStatus.Incompatible; return Error("Incompatible dmApiVersion!"); diff --git a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs index 698510757b..41a6616835 100644 --- a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs +++ b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs @@ -229,7 +229,7 @@ namespace Tgstation.Server.Host.Components.Session // set command line options // more sanitization here cause it uses the same scheme - var parameters = $"{DMApiConstants.ParamApiVersion}={byondTopicSender.SanitizeString(DMApiConstants.Version.Semver().ToString())}&{byondTopicSender.SanitizeString(DMApiConstants.ParamServerPort)}={serverPortProvider.HttpApiPort}&{byondTopicSender.SanitizeString(DMApiConstants.ParamAccessIdentifier)}={byondTopicSender.SanitizeString(accessIdentifier)}"; + var parameters = $"{DMApiConstants.ParamApiVersion}={byondTopicSender.SanitizeString(DMApiConstants.InteropVersion.Semver().ToString())}&{byondTopicSender.SanitizeString(DMApiConstants.ParamServerPort)}={serverPortProvider.HttpApiPort}&{byondTopicSender.SanitizeString(DMApiConstants.ParamAccessIdentifier)}={byondTopicSender.SanitizeString(accessIdentifier)}"; if (!String.IsNullOrEmpty(launchParameters.AdditionalParameters)) parameters = $"{parameters}&{launchParameters.AdditionalParameters}"; diff --git a/src/Tgstation.Server.Host/Controllers/HomeController.cs b/src/Tgstation.Server.Host/Controllers/HomeController.cs index 4dcad917d2..e8302baa4b 100644 --- a/src/Tgstation.Server.Host/Controllers/HomeController.cs +++ b/src/Tgstation.Server.Host/Controllers/HomeController.cs @@ -198,7 +198,7 @@ namespace Tgstation.Server.Host.Controllers { Version = assemblyInformationProvider.Version, ApiVersion = ApiHeaders.Version, - DMApiVersion = DMApiConstants.Version, + DMApiVersion = DMApiConstants.InteropVersion, MinimumPasswordLength = generalConfiguration.MinimumPasswordLength, InstanceLimit = generalConfiguration.InstanceLimit, UserLimit = generalConfiguration.UserLimit, diff --git a/src/Tgstation.Server.Host/Core/Application.cs b/src/Tgstation.Server.Host/Core/Application.cs index 8d0a203961..f16e31fe9c 100644 --- a/src/Tgstation.Server.Host/Core/Application.cs +++ b/src/Tgstation.Server.Host/Core/Application.cs @@ -492,7 +492,7 @@ namespace Tgstation.Server.Host.Core // End of request pipeline setup var masterVersionsAttribute = MasterVersionsAttribute.Instance; logger.LogTrace("Configuration version: {0}", masterVersionsAttribute.RawConfigurationVersion); - logger.LogTrace("DMAPI version: {0}", masterVersionsAttribute.RawDMApiVersion); + logger.LogTrace("DMAPI Interop version: {0}", masterVersionsAttribute.RawInteropVersion); logger.LogTrace("Web control panel version: {0}", masterVersionsAttribute.RawControlPanelVersion); logger.LogDebug("Starting hosting on port {0}...", serverPortProvider.HttpApiPort); diff --git a/src/Tgstation.Server.Host/Properties/MasterVersionsAttribute.cs b/src/Tgstation.Server.Host/Properties/MasterVersionsAttribute.cs index 20cc04786c..62875303b3 100644 --- a/src/Tgstation.Server.Host/Properties/MasterVersionsAttribute.cs +++ b/src/Tgstation.Server.Host/Properties/MasterVersionsAttribute.cs @@ -22,9 +22,9 @@ namespace Tgstation.Server.Host.Properties public string RawConfigurationVersion { get; } /// - /// The of the DMAPI version built. + /// The of the DMAPI interop version used. /// - public string RawDMApiVersion { get; } + public string RawInteropVersion { get; } /// /// The of the control panel version built. @@ -35,15 +35,15 @@ namespace Tgstation.Server.Host.Properties /// Initializes a new instance of the . /// /// The value of . - /// The value of . + /// The value of . /// The value of . public MasterVersionsAttribute( string rawConfigurationVersion, - string rawDMApiVersion, + string rawInteropVersion, string rawControlPanelVersion) { RawConfigurationVersion = rawConfigurationVersion ?? throw new ArgumentNullException(nameof(rawConfigurationVersion)); - RawDMApiVersion = rawDMApiVersion ?? throw new ArgumentNullException(nameof(rawDMApiVersion)); + RawInteropVersion = rawInteropVersion ?? throw new ArgumentNullException(nameof(rawInteropVersion)); RawControlPanelVersion = rawControlPanelVersion ?? throw new ArgumentNullException(nameof(rawControlPanelVersion)); } } diff --git a/src/Tgstation.Server.Host/Tgstation.Server.Host.csproj b/src/Tgstation.Server.Host/Tgstation.Server.Host.csproj index 3951c10411..7533898170 100644 --- a/src/Tgstation.Server.Host/Tgstation.Server.Host.csproj +++ b/src/Tgstation.Server.Host/Tgstation.Server.Host.csproj @@ -49,7 +49,7 @@ <_Parameter1>$(TgsConfigVersion) - <_Parameter2>$(TgsDmapiVersion) + <_Parameter2>$(TgsInteropVersion) <_Parameter3>$(TgsControlPanelVersion) diff --git a/tests/DMAPI/BasicOperation/basic_operation_test.dme b/tests/DMAPI/BasicOperation/basic_operation_test.dme index 92781c7e16..9f50643e42 100644 --- a/tests/DMAPI/BasicOperation/basic_operation_test.dme +++ b/tests/DMAPI/BasicOperation/basic_operation_test.dme @@ -12,6 +12,6 @@ // BEGIN_INCLUDE #include "Config.dm" -#include "..\tgs_include.dm" #include "Test.dm" +#include "S:\Documents\Actual Documents\DA Git\tgstation-server\tests\DMAPI\tgs_include.dm" // END_INCLUDE diff --git a/tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs b/tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs index 52918f5e76..f83c916ad6 100644 --- a/tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs +++ b/tests/Tgstation.Server.Tests/Instance/RepositoryTest.cs @@ -64,7 +64,7 @@ namespace Tgstation.Server.Tests.Instance clone = await repositoryClient.Clone(initalRepo, cancellationToken).ConfigureAwait(false); - await WaitForJob(clone.ActiveJob, 900, false, null, cancellationToken).ConfigureAwait(false); + await WaitForJob(clone.ActiveJob, 9000, false, null, cancellationToken).ConfigureAwait(false); var readAfterClone = await repositoryClient.Read(cancellationToken); Assert.AreEqual(initalRepo.Origin, readAfterClone.Origin); diff --git a/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs b/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs index 7203d1c646..5cd9871d7b 100644 --- a/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs +++ b/tests/Tgstation.Server.Tests/Instance/WatchdogTest.cs @@ -144,7 +144,7 @@ namespace Tgstation.Server.Tests.Instance Assert.IsNotNull(newerCompileJob); Assert.AreNotEqual(initialCompileJob.Id, newerCompileJob.Id); Assert.AreEqual(DreamDaemonSecurity.Safe, newerCompileJob.MinimumSecurityLevel); - Assert.AreEqual(DMApiConstants.Version, daemonStatus.StagedCompileJob.DMApiVersion); + Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.StagedCompileJob.DMApiVersion); await instanceClient.DreamDaemon.Shutdown(cancellationToken); } @@ -162,7 +162,7 @@ namespace Tgstation.Server.Tests.Instance Assert.AreEqual(WatchdogStatus.Offline, daemonStatus.Status.Value); Assert.IsNotNull(daemonStatus.ActiveCompileJob); Assert.IsNull(daemonStatus.StagedCompileJob); - Assert.AreEqual(DMApiConstants.Version, daemonStatus.ActiveCompileJob.DMApiVersion); + Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.ActiveCompileJob.DMApiVersion); Assert.AreEqual(DreamDaemonSecurity.Safe, daemonStatus.ActiveCompileJob.MinimumSecurityLevel); Job startJob; @@ -307,7 +307,7 @@ namespace Tgstation.Server.Tests.Instance Assert.AreEqual(WatchdogStatus.Offline, daemonStatus.Status.Value); Assert.IsNotNull(daemonStatus.ActiveCompileJob); Assert.IsNull(daemonStatus.StagedCompileJob); - Assert.AreEqual(DMApiConstants.Version, daemonStatus.ActiveCompileJob.DMApiVersion); + Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.ActiveCompileJob.DMApiVersion); Assert.AreEqual(DreamDaemonSecurity.Ultrasafe, daemonStatus.ActiveCompileJob.MinimumSecurityLevel); var startJob = await StartDD(cancellationToken).ConfigureAwait(false); @@ -347,7 +347,7 @@ namespace Tgstation.Server.Tests.Instance Assert.AreEqual(WatchdogStatus.Offline, daemonStatus.Status.Value); Assert.IsNotNull(daemonStatus.ActiveCompileJob); Assert.IsNull(daemonStatus.StagedCompileJob); - Assert.AreEqual(DMApiConstants.Version, daemonStatus.ActiveCompileJob.DMApiVersion); + Assert.AreEqual(DMApiConstants.InteropVersion, daemonStatus.ActiveCompileJob.DMApiVersion); Assert.AreEqual(DreamDaemonSecurity.Ultrasafe, daemonStatus.ActiveCompileJob.MinimumSecurityLevel); var startJob = await StartDD(cancellationToken).ConfigureAwait(false); diff --git a/tests/Tgstation.Server.Tests/VersionsTest.cs b/tests/Tgstation.Server.Tests/VersionsTest.cs index 1a1cf908da..6c3a0efa4f 100644 --- a/tests/Tgstation.Server.Tests/VersionsTest.cs +++ b/tests/Tgstation.Server.Tests/VersionsTest.cs @@ -99,7 +99,14 @@ namespace Tgstation.Server.Tests Assert.IsTrue(Version.TryParse(versionLine, out var actual)); Assert.AreEqual(expected, actual); - Assert.AreEqual(expected, DMApiConstants.Version); + } + + public void TestInteropVersion() + { + var versionString = versionsPropertyGroup.Element(xmlNamespace + "TgsInteropVersion").Value; + Assert.IsNotNull(versionString); + Assert.IsTrue(Version.TryParse(versionString, out var expected)); + Assert.AreEqual(expected, DMApiConstants.InteropVersion); } [TestMethod] diff --git a/tgstation-server.sln b/tgstation-server.sln index 32dabe36ba..6ff1e7bb44 100644 --- a/tgstation-server.sln +++ b/tgstation-server.sln @@ -135,6 +135,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "v5", "v5", "{FAEAD3B5-2EAB- src\DMAPI\tgs\v5\_defines.dm = src\DMAPI\tgs\v5\_defines.dm src\DMAPI\tgs\v5\api.dm = src\DMAPI\tgs\v5\api.dm src\DMAPI\tgs\v5\commands.dm = src\DMAPI\tgs\v5\commands.dm + src\DMAPI\tgs\v5\interop_version.dm = src\DMAPI\tgs\v5\interop_version.dm src\DMAPI\tgs\v5\README.md = src\DMAPI\tgs\v5\README.md src\DMAPI\tgs\v5\undefs.dm = src\DMAPI\tgs\v5\undefs.dm EndProjectSection diff --git a/tools/ReleaseNotes/Program.cs b/tools/ReleaseNotes/Program.cs index 7477895cdf..8522b4066b 100644 --- a/tools/ReleaseNotes/Program.cs +++ b/tools/ReleaseNotes/Program.cs @@ -256,13 +256,14 @@ namespace ReleaseNotes var apiVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsApiVersion").Value); var configVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsConfigVersion").Value); var dmApiVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsDmapiVersion").Value); + var interopVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsInteropVersion").Value); var webControlVersion = Version.Parse(controlPanelVersionsPropertyGroup.Element(controlPanelXmlNamespace + "TgsControlPanelVersion").Value); var hostWatchdogVersion = Version.Parse(versionsPropertyGroup.Element(xmlNamespace + "TgsHostWatchdogVersion").Value); if (webControlVersion.Major == 0) postControlPanelMessage = true; - prefix = $"Please refer to the [README](https://github.com/tgstation/tgstation-server#setup) for setup instructions.{Environment.NewLine}{Environment.NewLine}#### Component Versions\nCore: {coreVersion}\nConfiguration: {configVersion}\nHTTP API: {apiVersion}\nDreamMaker API: {dmApiVersion}\n[Web Control Panel](https://github.com/tgstation/tgstation-server-control-panel): {webControlVersion}\nHost Watchdog: {hostWatchdogVersion}"; + prefix = $"Please refer to the [README](https://github.com/tgstation/tgstation-server#setup) for setup instructions.{Environment.NewLine}{Environment.NewLine}#### Component Versions\nCore: {coreVersion}\nConfiguration: {configVersion}\nHTTP API: {apiVersion}\nDreamMaker API: {dmApiVersion} (Interop: {interopVersion})\n[Web Control Panel](https://github.com/tgstation/tgstation-server-control-panel): {webControlVersion}\nHost Watchdog: {hostWatchdogVersion}"; break; case 3: prefix = "The /tg/station server suite";