2017-06-30 33 views
0

我们正在尝试使用中继池来获取锁定。它锁定得很好,但是当我们试图释放锁定时,我们得到这个错误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: [email protected]:<repo> 
    branch: master 
    pool: maleficent 
    private_key: {{key}} 

此获取锁:

- put: 1.12-env params: {acquire: true}

和这是我们认为应该发布它的工作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: 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} 

有一点我们注意到的是,当我们做对资源的获取,这似乎是Cloning into '/tmp/build/get'…这是从哪儿解锁步骤是要找的文件不同的目录。我们做错了什么?

回答

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手段“做一个名为1.12-env资源的put”,而release: 1.12-env意味着

这是在下面的例子中希望更清晰“的文件这是的get: 1.12-env输出释放环境”

- 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} 
0

我认为问题在于release: maleficent-env部分。

release需要您提供锁文件在容器上的位置。

在你的情况下,尝试释放块更新为:

ensure: put: 1.12-env params: {release: 1.12-env}

让我知道是否可行。如果它不起作用,您可以尝试fly hijack放置容器,并查看该锁位于哪条路径中。然后,您将提供该路径作为release值。