diff --git a/jenkins/jenkins_create_run_job.sh b/jenkins/jenkins_create_run_job.sh index cc4bdf19..26fe7475 100755 --- a/jenkins/jenkins_create_run_job.sh +++ b/jenkins/jenkins_create_run_job.sh @@ -25,6 +25,9 @@ srcdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" usage_description=" Creates a Jenkins job from a given xml file and triggers it to run immediately +If the job already exists, skips creation +If the job already exists and the enviroment variable JENKINS_OVERWRITE_JOB is set to any value it updates the job definition + Uses the adjacent script jenkins_cli.sh Jenkins authentication token and environment variables must be set - see jenkins_cli.sh for more details @@ -43,9 +46,18 @@ job_xml="$2" shift || : shift || : +if ! [ -f "$job_xml" ]; then + die "Job config file not found: $job_xml" +fi + timestamp "Checking if job '$job_name' already exists'" if jenkins_cli.sh list-jobs | grep -q "^$job_name$"; then - timestamp "Job '$job_name' already exists, skipping creation" + if [ -n "${JENKINS_OVERWRITE_JOB:-}" ]; then + timestamp "Job '$job_name' already exists, updating to ensure latest version" + "$srcdir/jenkins_cli.sh" update-job "$job_name" < "$job_xml" + else + timestamp "Job '$job_name' already exists, skipping creation" + fi else timestamp "Job '$job_name' does not exist yet, creating..." "$srcdir/jenkins_cli.sh" create-job "$job_name" < "$job_xml"