Christopher Fenner
80d288ae57
handlePipelineStepError: use ConfigurationHelper ( #556 )
...
* use ConfigurationHelper in handlePipelineStepError
* externalise help url
2019-03-20 11:21:06 +01:00
Holger Partsch
94957e2b54
Make K8S integration more configurable ( #552 )
...
* Define pod using k8s yaml manifest
The Kubernetes plugin allows to define pods directly via the Kubernetes
API specification:
https://github.com/jenkinsci/kubernetes-plugin#using-yaml-to-define-pod-templates
This has the advantage of unlocking Kubernetes features which are not
exposed via the Kubernetes plugin, including all Kubernetes security
featues.
Using the Kubernetes API directly is also better from development
point of view because it is stable and better desgined then the API the
plugin offers.
* Make the Kubernetes ns configurable
If one Jenkins Master is used by multiple Teams, it is desirable to
schedule K8S workloads in seperatae workspaces.
* Add securityContext to define uid and fsGroup
In the context of the Jenkins k8s plugin it is uids and fsGroups play an
important role, because the containers share a common file system.
Therefore it is benefical to configure this data centraly.
* fix indention
* Undo format changes
* Extend and fix unit tests
* Fix port mapping
* Don't set uid globally
This does not work with jaas due to permissions problems.
* Fix sidecar test
* Make security context configurable at stage level
* Extract json serialization
* Cleanup unit tests
2019-03-20 10:07:37 +01:00
Marcus Holl
ad41c27458
Merge remote-tracking branch 'github/master' into HEAD
2019-03-19 16:05:58 +01:00
Christopher Fenner
7177954e80
seleniumExecuteTests & uiVeri5ExecuteTests: improve documentation ( #568 )
...
* generate docs for seleniumExecuteTests
* inherit docs for uiVeri5ExecuteTests
* add description for failOnError
2019-03-19 15:38:52 +01:00
Christopher Fenner
60cbd2cd57
seleniumExecuteTests: fix type ( #569 )
2019-03-19 12:07:05 +01:00
Marcus Holl
728464ae54
checkChangeInDevelopment with docker
2019-03-19 10:07:18 +01:00
Marcus Holl
bdc0e487d6
release transport request for cts
2019-03-19 10:07:18 +01:00
Marcus Holl
3e8d4fc576
Release transport SOLMAN with docker
2019-03-19 10:07:18 +01:00
Marcus Holl
71fdcc3e53
docker for upload file SOLMAN
2019-03-19 10:07:18 +01:00
Marcus Holl
24cd9400d7
create transport request SOLMAN with docker
2019-03-19 10:07:18 +01:00
Marcus Holl
620e0c7d4a
docker for transportRequestCreate CTS
2019-03-19 10:07:18 +01:00
Marcus Holl
94315bf006
use docker image for cts upload file
2019-03-19 10:07:18 +01:00
Marcus Holl
0fb68187af
[fix] wrong default type for docker config
2019-03-19 10:07:18 +01:00
Marcus Holl
4d4b9de660
Merge remote-tracking branch 'github/master' into HEAD
2019-03-19 09:06:15 +01:00
Daniel Kurzynski
af740e1092
Make source for neo deployments configurable in the config file ( #564 )
2019-03-18 14:55:51 +01:00
Daniel Kurzynski
9f4a597778
Wait for sidecar container to be ready ( #567 )
2019-03-18 14:05:42 +01:00
Christopher Fenner
7069f29ec5
snykExecute: add missing documentation ( #570 )
...
* add docs for snykExecute
* add link to new docs page
2019-03-18 11:08:41 +01:00
Sven Merk
43cb2c68cf
Merge branch 'whitesource-step' of https://github.com/SAP/jenkins-library into whitesource-step
2019-03-15 13:22:05 +01:00
Sven Merk
1a04394a00
Ensure report severity limit is based on configuration
2019-03-15 13:21:56 +01:00
Sven Merk
bb31060dad
Merge branch 'master' into whitesource-step
2019-03-15 13:16:29 +01:00
Sven Merk
e37b714c99
Improve coverage
2019-03-15 13:11:34 +01:00
Sven Merk
c96f73866a
Refactored to generally migrate config to deep structure
2019-03-14 15:18:01 +01:00
Marcus Holl
2b36909f38
Merge remote-tracking branch 'github/master' into HEAD
2019-03-14 13:53:18 +01:00
Christopher Fenner
851e98aef8
handlePipelineStepErrors: add error data to influx measurement ( #563 )
2019-03-14 13:51:00 +01:00
Daniel Kurzynski
9055dd1ea0
Merge branch 'master' into pr/neoDeployParamChecksEarly
2019-03-14 12:52:55 +01:00
Christopher Fenner
4953a894c5
uiVeri5ExecuteTests: add testServerUrl ( #543 )
2019-03-13 17:45:41 +01:00
Marcus Holl
adafab91e2
Perform parameter validation early, do not truncate parameters
...
In case of a mis-configuration we get a hint like "host is missing".
Actually it should be "neo/host is missing" since the parameter "host" is nested inside "neo".
Having simply "host" confuses the person troubleshooting this issue.
With this change the input validation is performed right at the beginning of the step.
The NeoCommandLine helper does not check a second time now.
2019-03-13 15:44:57 +01:00
Marcus Holl
201b075cb5
Merge remote-tracking branch 'github/master' into HEAD
2019-03-13 14:36:34 +01:00
Alejandra Ferreiro Vidal
cf44e18c69
Remove outdated log message ( #550 )
2019-03-13 12:38:04 +01:00
Sven Merk
f2c7265986
Merge branch 'master' into whitesource-step
2019-03-13 12:13:16 +01:00
Sven Merk
06189d9ae0
Cleanup
2019-03-13 12:10:23 +01:00
Christopher Fenner
6d7205377c
generate karma docs ( #555 )
2019-03-13 12:01:05 +01:00
Sven Merk
6764e75551
Merge branch 'master' into whitesource-step
2019-03-13 10:43:23 +01:00
Sven Merk
63861b0dce
Add compatibility support for old values
2019-03-12 22:34:20 +01:00
Marcus Holl
5afaf9cb06
Merge remote-tracking branch 'github/master' into HEAD
2019-03-12 16:08:15 +01:00
Sven Merk
46ddaaf137
Add compatibility support for old values
2019-03-12 12:29:30 +01:00
Sven Merk
c6909fa783
Improve info message
2019-03-12 12:24:25 +01:00
Marcus Holl
a11a9e5fc2
Merge remote-tracking branch 'github/master' into HEAD
2019-03-12 09:52:36 +01:00
Sven Merk
28418eae7c
Move creation of project before scan
2019-03-11 15:27:06 +01:00
Sven Merk
5555858aca
Fix logic
2019-03-11 13:14:48 +01:00
Sven Merk
362bcb787f
Cleanup
2019-03-11 11:44:39 +01:00
Sven Merk
61d6280c3a
Moved admin auth handling into script
2019-03-11 10:46:22 +01:00
Sven Merk
4ae6675824
Revise docs
2019-03-08 13:56:07 +01:00
Sven Merk
6b61bc1b98
Updated documentation
2019-03-08 12:33:31 +01:00
Sven Merk
78b41ce7d8
Fix documentation link
2019-03-07 13:16:03 +01:00
Daniel Kurzynski
1bd1b01a7a
Merge branch 'master' into remove-compatability
2019-03-07 12:54:04 +01:00
Marcus Holl
a7bc198342
neo toolset not configurable ( #484 )
2019-03-07 12:53:25 +01:00
Sven Merk
3e8df1fb68
Formatting
2019-03-07 12:21:35 +01:00
Sven Merk
1f5f812a1a
Fix compatibility for defaults
2019-03-07 12:14:25 +01:00
Sven Merk
6fd4436494
Fix flattening config compatibility feature
2019-03-07 11:43:08 +01:00
Sven Merk
e6c3d6e4ba
Enhance config compatibility feature
2019-03-07 11:13:24 +01:00
Sven Merk
28b370371f
Fix compatibility
2019-03-06 15:46:04 +01:00
Sven Merk
4344f279fa
Fix compatibility feature
2019-03-06 15:33:19 +01:00
Sven Merk
fa33f1925c
Fix compatibility mapping
2019-03-06 15:12:21 +01:00
Sven Merk
bfbee88620
Added documentation of parameters and step
2019-03-06 15:08:42 +01:00
Sven Merk
cfc3a1528a
Implement comments
2019-03-06 14:03:00 +01:00
Sven Merk
f94e23a392
Merge remote-tracking branch 'origin/whitesource-step' into whitesource-step
2019-03-06 13:12:36 +01:00
Sven Merk
6a907cff23
Add creation capabilities for whitesource products
2019-03-06 13:12:23 +01:00
Christopher Fenner
d000c25add
Update vars/whitesourceExecuteScan.groovy
...
Co-Authored-By: nevskrem <33895725+nevskrem@users.noreply.github.com>
2019-03-06 13:11:05 +01:00
Christopher Fenner
ebbc373d56
Update vars/whitesourceExecuteScan.groovy
...
Co-Authored-By: nevskrem <33895725+nevskrem@users.noreply.github.com>
2019-03-06 13:10:49 +01:00
Christopher Fenner
39ef78c219
Update vars/whitesourceExecuteScan.groovy
...
Co-Authored-By: nevskrem <33895725+nevskrem@users.noreply.github.com>
2019-03-06 13:10:31 +01:00
Christopher Fenner
4a05b317b3
Update vars/whitesourceExecuteScan.groovy
...
Co-Authored-By: nevskrem <33895725+nevskrem@users.noreply.github.com>
2019-03-06 13:07:55 +01:00
Sven Merk
f7f33f38ac
Address comments
2019-03-06 11:04:49 +01:00
Sven Merk
84ae883264
Enforce orgToken, sanitize limit
2019-03-05 14:40:36 +01:00
Sven Merk
a0e241b7e4
Add deletion of agent file downloaded
2019-03-05 14:34:57 +01:00
Sven Merk
53491ce956
Cleanup and alignment with internal step
2019-03-05 13:59:40 +01:00
Marcus Holl
42d57479d9
Verbose flag for transport request release
2019-03-05 12:35:28 +01:00
Marcus Holl
ad3e0f86d1
Verbose flag for transportRequestCreate
2019-03-05 10:29:23 +01:00
Sven Merk
3bf3afd7ac
Added debug output
2019-03-04 23:09:40 +01:00
Sven Merk
32b9c95cdb
Added tests
2019-03-04 22:55:43 +01:00
Sven Merk
3eedbbb17c
Fix serialization
2019-03-04 16:49:54 +01:00
Sven Merk
c0df1077c1
Verbose
2019-03-04 16:23:03 +01:00
Sven Merk
bffb57137a
Adapt test
2019-03-04 15:49:55 +01:00
Sven Merk
6066585072
Improve report pulling method
2019-03-04 15:45:30 +01:00
Sven Merk
03d3e2b241
Fix missing descriptor support
2019-03-04 15:02:01 +01:00
Sven Merk
05fe2fb758
Cleanup
2019-03-04 14:40:17 +01:00
Sven Merk
fc9adfd536
Added stylesheet for report rendering
2019-03-04 11:52:57 +01:00
Sven Merk
14700ba210
Initial checkin of new whitesource step
2019-02-28 13:01:30 +01:00
Christopher Fenner
9ebce31fe6
influxWriteData: use org/repo as default prefix ( #534 )
2019-02-28 08:45:44 +01:00
Christopher Fenner
2817efa2ed
prepareDefaultValues: streamline logs
2019-02-28 07:06:46 +01:00
Marcus Holl
baad41167a
Merge remote-tracking branch 'github/master' into HEAD
2019-02-27 16:02:45 +01:00
yemengsap
38c5a0d779
Add npmExecute step ( #491 )
2019-02-21 19:14:48 +01:00
Florian Wilhelm
ada3ed909d
Don't print messages in all uppercase letters ( #531 )
2019-02-21 15:46:17 +01:00
Marcus Holl
827d8aa32d
imagePull --> pullImage
2019-02-19 11:35:03 +01:00
Marcus Holl
05438943ba
Allow fileUrl, applicationUrl in project config.
2019-02-19 11:22:33 +01:00
Marcus Holl
5c6f57f3cb
Check for credentials id as part of input validation
2019-02-15 14:15:58 +01:00
Marcus Holl
546db7f3f3
Provide verbose flag.
2019-02-15 13:58:11 +01:00
Marcus Holl
a375cc75a5
Provide flag failUploadOnWarning
...
in order to be able to survive uploads which are basically successful, but
with warning(s).
2019-02-15 13:58:11 +01:00
Marcus Holl
0ea6bdc05c
Accept unix style line endings.
2019-02-14 13:52:06 +01:00
Marcus Holl
02e832b008
Test for RFC transportRequestCreate
2019-02-14 12:01:28 +01:00
Marcus Holl
80bd4cf11c
Support code page parameter
2019-02-14 09:36:51 +01:00
weloli
523fc067f1
fix general config for param changeManagement ( #513 )
2019-02-14 08:45:20 +01:00
Oliver Nocon
793df723cf
add step slackSendNotification ( #338 )
...
* add step slackSendNotification
This step allows to send Slack notifications in case of pipeline failures.
* add SWA reporting
* remove allowBuildFailure
* add GENERAL_CONFIG_KEYS
* update STEP_NAME
* add missing import
* fix MD findings
* adjust rule name to be aligned with #455
2019-02-13 16:45:35 +01:00
Marcus Holl
af5d67aaf7
docker params as map when releasing tr via rfc
2019-02-13 14:58:46 +01:00
Marcus Holl
11812f5c09
Merge remote-tracking branch 'github/master' into HEAD
2019-02-13 09:15:32 +01:00
Marcus Holl
0ae673c021
docker params as map when creating tr via rfc
2019-02-12 15:35:27 +01:00
Marcus Holl
dc1dfd622c
docker params as map for fileUpload
2019-02-12 15:22:22 +01:00
Marcus Holl
2aa9f5215a
fix code climate issues
2019-02-11 11:53:01 +01:00
Marcus Holl
9305a52d0f
Merge remote-tracking branch 'github/master' into HEAD
2019-02-08 12:38:59 +01:00
Christopher Fenner
d657f0dc28
testsPublishResults: add option to fail the build on test errors ( #472 )
...
* add option to fail the build on test errors
* fix typo
* add test cases
* adjust docs
* set build result
* add hasTestFailure utils method
* use utils method
* use dedicated type
* adapt tests
* handle missing test actions
* Update testsPublishResults.md
* Update JenkinsUtils.groovy
* Update JenkinsUtils.groovy
* Update JenkinsUtils.groovy
* remove comments
* adapt test case
* Update TestsPublishResultsTest.groovy
2019-02-08 12:30:59 +01:00
Christopher Fenner
3f12015364
dockerExecuteOnKubernetes: generate documentation ( #487 )
...
* fix whitespace
* correct key order
* add docs annotation
* add key documentation
* remove generated documentation
* fix code climate finding
2019-02-08 12:20:45 +01:00
Marcus Holl
91785a3c74
Fix log message when an upload has been performed
2019-02-08 12:19:20 +01:00
Marcus Holl
8d1786fa8d
DevelopmentInstance for upload file rfc
2019-02-07 11:46:45 +01:00
Marcus Holl
3a982a8f04
provide developent instance for transportRequest release RFC
2019-02-07 11:24:39 +01:00
Marcus Holl
54018be2f0
Provide developmentInstance for transportRequestCreate RFC
2019-02-07 11:18:32 +01:00
Marcus Holl
d8d2d8b1fd
abap development client always under changeManagement.rfc
2019-02-07 10:11:22 +01:00
Marcus Holl
fb9ec4992f
development client not via flat parameter
2019-02-07 09:44:17 +01:00
weloli
826e216cd5
Lookup mtar in the whole workspace ( #492 )
...
* allow mtar lookup in the whole workspace
* minor fixes
2019-02-07 08:58:00 +01:00
Marcus Holl
fd5a07d403
applicationId -> applicationName for RFC file upload
2019-02-07 08:29:53 +01:00
Marcus Holl
1b202f879a
Provide flag for skipping docker image pulls ( #407 )
...
* Provide flag for skipping docker image pulls
Usefull for testing while developing images. Without pulling images it is possible to
use images available in the local registry only.
2019-02-06 08:48:33 +01:00
Oliver Nocon
74366631b5
Project "Piper" Template: framework and structure ( #476 )
...
* Project "Piper" Template: framework and structure
This is the first in a series of Pull-Requests to provide a fully functional Pipeline template into the library.
This PR contains:
* general Pipeline structure incl. tests
* Pipeline initialization incl. tests
* Hollow pipeline stages incl. tests
* first set of default values
* add gitUrls to commonPipelineEnvironment
* set correct git information on commonPipelineEnvironment
2019-02-05 15:37:59 +01:00
Thorsten Duda
d36c98ec30
Merge branch 'master' into remove-validation-from-mtabuild
2019-02-05 14:19:36 +01:00
Marcus Holl
534cb1471d
Merge remote-tracking branch 'github/master' into HEAD
2019-02-05 09:25:50 +01:00
Oliver Nocon
dde4e0abef
Fix regression introduced with #474 ( #483 )
...
Fix stashing behavior to include all files in workspace.
This was for example an issue for PR-voting in Docker pipeline since `Dockerfile` has been excluded from stashing
2019-02-05 09:07:47 +01:00
Christoph Szymanski
baea1db813
Merge branch 'master' into remove-validation-from-mtabuild
2019-02-04 17:12:05 +01:00
Christopher Fenner
bd32367c31
dockerExecute: generate docs ( #480 )
...
* correct key order
* add docs annotation and description
* describe parameters
* remove generated content from doc
* fix indent
* add further decumentations
2019-02-04 14:35:44 +01:00
Marcus Holl
b7deda1964
dockerExecute: make javadoc comment to 'normal' comment ( #481 )
...
since it is not intendend to expose the method docu as api doc.
2019-02-04 10:53:20 +01:00
Christopher Fenner
ba2e83c76a
dockerExecuteOnKubernetes: correct parameter keys ( #475 )
...
* Update dockerExecuteOnKubernetes.groovy
* Update dockerExecute.groovy
* Update dockerExecuteOnKubernetes.groovy
2019-02-04 09:03:58 +01:00
Christoph Szymanski
70ac75c8b8
Remove validation in mtaBuild
...
Removing validation calls for Java and MTA.
2019-02-01 16:13:18 +01:00
Marcus Holl
59bff987d7
Test for releaseTransportRequest RFC sanity checks
2019-02-01 13:23:08 +01:00
Marcus Holl
cb61d80e12
development client for RFC release transport not hard coded anymore
2019-02-01 13:08:25 +01:00
Marcus Holl
c785e53317
split releaseTransportRequest method into three methods
...
one for each BackendType.
2019-02-01 13:08:24 +01:00
Marcus Holl
7a4ca50399
Fix log message. Was invalid for backendType RFC.
2019-01-31 17:08:05 +01:00
Marcus Holl
5302d1d7b1
Merge remote-tracking branch 'github/master' into work
2019-01-31 09:55:21 +01:00
Oliver Nocon
3b2e42c74f
Add step containerExecuteStructureTest ( #441 )
...
* add step containerExecuteStructureTest
* include PR-review feedback
* documentation
2019-01-31 09:39:13 +01:00
Christopher Fenner
bca5b8ccf1
Add step uiVeri5ExecuteTests ( #469 )
...
* add defaults for uiVeri5 step
* add step and tests
* correct parameter names
* add empty docs
* add docs annotations
* remove not needed parameter
* add docs annotations
2019-01-31 09:16:34 +01:00
Christopher Fenner
fbb9cbeb3c
Update dockerExecuteOnKubernetes.groovy ( #474 )
2019-01-31 08:49:31 +01:00
Marcus Holl
a70fc10ae0
Parameter applicationURL instead of file path
2019-01-30 16:02:48 +01:00
Marcus Holl
661745fd81
Merge remote-tracking branch 'github/master' into HEAD
2019-01-30 15:01:09 +01:00
Christopher Fenner
def66f4ffa
extend Analytics ( #439 )
...
* add extension mechanism for analytics
* add sha1 hashing
* correct return types
* correct registerEventListener method
* decrese visibility of createInstance
* correct typo
* catch exceptions from tests
* correct test case
* Update Analytics.groovy
* rename to Telemetry
* rename file
* fix typo
* add test case for generateSha1
* expose methods to tests
* add clear method for tests
* change return type
* add test for Telemetry class
* replace UtilsTests
* remove unused imports
* make default reporter static
* add stage parameters to payload
* simplify SHA1 method
* remove obsolete method
* remove obsolete methods
* remove outdated tests
2019-01-30 12:39:33 +01:00
Christopher Fenner
1c9eed993b
Merge branch 'master' into pr/removeNeoCredentialsCheck
2019-01-30 10:46:06 +01:00
Florian Geckeler
a72e33f488
Stop old instance only if it exists in CloudFoundry
...
If there was no instance deployed in CF and blue-green deployment was activated stopping the old instance caused a failure of the pipeline, even if the application was deployed successfully.
With that change the failure of the pipeline will be avoided in case of no old application is available.
2019-01-30 10:07:00 +01:00
Marcus Holl
262f39dfdd
Removing check for neo deploy credentials id
...
since there is a default defined in default_pipeline_environment.
I believe there is a misunderstanding. The check checks if there is a valid defined for the
credentials id key. Since there is one definded in the default config this check will always
succeed.
This check does not check if there is a credential defined with this id via the Jenkins
Credentials Plugin. Maybe when this check was provided this was the intention. There is a
speaking error message provided by the credentials plugin in case the credentials lookup
fails.
2019-01-29 09:48:52 +01:00
Daniel Kurzynski
09a2e3f090
Remove compatibility for neoDeploy
2019-01-28 12:35:35 +01:00
Daniel Kurzynski
6e26d78047
Improve neo deploy ( #440 )
...
The following features were added:
Lock resources for deployment
New parameters: environment, vmArguments
Assert password does not start with @
Link to cloud cockpit
Only execute rolling update if app is running
Show logs if deployment failed
Restart app after normal deployment
Use neo namespace for parameters
Align parameter names with neo sdk: size, application, source
Remove vmSize check as done by the tool itself
2019-01-28 11:32:24 +01:00
Marcus Holl
b21541c9f6
transportRequestCreate for RFC communication
2019-01-25 15:14:08 +01:00
Marcus Holl
9bf38f9a76
Merge remote-tracking branch 'github/master' into HEAD
2019-01-23 14:26:30 +01:00
Oliver Nocon
05e0d958da
dockerExecute - fix issue when image does not contain which ( #458 )
...
command `which` requires a dedicated OS package to be installed.
In case a Jenkins Master or Jenkins Slave Image does not contain `which`, although `docker` command is available the step took a wrong turn.
This removes the check using `which` since checking `docker ps` is sufficient.
2019-01-23 14:19:36 +01:00
Marcus Holl
2330bfdcf4
Merge remote-tracking branch 'github/master' into HEAD
2019-01-23 12:34:25 +01:00
Oliver Nocon
27c3891685
deployToCloudFoundry - patch mta blue-green deployment ( #457 )
...
mta deploy plugin has flag:
` --no-confirm` which is described as _"Do not require confirmation for deleting the previously deployed MTA apps"_
This flag is essentials for performing fully automated blue-green deployments.
2019-01-22 16:13:59 +01:00
Christopher Fenner
6224d2aece
influxWriteData: catch NPE ( #434 )
...
* Update influxWriteData.groovy
* Update influxWriteData.groovy
* Update influxWriteData.groovy
2019-01-21 14:12:05 +01:00
Christopher Fenner
10267ce7d1
Analytics: add step parameter keys ( #442 )
...
* add stepParamKey values
* camelCase
2019-01-21 08:47:34 +01:00
Marcus Holl
c8c96f11e3
Escape blanks when contained in env values for docker
2019-01-18 15:48:58 +01:00
Marcus Holl
dd8e09c527
Streamline flow control
...
in order to avoid to have to escape at two locations in the code.
2019-01-18 15:48:58 +01:00
sbmaier
423c9f52ba
cloudFoundryDeploy: fix naming of Influx step ( #450 )
...
* fix naming Influx
* fix test for influx name change
2019-01-18 15:33:36 +01:00
Christopher Fenner
f6647d9ce5
newmanExecuteTests: use user-specific .npm-global directory ( #447 )
...
* use user-specific .npm-global directory
* Update newmanExecute.groovy
* fix typo
* Update NewmanExecuteTest.groovy
* Update NewmanExecuteTest.groovy
2019-01-18 13:14:39 +01:00
Marcus Holl
0914f6920a
no docker pull
2019-01-18 10:26:27 +01:00
Marcus Holl
cca46d509b
Upload binaries to transport requests via RFC
2019-01-18 10:26:03 +01:00
Marcus Holl
303122c899
Remove unneeded imports for ConfigurationMerger, ConfigurationLoader
2019-01-18 09:36:16 +01:00
Christopher Fenner
1baa1f14cb
remove trailing line break
2019-01-18 08:57:54 +01:00