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