Service runs on Linux as a standalone program when invoked with admin rights (sudo)
Refactored service to store persistent state (through reboots) in an XML file
Refactored service to store volatile state (lost after reboot), in XML file on Linux only. Windows still uses volatile registry.
All service state modifications use FOServiceStatus & FOVolatileServiceStatus classes. Classes handle differences between OSes opaque to the service.
Service configuration now uses appsettings.json file. Registry is still a fallback path on Windows, and allows OEM customizations to continue to work.
Fixed issues on service preventing proper operation on Linux.
Fixed issues with build scripts (can now use pwsh not only Windows PowerShell) & projects preventing proper operation on Linux. Everything but the app can be built on Linux without issue.
Release build publishes Linux service zips
Release build validates build & unit tests pass on Ubuntu
Added new CommandLineTask class, for running scripts in bash/cmd. Identical to and Inherits from BatchFileTask to ensure back-compat.
New GetOSPlatform() API
App can connect to Linux service & functions as expected
Renames projects & binaries to use Microsoft.FactoryOrchestrator.* naming.
Use "real" semver versioning. Major.Minor.Patch, set in common.props.
Created new release, PR, and CI ADO pipelines
-- Build is staged so common libraries are built once and used many.
-- Build uses public ADO build machines (instead of PackageES) wherever possible. This extends to decoupling from PackageES specific build concepts, like versioning, artifact staging, etc.
-- No dependency on PackageES build share, build relies on artifacts/VPacks for output.
-- Symbols are published to the public symbol server, with SourceLink support. Enables VS2019 debugging of binaries without any local PDB or source code.
-- Symbols are no longer included in VPacks to save space on FactoryOS images.
-- Nuget & Nuget Symbol Packages created, but not published. Publishing will be manual initially.
-- All 1P and 3P OSS binaries/msix/nuget are signed by ESRP
-- More thorough compliance pass