From 09e2815208c6a2237568a4689ced03ae5b43b0b7 Mon Sep 17 00:00:00 2001 From: Niko Ehrenfeuchter <nikolaus.ehrenfeuchter@unibas.ch> Date: Tue, 23 Apr 2019 16:56:40 +0200 Subject: [PATCH] Document build-deploy-update cycle through helper scripts Fixes #65 --- CONTRIBUTING.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d75cc84..ea85c1e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,6 +67,81 @@ Refactoring suggestions and / or pull requests are welcome! reference that issue in the commit message (issue tracking is done in the [primary repository in the Uni Basel GitLab][web_autotx_gitlab]). +## The Full Cycle: Change / Compile / Package / Update / Test + +To run a typical development cycle, a few helper scripts are provided, most +notably to facilitate / automate that cycle whilst using the common +functionalities coming with AutoTx (like the updater). + +### Building / Compiling + +Open a shell session using the `Developer Command Prompt for VS 2017` shortcut +(doesn't require any special permissions, i.e. can be your user that's also +running Visual Studio). For convenience reasons it is recommended to start +`PowerShell` within this terminal, but this is not strictly required. Navigate +to the `AutoTx` source code base directory, then call any of the `.cmd` scripts +under `Scripts/msbuild` depending on your needs. For a *Debug* build this would +be something like this: + +```PowerShell +cd C:\Devel\AutoTx ## <- adjust path to your requirements +.\Scripts\msbuild\build\debug.cmd +``` + +### Creating an Installation / Updater Package + +After building the service has completed, use the `Deploy-NewBuild.ps1` script, +optionally with specifying the path to the updater configuration (by default +the script will assume "`C:\Tools\AutoTx-Updater\UpdaterConfig.inc.ps1`" for +this). + +```PowerShell +.\Scripts\Deploy-NewBuild.ps1 +# or by specifying the config explicitly: +.\Scripts\Deploy-NewBuild.ps1 -UpdaterSettings C:\Path\To\UpdaterConfig.inc.ps1 +``` + +Running this should produce output similar to the one shown here: + +``` +Creating package [build_2019-04-23_14-14-42__3.0-70-gf90a55c] using binaries from: + [C:\Devel\AutoTx\ATxService\bin\Debug] + [C:\Devel\AutoTx\ATxTray\bin\Debug] + [C:\Devel\AutoTx\ATxConfigTest\bin\Debug] + [C:\Devel\AutoTx\ATxDiagnostics\bin\Debug] + +Removing existing package dir [build_2019-04-23_14-14-42__3.0-70-gf90a55c]... + +Done creating package [build_2019-04-23_14-14-42__3.0-70-gf90a55c] + [configuration: Debug] + [commit: 3.0-70-gf90a55c] + +Location: [C:\Devel\AutoTx\Scripts\build_2019-04-23_14-14-42__3.0-70-gf90a55c] +``` + +### Triggering the Updater + +Running the updater can be done in various ways, for example you could simply +call the script manually from a PowerShell session with sufficient privileges. +However, the recommended method is to actually trigger the scheduled task to +mimick a "*real-life*" run as closely as possible. This is doable using the +GUI (e.g. by launching `compmgmt.msc` and clicking all your way through the +"Task Scheduler" tree jungle). A much easier approach is to use the command line +again to run the job. Unfortunately there is no *straightforward* way to launch +a registered job on Windows 7 (on Windows 10 there is the `Start-ScheduledTask` +cmdlet), so you have to take a little detour. First of all make sure to have a +PowerShell session running with *elevated privileges* (i.e. it is **not enough** +to run it with an administrator account, you explicitly need to start it with +the "Run as Administrator" option), then issue this command: + +```PowerShell +(Get-ScheduledJob -Name "AutoTx-Updater").StartJob() +``` + +This should trigger a run of the updater, any actions will be recorded to the +Windows Event Log. In case the service was running before, it will be restarted +and show its related messages in the service log file. + ## Coding Conventions As mentioned above, the **C#** style used throughout the project differs from -- GitLab