Backing storage for Concourse CI pool resource
.
├── latest # resource pool
├── claimed # directory containing claimed locks
│ └── .gitkeep
└── unclaimed # directory containing unclaimed locks
├── .gitkeep
└── web-integration # lock file (empty)
resource_name=my-new-resource
mkdir -p $resource_name/{claimed,unclaimed}
touch $resource_name/{claimed,unclaimed}/.gitkeeplock_name=my-named-lock
touch $resource_name/unclaimed/$lock_nameDefine resource in pipeline
resources:
- name: ((concourse-resource-name))
type: pool
source:
uri: git@github.com:nbycomp/locks.git
branch: master
pool: ((resource-pool))
private_key: ((private_key))Use acquire/claim to obtain a resource:
jobs:
- name: my-job
plan:
- put: ((concourse-resource-name))
params: {claim: ((lock-name))} # or acquire: true to obtain a random lockUse ensure to release the resource even if the task failed/crashed:
jobs:
- name: integration-tests
plan:
- task: integration
file: path/to/integration.yml
ensure:
put: latest
params: {release: latest}If it is neccesary to manually release a lock, this can be done by moving the file from claimed to unclaimed, e.g.:
git mv latest/claimed/web-integration latest/unclaimed
git commit -m "Manually release lock"
git push