Added a flag for connection timeouts

This commit is contained in:
Thomas Boerger 2016-07-12 13:31:38 +02:00 committed by Thomas Boerger
parent c816c75fc6
commit fd259fd403
No known key found for this signature in database
GPG Key ID: 5A388F55283960B6
3 changed files with 17 additions and 7 deletions

View File

@ -10,6 +10,7 @@ The following parameters are used to configure the plugin:
* **user** - user to log in as on the remote machine
* **key** - private SSH key for the remote machine
* **sleep** - sleep for seconds between host connections
* **timeout** - timeout for the tcp connection attempt
* **commands** - list of commands to execute
The following secret values can be set to configure the plugin.
@ -19,6 +20,7 @@ The following secret values can be set to configure the plugin.
* **SSH_USER** - corresponds to **user**
* **SSH_KEY** - corresponds to **key**
* **SSH_SLEEP** - corresponds to **sleep**
* **SSH_TIMEOUT** - corresponds to **timeout**
It is highly recommended to put the **SSH_KEY** into a secret so it is not
exposed to users. This can be done using the drone-cli.

View File

@ -44,6 +44,11 @@ func main() {
Usage: "sleep between hosts",
EnvVar: "PLUGIN_SLEEP,SSH_SLEEP",
},
cli.DurationFlag{
Name: "timeout",
Usage: "connection timeout",
EnvVar: "PLUGIN_TIMEOUT,SSH_TIMEOUT",
},
cli.StringSliceFlag{
Name: "commands",
Usage: "execute commands",
@ -72,6 +77,7 @@ func run(c *cli.Context) error {
Host: c.StringSlice("host"),
Port: c.Int("port"),
Sleep: c.Int("sleep"),
Timeout: c.Duration("timeout"),
Commands: c.StringSlice("commands"),
},
}

View File

@ -13,12 +13,13 @@ import (
type (
Config struct {
Key string `json:"key"`
User string `json:"user"`
Host []string `json:"host"`
Port int `json:"port"`
Sleep int `json:"sleep"`
Commands []string `json:"commands"`
Key string `json:"key"`
User string `json:"user"`
Host []string `json:"host"`
Port int `json:"port"`
Sleep int `json:"sleep"`
Timeout time.Duration `json:"timeout"`
Commands []string `json:"commands"`
}
Plugin struct {
@ -44,7 +45,8 @@ func (p Plugin) Exec() error {
}
config := &ssh.ClientConfig{
User: p.Config.User,
Timeout: p.Config.Timeout,
User: p.Config.User,
Auth: []ssh.AuthMethod{
ssh.PublicKeys(signer),
},