add a README file
This commit is contained in:
		
							
								
								
									
										125
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,125 @@
 | 
				
			|||||||
 | 
					# Nomad Job Concourse Resource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A concurse resource for jobs on [Hashicorp Nomad](https://www.nomadproject.io/).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Source Configuration
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					resource_types:
 | 
				
			||||||
 | 
					  - name: nomad
 | 
				
			||||||
 | 
					    type: registry-image
 | 
				
			||||||
 | 
					    source:
 | 
				
			||||||
 | 
					      repository: cioplenu/concourse-nomad-resource
 | 
				
			||||||
 | 
					      tag: latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resources:
 | 
				
			||||||
 | 
					  - name: test-job
 | 
				
			||||||
 | 
					    type: nomad
 | 
				
			||||||
 | 
					    source:
 | 
				
			||||||
 | 
					      url: http://nomad-cluster.local:4646
 | 
				
			||||||
 | 
					      name: test
 | 
				
			||||||
 | 
					      token: XXXX
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* `url`: (required) URL of the nomad api on a node of your cluster
 | 
				
			||||||
 | 
					* `name`: (required) name of the job
 | 
				
			||||||
 | 
					* `token`: Nomad ACL token
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Behavior
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### `check`: Check for new [versions](https://www.nomadproject.io/api-docs/jobs#list-job-versions) of the job
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Checks if there are new versions of the job. It uses the `nomad job history` command of the [nomad
 | 
				
			||||||
 | 
					CLI](https://www.nomadproject.io/docs/commands/job/history) and not all versions since the first
 | 
				
			||||||
 | 
					deployment might be available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### `in`: noop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### `out`: Run a new version of the job
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Deploys a new version of the job to the cluster using `nomad job run` by reading a HCL job file.
 | 
				
			||||||
 | 
					[Golang template variables](https://golang.org/pkg/text/template/) can be used to insert information
 | 
				
			||||||
 | 
					like a version on the fly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Parameters
 | 
				
			||||||
 | 
					* `job_path`: (required) Path of the HCL job file to run
 | 
				
			||||||
 | 
					* `vars`: { [key: string]: string } dictionary of variables to substitute in the job file. Each key
 | 
				
			||||||
 | 
					  should be represented in the job file as `{{.key}}`
 | 
				
			||||||
 | 
					* `var_files`: { [key: string]: string } dictionary of paths to files to read to get variable
 | 
				
			||||||
 | 
					  values. Each key should be represented in the job file as `{{.key}}` and the values should be path
 | 
				
			||||||
 | 
					  to text files which content will be used as the variable value. Whitespace and trailing newlines
 | 
				
			||||||
 | 
					  will be trimmed from the value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					resource_types:
 | 
				
			||||||
 | 
					  - name: nomad
 | 
				
			||||||
 | 
					    type: registry-image
 | 
				
			||||||
 | 
					    source:
 | 
				
			||||||
 | 
					      repository: cioplenu/concourse-nomad-resource
 | 
				
			||||||
 | 
					      tag: latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resources:
 | 
				
			||||||
 | 
					  - name: sample-job
 | 
				
			||||||
 | 
					    type: nomad
 | 
				
			||||||
 | 
					    source:
 | 
				
			||||||
 | 
					      url: http://10.4.0.4:4646
 | 
				
			||||||
 | 
					      name: sample
 | 
				
			||||||
 | 
					      token: ((nomad-cluster-token))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - name: sample-repo
 | 
				
			||||||
 | 
					    type: git
 | 
				
			||||||
 | 
					    source:
 | 
				
			||||||
 | 
					      uri: git@github.com:cioplenu/sample.git
 | 
				
			||||||
 | 
					      branch: main
 | 
				
			||||||
 | 
					      private_key: ((private-repo-key))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  - name: deploy
 | 
				
			||||||
 | 
					    plan:
 | 
				
			||||||
 | 
					      - get: sample-repo
 | 
				
			||||||
 | 
					      - put: sample-job
 | 
				
			||||||
 | 
					        params:
 | 
				
			||||||
 | 
					          job_path: sample-repo/sample.nomad
 | 
				
			||||||
 | 
					          vars:
 | 
				
			||||||
 | 
					            registry_token: ((registry-token))
 | 
				
			||||||
 | 
					          var_files:
 | 
				
			||||||
 | 
					            version: sample-repo/ci/version
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with a job file like:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```hcl
 | 
				
			||||||
 | 
					job "sample" {
 | 
				
			||||||
 | 
					  region      = "de"
 | 
				
			||||||
 | 
					  datacenters = ["dc1"]
 | 
				
			||||||
 | 
					  type        = "service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  group "sample" {
 | 
				
			||||||
 | 
					    task "sample" {
 | 
				
			||||||
 | 
					      driver = "docker"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      config {
 | 
				
			||||||
 | 
					        image = "cioplenu/sample:{{.version}}"
 | 
				
			||||||
 | 
					        auth  = {
 | 
				
			||||||
 | 
					          username = "some-username"
 | 
				
			||||||
 | 
					          password = "{{.registry_token}}"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        force_pull = true
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      resources {
 | 
				
			||||||
 | 
					        cpu    = 50
 | 
				
			||||||
 | 
					        memory = 50
 | 
				
			||||||
 | 
					        network {
 | 
				
			||||||
 | 
					          mbits = 1
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					and a version file like:
 | 
				
			||||||
 | 
					```text
 | 
				
			||||||
 | 
					9.1.4
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
		Reference in New Issue
	
	Block a user