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 * **user** - user to log in as on the remote machine
* **key** - private SSH key for the remote machine * **key** - private SSH key for the remote machine
* **sleep** - sleep for seconds between host connections * **sleep** - sleep for seconds between host connections
* **timeout** - timeout for the tcp connection attempt
* **commands** - list of commands to execute * **commands** - list of commands to execute
The following secret values can be set to configure the plugin. 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_USER** - corresponds to **user**
* **SSH_KEY** - corresponds to **key** * **SSH_KEY** - corresponds to **key**
* **SSH_SLEEP** - corresponds to **sleep** * **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 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. exposed to users. This can be done using the drone-cli.

View File

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

View File

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