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) { // First, it should convert the local jobspec.hcl file to JSON. To do so, it must make a POST request to http://nomad.service.consul/v1/jobs/parse with content-type: application/json, // content should be { "JobHCL": }, where is the content of the ./jobspec.hcl file // The response will be a JSON object with a key "Job" containing the parsed job specification. The value of this key is the JSON representation of the job specification. // The next step is to make a POST request to http://nomad.service.consul/v1/jobs with content-type: application/json and content should { "Job": } steps { script { sh 'curl -X POST -H "Content-Type: application/json" -d "{ \"JobHCL\": \"$(cat jobspec.hcl)\" }" http://nomad.service.consul/v1/jobs/parse > parsed_job.json' sh 'curl -X POST -H "Content-Type: application/json" -d "{ \"Job\": $(cat parsed_job.json) }" http://nomad.service.consul/v1/jobs' } } } } }