- no upfront installation/agents on remote/slave machines - ssh should be enough
- application components should use third-party software, e.g. HDFS, Spark's cluster, deployed separately
- configuration templating
- environment requires/asserts, i.e. we need a JVM in a given version before doing deployment
- deployment process run from Jenkins
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // keepDoingSomething will keep trying to doSomething() until either | |
| // we get a result from doSomething() or the timeout expires | |
| func keepDoingSomething() (bool, error) { | |
| timeout := time.After(5 * time.Second) | |
| tick := time.Tick(500 * time.Millisecond) | |
| // Keep trying until we're timed out or got a result or got an error | |
| for { | |
| select { | |
| // Got a timeout! fail with a timeout error | |
| case <-timeout: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package main | |
| import ( | |
| "fmt" | |
| "time" | |
| ) | |
| // Suggestions from golang-nuts | |
| // http://play.golang.org/p/Ctg3_AQisl |