[
https://issues.apache.org/jira/browse/KNOX-1816?focusedWorklogId=275878&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-275878
]
ASF GitHub Bot logged work on KNOX-1816:
----------------------------------------
Author: ASF GitHub Bot
Created on: 12/Jul/19 12:44
Start Date: 12/Jul/19 12:44
Worklog Time Spent: 10m
Work Description: smolnar82 commented on pull request #114: KNOX-1816 -
Optionally added shellcheck validation to our build and fixed issues shellcheck
already found
URL: https://github.com/apache/knox/pull/114
## What changes were proposed in this pull request?
[Shellcheck](https://www.shellcheck.net/) is a very useful tool that helps
developers to avoid common pitfalls with their bash scripts. The following
changes were made:
1. optionally added shellcheck validation to knox build in these
sub-projects:
- gateway-release
- gateway-release-common
- gateway-shell-release
To activate this feature the command should include `-Dshellcheck=true` (by
default this is turned off).
**Note:** since there is no official Maven plugin for shellcheck you need to
install the tool manually first. According to its [Github
readme](https://github.com/koalaman/shellcheck#travis-ci) Travis CI comes with
built-in shellcheck so it should be safe to include that flag in our TravisCI
build.
2. I fixed our shell scripts to conform shellcheck
## How was this patch tested?
Built the project with and without the new flag (I made an error on purpose
in some of the scripts to see if the build actually fails):
```
$ mvn -DskipTests -Dcheckstyle.skip=true -Dfindbugs.skip=true
-Dpmd.skip=true -Drat.skip -Dshellcheck=true -Ppackage,release package
[INFO]
------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 02:29 min
[INFO] Finished at: 2019-07-12T10:30:46+02:00
[INFO] Final Memory: 146M/1618M
[INFO]
------------------------------------------------------------------------
```
Additionally, I deployed Knox locally and tested if the scripts are working
as expected:
```
################
## gateway.sh ##
################
$ bin/gateway.sh
Usage: bin/gateway.sh {start|stop|status|clean}
$ bin/gateway.sh status
Gateway is running with PID 24139.
$ bin/gateway.sh stop
Stopping Gateway with PID 24139 succeeded.
$ bin/gateway.sh stop
Gateway is not running.
$ bin/gateway.sh clean
Removed the Gateway PID file.
Removed the Gateway OUT file.
Removed the Gateway ERR file.
$ bin/gateway.sh start
Starting Gateway succeeded with PID 24841.
$ bin/gateway.sh start
Gateway is already running with PID 24841.
$ bin/gateway.sh clean
Can't clean files. Gateway is running with PID 24841.
$ bin/gateway.sh status
Gateway is running with PID 24841.
$ bin/gateway.sh stop
Stopping Gateway with PID 24841 succeeded.
```
```
#############
## ldap.sh ##
#############
$ bin/ldap.sh
Usage: bin/ldap.sh {start|stop|status|clean}
$ bin/ldap.sh status
LDAP is not running. No PID file found.
$ bin/ldap.sh stop
LDAP is not running.
$ bin/ldap.sh clean
Removed the LDAP PID file.
Removed the LDAP OUT file.
Removed the LDAP ERR file.
$ bin/ldap.sh start
Starting LDAP succeeded with PID 25045.
$ bin/ldap.sh start
LDAP is already running with PID 25045.
$ bin/ldap.sh clean
Can't clean files. LDAP is running with PID 25045.
$ bin/ldap.sh status
LDAP is running with PID 25045.
$ bin/ldap.sh stop
Stopping LDAP with PID 25045 succeeded.
$ bin/ldap.sh stop
LDAP is not running.
```
```
##################
## knoxshell.sh ##
##################
$ bin/knoxshell.sh help
Apache Knox Client Shell
The client shell facility provide a CLI for establishing and managing Apache
Knox Sessions
and executing the Apache Knox groovy-based DSL scripts. It may also be used
to enter an
interactive shell where groovy-based DSL and groovy code may be entered and
executed in realtime.
knoxshell usage:
knoxshell.sh [[buildTrustStore <knox-gateway-url>|init
<topology-url>|list|destroy|help] | [<script-file-name>]]
----------------------------------------------------------
buildTrustStore <knox-gateway-url> - downloads the given gateway server's
public certificate and builds a trust store to be used by KnoxShell
example: knoxshell.sh buildTrustStore https://localhost:8443/
init <topology-url> - requests a session from the knox token service at
the url
example: knoxshell.sh init https://localhost:8443/gateway/sandbox
list - lists the details of the cached knox session token
example: knoxshell.sh list
destroy - removes the cached knox session token
example: knoxshell.sh destroy
<script-file-name> - executes the groovy script file
example: knoxshell.sh ~/bin/ls.groovy
$ bin/knoxshell.sh buildTrustStore https://localhost:8443
Opening connection to localhost:8443...
Starting SSL handshake...
Gateway server's certificate is exported into
/Users/smolnar/gateway-client-trust.jks
```
```
################
## knoxcli.sh ##
################
$ bin/knoxcli.sh
KnoxCLI {cmd} [options]
[--help]
[version]
[create-master [--force] [--master mastersecret] [--generate]]
[create-cert [--force] [--hostname h]]
[export-cert [--type PEM|JKS|JCEKS|PKCS12]]
[create-alias aliasname [--cluster clustername] [ (--value v) |
(--generate) ]]
[delete-alias aliasname [--cluster clustername]]
[list-alias [--cluster clustername]]
[redeploy [--cluster clustername]]
[list-topologies]
[validate-topology [--cluster clustername] | [--path "path/to/file"]]
[user-auth-test [--cluster clustername] [--u username] [--p password]
[--g]]
[system-user-auth-test [--cluster clustername] [--d]]
[service-test [--u username] [--p password] [--cluster clustername]
[--hostname name] [--port port]]
[list-registry-clients]
[list-provider-configs --registry-client name]
[upload-provider-config providerConfigFile --registry-client name
[--entry-name entryName]]
[list-descriptors --registry-client name]
[upload-descriptor descriptorFile --registry-client name [--entry-name
entryName]]
[delete-provider-config providerConfig --registry-client name]
[delete-descriptor descriptor --registry-client name]
[get-registry-acl entry --registry-client name]
===============================================================================
version
Displays Knox version information.
===============================================================================
create-master [--force] [--master mastersecret] [--generate]
...
===============================================================================
delete-descriptor descriptor --registry-client name
Deletes a simple descriptor from the specified remote registry.
===============================================================================
$ bin/knoxcli.sh version
Apache Knox: 1.4.0-SNAPSHOT (77f0c515a9948b860668b6efea16d6879e166a78)
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 275878)
Time Spent: 10m
Remaining Estimate: 0h
> Execute shellcheck on our Linux scripts
> ---------------------------------------
>
> Key: KNOX-1816
> URL: https://issues.apache.org/jira/browse/KNOX-1816
> Project: Apache Knox
> Issue Type: Improvement
> Components: KnoxCLI, KnoxShell, Server
> Reporter: Sandor Molnar
> Assignee: Sandor Molnar
> Priority: Minor
> Fix For: 1.4.0
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> It's strongly recommended to execute {{shellcheck}} on the following Linux
> scripts:
> * {{gateway-release/home/bin/gateway.sh}}
> * {{gateway-release/home/bin/knoxcli.sh}}
> * {{gateway-release/home/bin/ldap.sh}}
> * {{gateway-shell-release/home/bin/knoxshell.sh}}
> It can be done online ([https://www.shellcheck.net/]) or locally after
> installing the software. Once the check has been executed we should apply the
> changes the tool recommends to avoid common bash pitfalls.
> Optionally: we may integrate it with our Travis CI build (needs investigation)
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)