Skip to content

Instantly share code, notes, and snippets.

@bradrydzewski
Last active April 14, 2016 22:32
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bradrydzewski/bc6e96cb88718de51ce3 to your computer and use it in GitHub Desktop.
Save bradrydzewski/bc6e96cb88718de51ce3 to your computer and use it in GitHub Desktop.
Drone nightly build
package main
import (
"flag"
"log"
"strings"
"github.com/drone/drone-go/drone"
)
var (
repo = flag.String("repo", "", "repository name (ie octocat/hello-world")
branch = flag.String("branch", "master", "repository branch (ie master)")
token = flag.String("token", "", "drone token")
server = flag.String("server", "", "drone server")
)
func main() {
flag.Parse()
var (
owner = strings.Split(*repo, "/")[0]
name = strings.Split(*repo, "/")[1]
)
client := drone.NewClientToken(*server, *token)
builds, err := client.BuildList(owner, name)
if err != nil {
log.Fatalf("Unable to get build list for %s. %s", name, err)
}
for _, build := range builds {
if build.Status == drone.StatusPending || build.Status == drone.StatusRunning {
log.Fatalf("Build is already in progress for %s.", name)
}
if build.Branch == *branch && build.Event == "push" {
forked, err := client.BuildFork(owner, name, build.Number)
if err != nil {
log.Fatalf("Unable to fork build %s/%s#%d. %s.", owner, name, build.Number, err)
}
log.Printf("Created new build for %s/%s@%s", owner, name, forked.Commit)
break
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment