-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathconveyor-dev.conf
More file actions
207 lines (182 loc) · 10.3 KB
/
Copy pathconveyor-dev.conf
File metadata and controls
207 lines (182 loc) · 10.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# https://conveyor.hydraulic.dev/18.1/configs/hocon/
// This is a hashbang include. You can run the command after the #! to see what
// configuration is being extracted from the Gradle build using the Conveyor plugin.
// TODO: Unsetting the terminal environment is a workaround for a Gradle bug; remove
// once Hydraulic Conveyor 22.1 or greater gets released
include "#! TERM__PROGRAM= TERM= ./gradlew -q printConveyorConfig"
// This enables native library extraction, which improves app startup time and robustness.
// It's optional but a good idea to have it. You can remove this if you get tired of specifying
// system properties for Java libraries with native components.
//
// See https://hydraulic.dev/blog/11-in-jar-signing.html for more.
include required("https://raw.githubusercontent.com/hydraulic-software/conveyor/master/configs/jvm/extract-native-libraries.conf")
# Config file documentation: https://conveyor.hydraulic.dev/latest/configs
app {
# https://conveyor.hydraulic.dev/18.1/configs/names/#appversion
version = "1.0.0"
# https://conveyor.hydraulic.dev/18.1/configs/names/#names-and-metadata
# Increment if the config file contents change but the application does not, reset to 0 if the app version changes
revision = 0
fsname = "cdr-client"
fsname-ui = "cdr-client-ui"
fsname-service = "cdr-client-service"
rdns-name = "com.swisscom.health.des.cdr.cdr-client"
display-name = "curaLINE Client"
vendor = "Swisscom (Schweiz) AG"
description = "Client application to connect to Swisscom's curaLINE Document Routing (CDR) service for participants in the Swiss healthcare system."
license = "Apache-2.0"
contact-email = "${env.CONTACT_EMAIL}"
# https://conveyor.hydraulic.dev/18.1/configs/update-modes/
updates = background # other options are `aggressive`, `none`, or `manual`
# On linux the modes make no difference, updates are always only done via the system's package manager - is that a problem for us?
machines = [windows.amd64, windows.aarch64, linux.amd64.glibc, linux.aarch64.glibc, mac.amd64, mac.aarch64]
# https://conveyor.hydraulic.dev/18.1/configs/#signing
# defaults in `~/.config/hydraulic/conveyor/defaults.conf`
sign = true
# Does not have to be an SVG. You can use whatever icons you like. They should be rendered as PNGs in a range of square sizes, ideally 32x32, 64x64, 128x128 etc up to 1024x1024.
# https://conveyor.hydraulic.dev/18.1/tutorial/tortoise/2-gradle/#conveyorconf
icons = resources/conveyor/icons/Swisscom_Lifeform_RGB_Colour_80px.svg
windows.inputs += TASK/rendered-icons/windows
linux.inputs += TASK/rendered-icons/linux
# https://conveyor.hydraulic.dev/18.1/configs/#misc
# for iteration speed !!!!! remove for release !!!!! or set to `high`
compression-level = low
# update site - can be a directory, http/ftp site, s3, or a github site
# to publish to `/var/conveyor/sites/cdr-client` run `conveyor make copied-site` (will leave an empty `output` directory in the project root)
site {
# https://conveyor.hydraulic.dev/18.1/configs/download-pages/#synopsis
base-url = "localhost:3000"
icons = resources/conveyor/icons/Swisscom_Horizontal_RGB_Colour_Navy.svg
# share `/var/conveyor/sites/cdr-client` with `npx serve` to serve the update site locally for testing
copy-to = "/var/conveyor/sites/cdr-client"
}
windows {
# https://conveyor.hydraulic.dev/18.1/configs/inputs/#machine-specific-inputs
# https://conveyor.hydraulic.dev/18.1/configs/jvm/#importing-app-files
inputs += cdr-client-service/conf/default-application-customer.yaml -> conf/default-application-customer.yaml
inputs += cdr-client-service/conf/logback-service.xml -> conf/logback-service.xml
inputs += cdr-client-ui/conf/logback-ui.xml -> conf/logback-ui.xml
// CDR Client Watchdog Service files - include all published files
inputs += cdr-client-watchdog/publish/ -> bin/watchdog/
// Watchdog service management scripts
inputs += cdr-client-watchdog/install-service.bat -> bin/install-watchdog.bat
inputs += cdr-client-watchdog/uninstall-service.bat -> bin/uninstall-watchdog.bat
inputs += cdr-client-watchdog/cleanup-on-uninstall.bat -> bin/cleanup-on-uninstall.bat
inputs += cdr-client-watchdog/cleanup-service.ps1 -> bin/cleanup-service.ps1
inputs += cdr-client-watchdog/troubleshoot.bat -> bin/troubleshoot-watchdog.bat
inputs += cdr-client-watchdog/appsettings.dev.json -> bin/watchdog/appsettings.json
installer {
elevate = true
}
exe-installer-basename = "cdr-client-installer"
signing-key = derived
certificate = "self signed by CN=CDR Client"
# Open a console for the app, even when starting from a graphical launcher
# https://conveyor.hydraulic.dev/18.1/configs/jvm/#launcher-features
console = false
manifests {
msix {
namespaces = {
uap10: "http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
}
ignorable-namespaces += "uap10"
capabilities = ["rescap:runFullTrust", "rescap:localSystemServices", "rescap:packagedServices"]
// https://learn.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-desktop6-extension
extensions-xml = """
<desktop6:Extension Category="windows.service" EntryPoint="Windows.FullTrustApplication" Executable="app\bin\watchdog\CdrClientWatchdog.exe" uap10:RuntimeBehavior="packagedClassicApp">
<desktop6:Service Name="CDRClientWatchdog" StartAccount="localSystem" StartupType="auto" />
</desktop6:Extension>
"""
// https://conveyor.hydraulic.dev/18.1/configs/windows/#virtualization
virtualization {
# Exclude the entire RoamingAppData directory from virtualization.
excluded-directories += RoamingAppData
}
use-update-escape-hatch = false
}
}
// https://conveyor.hydraulic.dev/18.1/configs/windows/#appwindowsupdates
updates {
launch-check-frequency = 1 // hours
block-start = false
automatic-updates = true
}
}
linux {
# https://conveyor.hydraulic.dev/18.1/configs/linux/#applinuxconf-dir
conf-dir = lib/app/conf
# On Linux the contents of the conf directory get symlinked to /etc/<app.long-fsname-dir>, so the target name has to be the final name, i.e.
# `application-customer.yaml`, not `default-application-customer.yaml`!
inputs += cdr-client-service/conf/default-application-customer.yaml -> conf/application-customer.yaml
inputs += cdr-client-service/conf/logback-service.xml -> conf/logback-service.xml
inputs += cdr-client-ui/conf/logback-ui.xml -> conf/logback-ui.xml
# https://conveyor.hydraulic.dev/18.1/configs/linux/#applinuxsigning-key
signing-key = derived
symlinks = [
${app.linux.prefix}/bin/${app.fsname-ui} -> ${app.linux.install-path}/bin/${app.fsname-ui},
${app.linux.prefix}/bin/${app.fsname-service} -> ${app.linux.install-path}/bin/${app.fsname-service},
]
# https://conveyor.hydraulic.dev/18.1/configs/linux/#applinuxservices
services.cdr-client {
include "/stdlib/linux/service.conf"
include "/stdlib/linux/lightweight-service-sandbox.conf"
include "/stdlib/linux/writable-service-install.conf"
Service {
ExecStart = ${app.linux.install-path}/bin/${app.fsname-service}
Restart = always
}
}
desktop-file {
# https://conveyor.hydraulic.dev/18.1/configs/linux/#applinuxdesktop-file
"Desktop Entry".Categories = "GTK;Gnome;"
"Desktop Entry".Exec = ${app.linux.prefix}/bin/${app.fsname-ui}
}
}
mac {
inputs += cdr-client-service/conf/default-application-customer.yaml -> conf/default-application-customer.yaml
inputs += cdr-client-service/conf/logback-service.xml -> conf/logback-service.xml
inputs += cdr-client-ui/conf/logback-ui.xml -> conf/logback-ui.xml
}
# https://conveyor.hydraulic.dev/18.1/configs/jvm/#native-code
jvm {
system-properties {
file.encoding = UTF-8
jna.library.path = <libpath>
}
# https://conveyor.hydraulic.dev/18.1/configs/jvm/#appjvmoptions
options += -Xmx512m
windows.options += "-Dspring.config.additional-location=C:/ProgramData/"${app.vendor}"/"${app.fsname}"/application-customer.yaml"
# logback config location for SpringBoot based client service
windows.options += "-Dlogging.config=C:/ProgramData/"${app.vendor}"/"${app.fsname}"/logback-service.xml"
# logback config location for plain vanilla Kotlin client ui
windows.options += "-Dlogback.configurationFile=C:/ProgramData/"${app.vendor}"/"${app.fsname}"/logback-ui.xml"
windows.options += "-Dcdr.client.log.directory=C:/ProgramData/"${app.vendor}"/"${app.fsname}
windows.options += "-Dcdr.client.ui.isServiceController=false"
linux.options += "-Dspring.config.additional-location=/etc/"${app.long-fsname-dir}"/application-customer.yaml"
# logback config location for SpringBoot based client service
linux.options += "-Dlogging.config=/etc/"${app.long-fsname-dir}"/logback-service.xml"
# logback config location for plain vanilla Kotlin client ui
linux.options += "-Dlogback.configurationFile=.config/"${app.long-fsname-dir}"/logback-ui.xml"
linux.options += "-Dcdr-client-config-location=/etc/"${app.long-fsname-dir}
# Only applies to cdr-client-ui; cdr-client-service log location is set in systemD unit file generated by Conveyor (-> LogsDirectory directive)
linux.options += "-Dcdr.client.log.directory=.cache/"${app.long-fsname-dir}"/logs"
linux.options += "-Dcdr.client.ui.isServiceController=false"
mac.options += "-Dspring.config.additional-location=Library/Application Support/"${app.rdns-name}"/application-customer.yaml"
# logback config location for SpringBoot based client service
mac.options += "-Dlogging.config=Library/Application Support/"${app.rdns-name}"/logback-service.xml"
# logback config location for plain vanilla Kotlin client ui
mac.options += "-Dlogback.configurationFile=Library/Application Support/"${app.rdns-name}"/logback-ui.xml"
mac.options += "-Dcdr.client.log.directory=Library/Logs/"${app.rdns-name}
mac.options += "-Dcdr.client.ui.isServiceController=true"
gui {
main-class = com.swisscom.health.des.cdr.client.ui.UiMainKt
exe-name = cdr-client-ui
}
cli {
cdr-client-service {
main-class = com.swisscom.health.des.cdr.client.CdrClientApplicationKt
}
}
}
}
conveyor.compatibility-level = 21