Hello everyone,
It has been a while since the Thinkwise Deployment Center (or 'Deployer' for short) has received new features, but over the past year, we have been gradually reworking the code to support some of the most frequently requested ones.
There have been a couple of breaking changes compared to the last version, which we will highlight in this post.
Download the Thinkwise Deployment Center 2.0.2 here.
Deployer GUI and CLI
New
Support for specifying manifests as YAML
In addition to the current JSON manifests:
{
"schema": 2,
"products": [
{
"type": "IAM",
"version": "2021.3",
"projectFolder": "T:\\Product Innovation\\Applications",
"dependencies": [
"CompatibilityLevel130"
],
"packages": [
{
"type": "Install",
"path": "IAM/Install",
"defaultDatabaseName": "THINKWISE_IAM"
},
{
"type": "Upgrade",
"path": "IAM/Upgrade",
"supportedVersions": [
{
"version": "2021.1",
"upgradesTo": "2021.2",
"files": [
"2021.2\\020_Upgrade.sql",
"2021.2\\030_Checks.sql",
"2021.2\\040_Constraints.sql",
"2021.2\\050_Indexes.sql",
"2021.2\\060_Functions.sql",
"2021.2\\065_Table_valued_functions.sql",
"2021.2\\070_Views.sql",
"2021.2\\080_Procedures.sql",
"2021.2\\090_Instead_of_triggers.sql",
"2021.2\\100_Triggers.sql",
"2021.2\\110_Tasks.sql",
"2021.2\\120_Defaults.sql",
"2021.2\\130_Layouts.sql",
"2021.2\\140_Contexts.sql",
"2021.2\\145_Badges.sql",
"2021.2\\150_Processes.sql",
"2021.2\\999_Apply_roles_on_database.sql",
"2021.2\\999_Manual.sql"
]
},
{
"version": "2021.2",
"upgradesTo": "2021.3",
"files": [
"2021.3\\020_Upgrade.sql",
"2021.3\\030_Checks.sql",
"2021.3\\040_Constraints.sql",
"2021.3\\050_Indexes.sql",
"2021.3\\060_Functions.sql",
"2021.3\\065_Table_valued_functions.sql",
"2021.3\\070_Views.sql",
"2021.3\\080_Procedures.sql",
"2021.3\\090_Instead_of_triggers.sql",
"2021.3\\100_Triggers.sql",
"2021.3\\110_Tasks.sql",
"2021.3\\120_Defaults.sql",
"2021.3\\140_Contexts.sql",
"2021.3\\150_Processes.sql",
"2021.3\\999_Apply_roles_on_database.sql",
"2021.3\\999_Manual.sql"
]
}
]
},
{
"type": "Hotfix",
"path": "IAM/Hotfixes"
}
]
}
]
}
YAML can now also be used:
schema: 2
products:
- type: "IAM"
version: "2021.3"
projectFolder: "T:\\Product Innovation\\Applications"
dependencies:
- "CompatibilityLevel130"
packages:
- type: "Install"
path: "IAM/Install"
defaultDatabaseName: "THINKWISE_IAM"
- type: "Upgrade"
path: "IAM/Upgrade"
supportedVersions:
- version: "2021.1"
upgradesTo: "2021.2"
files:
- "2021.2\\020_Upgrade.sql"
- "2021.2\\030_Checks.sql"
- "2021.2\\040_Constraints.sql"
- "2021.2\\050_Indexes.sql"
- "2021.2\\060_Functions.sql",
- "2021.2\\065_Table_valued_functions.sql"
- "2021.2\\070_Views.sql"
- "2021.2\\080_Procedures.sql"
- "2021.2\\090_Instead_of_triggers.sql"
- "2021.2\\100_Triggers.sql"
- "2021.2\\110_Tasks.sql"
- "2021.2\\120_Defaults.sql"
- "2021.2\\130_Layouts.sql"
- "2021.2\\140_Contexts.sql"
- "2021.2\\145_Badges.sql"
- "2021.2\\150_Processes.sql"
- "2021.2\\999_Apply_roles_on_database.sql"
- "2021.2\\999_Manual.sql"
- version: "2021.2"
upgradesTo: "2021.3"
files:
- "2021.3\\020_Upgrade.sql"
- "2021.3\\030_Checks.sql"
- "2021.3\\040_Constraints.sql"
- "2021.3\\050_Indexes.sql"
- "2021.3\\060_Functions.sql",
- "2021.3\\065_Table_valued_functions.sql"
- "2021.3\\070_Views.sql"
- "2021.3\\080_Procedures.sql"
- "2021.3\\090_Instead_of_triggers.sql"
- "2021.3\\100_Triggers.sql"
- "2021.3\\110_Tasks.sql"
- "2021.3\\120_Defaults.sql"
- "2021.3\\130_Layouts.sql"
- "2021.3\\140_Contexts.sql"
- "2021.3\\145_Badges.sql"
- "2021.3\\150_Processes.sql"
- "2021.3\\999_Apply_roles_on_database.sql"
- "2021.3\\999_Manual.sql"
- type: "Hotfix"
path: "IAM/Hotfixes"
Deployer GUI
BREAKING CHANGES
No more GUI and Indicium deployment during IAM installation and upgrade
In the old Deployer, when installing or upgrading IAM, you would be asked if you liked to install an Indicium or any of the GUIs.
However, since new deployment options for those products have been introduced, configuring them during the IAM flow has become quite complicated. For this reason, we have decided to remove the ability to deploy other products during the IAM flow.
The Deployer was always meant as a helper tool for deploying our products, and thus we expect someone using it to at least know the basic cohesion between our products. So, as a user, you should know which products you need to deploy and in which order to make your environment work. For more information, we recommend reading the Thinkwise Platform Overview section on our documentation site.
No more assistance for selecting a target meta source for Indicium and GUIs
Previously, the deployment flows of Indicium and the Windows/Web GUI had steps for selecting a target IAM to use as the meta source.
Due to the new way we configure these products in this release, we had to cut these steps from the flow.
We are looking into the possibility of adding additional buttons to the configuration steps that have a Simple mode to once again select a meta source with the assistance of UI dialogs.
New
Landing page rework
Due to adding more options and splitting existing ones to accommodate the deployment process better, the number of items on the landing page got rather long.
To solve this problem, we have reworked the landing page to group the deployment options per product. You can find them in a drop-down menu on the left side of the landing page.
Universal GUI deployment
We added the ability to install or upgrade the Universal GUI on an IIS server.
Installing a Universal GUI
The process to install a Universal GUI has been broken down into:
- Select the site on IIS where to deploy the Universal GUI.
- Select an empty path relative to the selected site.
- Specify the contents for the Universal GUI's
config.json
configuration file.
The configuration step supports two modes: Simple and Advanced.
In the Simple mode, you can only change the basic options for running a Universal GUI:
To configure an option not listed in the Simple mode, you can use the Advanced mode instead.
In the Advanced mode, the Universal GUI will only check if the serviceUrl
property has been specified correctly. Other options are used as-is.
Upgrading a Universal GUI
The process to upgrade a Universal GUI has been broken down into:
- Select the IIS site containing the Universal GUI to upgrade.
- Select the path relative to the site that contains the Universal GUI installation.
- Optionally change contents for the Universal GUI's
config.json
configuration file.- Just as with the installation process, you can select either the Simple or the Advanced mode to upload a new
config.json
file. - You can choose to skip this step altogether and keep the current
config.json
in the installation directory.
- Just as with the installation process, you can select either the Simple or the Advanced mode to upload a new
- Optionally, mark any additional files that contain settings for changing how the Universal GUI works.
Local IIS support
An important feature request we received was the ability to deploy products to an IIS instance running on the current server without the need for the Microsoft IIS Administration API.
After a considerable effort in re-implementing the entire IIS deployment code, this has been made possible.
Products that deploy to IIS now have both a Local and an IIS API option on the landing page:
This is available for the following products:
- Indicium
- Indicium for Mobile GUI
- Universal GUI
- Web GUI.
Indicium deployment reworked
The deployment process for Indicium and Indicium (Mobile) has been reworked.
Previously, there was a single deployment option for both installation and upgrading. This made the logic for the deployment more convoluted than necessary, and it made it harder to add new features to the process.
For this release, we have split the single deployment process into separate install and upgrade flows.
Just like with the Universal GUI process, there is now a dedicated step to configure Indicium's appsettings.json
. Both the Simple and Advanced modes are included, and the step can be skipped during the upgrade process.
Additionally, there is an option to help configure the application initialization feature for Indicium. When running Indicium as an agent of an IAM, e.g., to generate projects in the Software Factory 2021.3 or run scheduled system flows, we recommended turning on this feature.
Lastly, just like with the Universal GUI process, it is now possible to retain certain files as-is inside the installation that is being upgraded.
Windows GUI deployment reworked
The deployment process for the Windows GUI has been reworked.
Just like with Indicium, there was previously only one deployment process for the Windows GUI. This process has also been split into separate installation and upgrade flows. Additionally, we have added an option to only create a new startup configuration file (.ini) by selecting an existing installation.
When creating a startup configuration for the installation, there are three options to choose from:
- Create new
- Link existing
- Skip.
By choosing Create new, you can load a preset template based on the meta source connection you are going to use and then modify it with the required values.
When using the Indicium template, make sure that the Windows GUI you are using supports it.
If you choose Link existing, e.g., to create a shortcut later in the deployment process, simply enter the path to the desired ini file.
If you select the Use ClickStart option, any shortcuts made during this deployment will target TSF_CS.exe
instead of TSF_dotNET.exe
. It is possible to modify the clickstart.ini
to configure the behavior of TSF_CS.exe
.
Lastly, you can either Skip creating or create a new shortcut that links the selected startup configuration to the Windows GUI installation. Remember that selecting Use ClickStart in the Startup configuration step will make this shortcut to TS_CS.exe
instead of TSF_dotNET.exe
.
Web GUI deployment reworked
Just like in the Indicium and Windows GUI deployment, the Web GUI deployment has been split into separate installation and upgrade flows.
This rework is not as broad as the other two, but we have enabled the options to enter your own settings.ini
and to preserve files/folders when upgrading.
Known issues
Indicium application initialization not configured properly when using IIS API
Currently, the Microsoft IIS Administration API does not expose the properties we need for configuring the application initialization feature properly for Indicium.
We have made pull requests to the official repository on GitHub to try and fix this, but there will seemingly only be one more update by Microsoft to this repository to upgrade the software to .NET 6.
We are currently discussing whether it is worth it to continue support for this way of deploying our products.
Deployer CLI
The command-line version of the Deployer has also received some updates. Some of these updates are breaking changes compared to the previous version.
BREAKING CHANGES
Changed command-line library
The previous version of the Deployer used a command-line argument parser that did not support sub-commands. Due to this, several command names were appended together instead, e.g., iam-install
/iam-upgrade
/iam-hotfix
. This made adding more commands to the CLI difficult since the help would soon be a lot more cluttered, as was the case for the landing page in the Deployer's GUI.
Because of this, we have changed the underlying command-line library to a different one that does support sub-commands.
This is a breaking change. Not only because, for example, iam-install
must now be called as iam install
but also because some subjects, like argument parsing, might be handled differently than before.
We recommend using this version to thoroughly test the scripts that use the Deployer CLI program before updating any previous executables currently used in production.
As part of adding sub-commands, the commands to auto-install, upgrade, or hotfix an IAM, Software Factory, or application have been moved from
twdeployer.exe iam (OPTIONS)
twdeployer.exe sf (OPTIONS)
twdeployer.exe app (OPTIONS)
to the following commands:
twdeployer.exe iam auto (OPTIONS)
twdeployer.exe sf auto (OPTIONS)
twdeployer.exe app auto (OPTIONS)
New
Indicium commands
We added commands to install, upgrade or reconfigure Indicium on a local IIS instance.
We also added a command to create an application pool with recommended settings for Indicium.
These commands can be called using twdeployer.exe indicium iis
.
The commands must be run from an elevated prompt because modifying IIS requires admin privileges.
Universal GUI commands
We added commands to install, upgrade or reconfigure the Universal GUI on a local IIS instance.
These commands can be called using twdeployer.exe universal iis
.
The commands must be run from an elevated prompt because modifying IIS requires admin privileges.
Generic IIS commands
Some commands were added to the Deployer CLI to control application pools on the local IIS instance.
You can now:
- List information about every or specific pools
- Create new pools
- Edit the properties of one or more pools
- Start one or more pools
- Stop one or more pools
- Delete one or more pools.
These commands can be called using twdeployer.exe iis pools
.
These commands must be run from an elevated prompt because modifying IIS requires admin privileges.
Next release
Even though Thinkwise has no dedicated Deployer team (like there are dedicated teams for the GUIs and Indicium), we would still like to ship the following changes before the 2022.1 Thinkwise Platform release:
- Dedicated support for deploying the Thinkwise Upcycler.
- Move Deployer CLI to .NET 6
- While the commands that target IIS might not work on anything other than Windows, users would still be able to deploy IAM, the Software Factory, or application products on other operating systems.
- Depending on the amount of work, we might have the Deployer GUI run on .NET 6 (Windows only) as well.
- Add options to install an application without syncing the model to an IAM.
- Add a separate flow that only syncs the application model to IAM.
- Check access rights on the target directory when installing Indicium to a local IIS.
- One of the most common causes we encounter where users cannot start their Indicium installations is that the user the application pool is running on does not have write access to Indicium's installation directory. We plan to add a deployment action that checks if this is configured correctly.
Would like to have:
- A simple configuration mode for Windows GUI flows to make it easier to get a basic installation up and running.
- A UI-assisted meta source selection for simple configuration modes during Indicium and Windows GUI flows.