Below Shell script helps to automatically create a new Jenkins Job from template config XML file.
test.properties
Createjob.sh
#!/bin/bash set +x # To create a job function create_job { mkdir $1 cp template.xml $1 mv ./$1/template.xml ./$1/config.xml echo Job $1 is created. } #Modify TEMPLATE_SERVER, TEMPLATE_WORKSPACE keywords from template.xml are replaced from
test.properties function modify_job { . ./test.properties echo TEMPLATE_SERVER is replaced with $servername echo TEMPLATE_WORKSPACE is replaced with $workspace sed -i -- "s/TEMPLATE_SERVER/$servername/g" ./$1/* sed -i -- "s/TEMPLATE_WORKSPACE/$workspace/g" ./$1/* } # Need to reload disk for new job to be visible in the Jenkins.
function reload_disk { $JAVA_HOME/bin/java -jar jenkins-cli.jar -s http://testjenkins.com/ reload-configuration --username testuser --password-file myPwd.txt } usage(){ echo "Usage: $0 filename" exit 1 } [[ $# -eq 0 ]] && usage # Just to check whether the job exists or not. if [ -d "$1" ]; then echo "job $1 already exists" exit fi create_job $1 modify_job $1 reload_disk
We can store all properties into a file. Below are the example properties stored in the properties file.
servername=testserver20 workspace=testworkspace20