A CLI tool for running adhoc pipelines on Jenkins.
Currently not very extensible beyond the current use case but just needs some TLC :)
To download the package:
$ go get -u github.com/eimlav/adhocio
The following will install a compiled binary:
$ go install -i github.com/eimlav/adhocio
You will need to export credentials to access your Jenkins instance:
$ export JENKINS_USERNAME=<your-username>
$ export JENKINS_API_TOKEN=<your-api-token>
To get an API token, go to the Jenkins dashboard. At the top right corner click the arrow drop-down beside your username then select the Configure option. This will direct you to a page where you can generate an token in the section titled API Token. Ensure you save this token somewhere as you will not be able to reveal it after you have created it.
config Display config
enable Enable all jobs in a pipeline
help Help about any command
run Run a pipeline
version Print current version of adhocio
To enable an experimental adhoc pipeline:
$ adhocio enable motd -x
To run an adhoc pipeline with a specific SHA and GitHub user specified:
$ adhocio run exec --ref cca6249c6a47494159dec8278032b4932ca1e836 --user eimlav
By default, configuration will be retrieved from $HOME/.adhicio.yaml. However you can specify a custom config file with the -c flag.
The file should be configured as follows:
---
jenkins_domain: 'my-jenkins-master.awesomecompany.com'
adhoc_prefix: 'adhoc_awesomecompany'
experimental_prefix: 'experimental_awesomecompany'
jobs:
- 'init-manual_adhoc'
- 'prep-smoke_adhoc'
- 'smoke_adhoc'
These various configuration parameters are used to build the target URL used for making requests to the Jenkins server using the following scheme:
https://<jenkins_domain>/job/<prefix>-<repo_name>_<job>/
The first job you specify in your job list is the job used to trigger an adhoc build. As such, ensure that you have the correct job here.
- CLI interface
- Run against normal adhoc and experimental
- Supply GitHub repo, username and SHA
- Use default values when username or SHA not specified
- Enable all jobs in selected pipeline
- Estimate total run time from historical data
- [~] Configuration file for default values such as GitHub username, Jenkins domain, adhoc paths etc
- Notifications on job completion (?)
X = Done
~ = In progress