pipeline { agent any environment { REGISTRY = "docker-registry.service.consul" IMAGE_NAME = "efstajas/homepage" } stages { stage('Docker Build') { steps { script { dockerImage = docker.build("$IMAGE_NAME") } } } stage('Docker Publish') { steps { script { docker.withRegistry("http://$REGISTRY:4124") { dockerImage.push("latest") } } } } stage('Deploy to Nomad') { steps { script { // Calculate the hash of your Docker image (or your application code) def imageHash = sh(script: "docker images --no-trunc $IMAGE_NAME | grep latest | awk '{print \$3}'", returnStdout: true).trim() // Read the jobspec.json file def jobSpec = readJSON file: 'jobspec.json' // Write the updated jobspec back to the file def updatedJobSpec = sh(script: "jq '.meta[\"image_hash\"] = \"$imageHash\"' jobspec.json", returnStdout: true).trim() sh 'curl -X POST -H "Content-Type: application/json" -d "$updatedJobSpec" http://nomad.service.consul:4646/v1/jobs' } } } } }