我们正在尝试使用广场池来锁定。它锁定很好但是当我们尝试释放锁时,我们收到此错误error releasing lock: open /tmp/build/put/maleficent-env/name: no such file or directory
。
这就是我们的池仓库中的目录树看起来像
.
├── README.md
└── maleficent
├── claimed
│ └── maleficent-env
└── unclaimed
这是我们的资源:
- name: 1.12-env
type: pool
source:
uri: git@github.com:<repo>
branch: master
pool: maleficent
private_key: {{key}}
这获得了锁定:
- put: 1.12-env
params: {acquire: true}
这是我们认为应该释放它的工作:
- name: run-1.12-errand
plan:
- aggregate:
- get: 1.12-env
passed: [the-job-that-got-the-lock]
- get: ci
on_failure:
put: 1.12-env
params: {release: maleficent-env}
- task: run-errand
file: ci/run-errand/task.yml
params:
BOSH_DIRECTOR_URL: {{url}}
BOSH_CLIENT_SECRET: {{secret}}
ENV_NAME: maleficent
ensure:
put: 1.12-env
params: {release: maleficent-env}
我们注意到的一件事是当我们为资源做了get时,它似乎是Cloning into '/tmp/build/get'…
,它与解锁步骤寻找文件的目录不同。我们做错了什么?
答案 0 :(得分:1)
以下job.yml将成功释放您的环境
- name: run-1.12-errand
plan:
- aggregate:
- get: 1.12-env
passed: [the-job-that-got-the-lock]
- get: ci
on_failure:
put: 1.12-env
params: {release: 1.12-env}
- task: run-errand
file: ci/run-errand/task.yml
params:
BOSH_DIRECTOR_URL: {{url}}
BOSH_CLIENT_SECRET: {{secret}}
ENV_NAME: maleficent
ensure:
put: 1.12-env
params: {release: 1.12-env}
相关行
put: 1.12-env
params: {release: 1.12-env}
实际上是指两个不同的东西,尽管都使用1.12-env
。 put: 1.12-env
表示&#34;执行名为put
&#34;的资源的1.12-env
,而release: 1.12-env
表示&#34;释放< em> file ,它是get: 1.12-env
&#34;
在以下示例中希望更清楚
- name: run-1.12-errand
plan:
- aggregate:
- get: my-environment
resource: 1.12-env
passed: [the-job-that-got-the-lock]
- get: ci
on_failure:
put: 1.12-env
params: {release: my-environment}
- task: run-errand
file: ci/run-errand/task.yml
params:
BOSH_DIRECTOR_URL: {{url}}
BOSH_CLIENT_SECRET: {{secret}}
ENV_NAME: maleficent
ensure:
put: 1.12-env
params: {release: my-environment}
答案 1 :(得分:0)
我认为问题出在release: maleficent-env
部分。
release
需要您提供锁文件在容器上的路径。
在您的情况下,请尝试将版本块更新为:
ensure:
put: 1.12-env
params: {release: 1.12-env}
如果有效,请告诉我。如果它不起作用,您可以尝试fly hijack
到put容器并查看锁定的路径。然后,您将该路径提供为release
值。