jenkins-nodes-auto-scaler

command module
v0.0.0-...-c02cc21 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 20, 2018 License: Apache-2.0 Imports: 17 Imported by: 0

README

Tool that enable and disable build boxes according to the current needs.

The tool checks the Jenkins queue and in case is not empty it spins up additional boxes, based on the size of the queue and the number of workers per box.

When the queue is empty, it checks whether any node can be terminated by establishing whether the slave is in idle state.

One box is kept running all the time, apart during non working hours.

Once a node is online, it's kept alive for at least 10 minutes, since that's the minimum charge Google applies per node.

The tool assumes:

  • all the boxes have the same number of workers configured
  • working hours are considered to be between 7am and 7pm, Monday to Friday
  • the slave names configured in Jenkins are the same as the node names configured in GCE

The tool options are:

  -gceProjectName string
    	project name where nodes are setup in GCE
  -gceZone string
    	GCE zone where nodes have been setup (default "europe-west1-b")
  -jenkinsApiToken string
    	Jenkins api token
  -jenkinsBaseUrl string
    	Jenkins server base url
  -jenkinsUsername string
    	Jenkins username
  -jobNameRequiringAllNodes string
    	Jenkins job name which requires all build nodes enabled
  -jobType string
    	defines which job to execute: auto_scaling, all_up, all_down (default "auto_scaling")
  -locationName string
    	Location used to determine working hours (default "Europe/London")
  -useLocalCreds
    	uses the local creds.json as credentials for Google Cloud APIs
  -workersPerBuildBox int
    	number of workers per build box (default 2)

Jenkins nodes setup

Assuming that GO is installed on the machine where the script will be executed, run:

go get github.com/shazam/jenkins-nodes-auto-scaler

The binary will be downloaded in the $GOPATH/bin folder. Then simply run:

jenkins-nodes-auto-scaler \
   -jobType=auto_scaling \
   -gceProjectName=my-gce-project-name \
   -jenkinsApiToken=123456 \
   -jenkinsUsername=my-username \
   -jenkinsBaseUrl=http://my-jenkins.com:8888 \
   build1 build2 build3

where build1, build2 and build3 are the name of the nodes setup in Jenkins and in GCE. If the script is not run within a GCE instance, the useLocalCreds=true option should be used, which indicates the script to use the service account credentials file creds.json in order to authenticate to the Google Cloud APIs.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL